- 博客(34)
- 资源 (3)
- 收藏
- 关注
转载 Console 多开
1、在项目自动生成的stdafx.h文件中添加下面头文件#include <io.h>#include <fcntl.h>#include <stdio.h> 2、把下面的函数加到你初始化的地方,然后你就可以使用printf函数了void InitConsoleWindow(){ int nCrt = 0; FILE* fp; ...
2018-10-26 17:29:46 360
原创 unity收集性能数据接口
https://docs.unity3d.com/ScriptReference/Profiling.Profiler.htmlIn standalone games, the Profiler saves all profiling information to a file when you specify a Profiler.logFile and set both Profiler....
2018-10-26 11:48:28 706
转载 Direct3D轮回:游戏特效之全屏泛光(Bloom)
https://www.cnblogs.com/kenkao/archive/2011/08/25/2153752.htmlBloom,又称“全屏泛光”,是大名鼎鼎的虚幻3游戏引擎中最通用的后期特效技术~Bloom特效的实现主要依赖于PostProcess框架,即实时绘制当前场景到一后台渲染表面,而后针对其对应贴图进行像素级渲染~大家还记得我们之前实现的水面效果中的反射和折射贴图吗?此...
2018-10-25 17:07:26 4147
转载 雾化
https://www.cnblogs.com/kenkao/archive/2011/08/14/2137726.html风动和雾化都是相对而言比较简单的游戏特效,实现起来甚至比我们前一节提到的晴天光晕还要简单~大家还记得上上节中我们为陆地种植的那片植被吗?现在我们在场景中加入风的效果,让草儿动起来 ^ ^首先,我们来实现一个风动效果的Shader:Wind.fx原理非常简单...
2018-10-25 17:06:37 293
原创 cocos骨骼动画着色器 看下骨骼动画实现原理
const char* cc3D_PositionNormalTex_vert = R"(#ifdef USE_NORMAL_MAPPING#if (MAX_DIRECTIONAL_LIGHT_NUM > 0)uniform vec3 u_DirLightSourceDirection[MAX_DIRECTIONAL_LIGHT_NUM];#endif#endif#if (MA...
2018-10-25 11:33:34 349
转载 DrawIndexedPrimitive
HRESULT DrawIndexedPrimitive( [in] D3DPRIMITIVETYPE Type, [in] INT BaseVertexIndex, [in] UINT MinIndex, [in] UINT NumVertices, [in] UINT StartIndex, [in] UINT PrimitiveCount);M...
2018-10-24 17:39:12 202
转载 【D3D学习记录】DrawIndexedPrimitive函数的详细解释
为了便于说明,首先假设存在下列的顶点缓冲和索引缓冲 vb= { {-1.0, 1.0, 0.0}, index 0 { 1.0, 1.0, 0.0}, index 1 { 1.0,-1.0, 0.0}, index 2 {-1.0,-1.0, 0.0}, index 3 {-2.0, 2.0, 0.0}, index 4 { 2.0,...
2018-10-24 17:36:48 446
转载 DirectX11
https://www.cnblogs.com/X-Jun/p/9297810.htmlDirectX11 With Windows SDK--09 纹理映射与采样器状态阅读目录前言 纹理坐标系 纹理读取 DDS位图和WIC位图 DDSTextureLoader和WICTextureLoader库 CreateDDSTextureFromFile函数--从文件读取DD...
2018-10-24 14:44:46 699
转载 DirectX11 高级着色器语言HLSL入门
高级着色器语言HLSL入门1. 数据类型简介与CPU不同,在显卡芯片中,最小的数据吞吐单元是一个由32位浮点数组成的四元组。这一点很有道理不是,想想你在渲染过程中所有涉及到的数据,最复杂的不外乎四维坐标(x,y,z,w)或颜色(r,g,b,a),这样GPU可以一次性处理一个四元组。而整数什么的在显卡中被放到四元组的一个分量里使用,而很多显卡中,整数、布尔值都不被直接支持,而是转为浮点数使用。至...
2018-10-24 09:44:09 796
转载 HLSL Introduction
By Chang Li High Level Shading Language (HLSL), a programming language for Graphic Processing Unit (GPU) in DirectX 9/10/11, supports the shader construction with C-like syntax, types, expressions...
2018-10-24 09:42:44 450
转载 Directx11基础教程三之VertexShader,PixelShader,buffer
一,看本节教程前应该掌握: (1)D3D11基础教程二之D3D11初始化 (2)了解3D渲染流水线的知识,如世界变换,相机变换,透视投影变换,视口变换,光栅化,线性插值,gouraud着色等,最好具备一定的图形学基础,我推荐一本书<3D游戏编程大师技巧>,这本书完整的讲解了3D渲染流水线的方方面面。二,本节教程的程序结构:三,VertexShader(顶点...
2018-10-22 20:36:49 476
转载 Unity3D - Shader - 普通纹理
https://blog.csdn.net/biezhihua/article/details/78620157纹理基础概念纹理的目的:用于使用一张图片来控制模型的外观。纹理映射(texture mapping):可以把一张图黏在模型表面,逐纹素的控制模型的颜色。纹理映射坐标(UV坐标):纹理映射坐标定义了该顶点在纹理中对应的2D坐标,这些坐标使用二维变量(u,v)来表示,其中u代表...
2018-10-22 19:54:04 395
转载 光照贴图教程
http://www.alsprogrammingresource.com/lightmapping_tutorial.html光照贴图教程 作者:Alan Baylis 19/12/2001 在大多数游戏中,光照贴图仍然是首选的照明方法,也就是因为无论场景中有多少灯光,它都是快速的,如果你曾经拍过一个没有破裂或者没有破坏的灯泡而是周围的灯光然后,你已经看到了行动(或缺乏)...
2018-10-19 10:39:21 3011 1
转载 Lightmaps
Tutorial - Dynamic Lightmaps in OpenGLNovember 16, 2003This article explains how to implement dynamic lightmaps in OpenGL with multitexturing. Features sample C code and is accompanied by a demo w...
2018-10-19 10:38:33 354
转载 [引擎]之四:unity中查看简单mesh顶点顺序的小工具——修改
https://blog.csdn.net/yanchezuo/article/details/789788841 添加查看顶点位置和uv信息2 兼容顶点数量和uv数量不同的情况3 添加是否显示信息的选项4 完整代码5 最后这里制作的小工具,功能有点单薄,只能查看顶点的顺序。 在写CubeMesh的时候,需要查看顶点的位置信息和uv信息。 因此,添加这两个功能:(1) 添加查...
2018-10-18 18:04:07 669
转载 图形渲染及优化—Unity合批技术实践
在前面的文章中我介绍了Batch对于渲染效率的影响,这次来说说在Unity开发过程中常用的几种合批技术。 Resource Merging我们可以在美术资源生产的过程中做很多渲染批次方面的优化。通常我们可以将一些使用相同材质的物体模型合并成一个模型,在游戏渲染的时候一次提交给渲染API进行绘制,降低了Draw call的数量。但是这样带来了一个问题,所有合并的模型必须一次全部绘制。哪怕...
2018-10-18 18:00:11 1896
转载 批处理渲染glDrawElements
void TextureAtlas::drawNumberOfQuads(ssize_t numberOfQuads){ CCASSERT(numberOfQuads>=0, "numberOfQuads must be >= 0"); this->drawNumberOfQuads(numberOfQuads, 0);}void TextureAtlas...
2018-10-18 17:57:50 745
原创 gprof性能工具
https://pypi.org/project/gprof2dot/http://sam.zoy.org/writings/programming/gprof-helper.chttp://sam.zoy.org/writings/programming/gprof.htmlhttp://www.graphviz.org/download/https://www.cnblogs.com...
2018-10-17 14:17:37 335
转载 深入探索并发编程系列(五)-将内存乱序逮个正着
当用C/C++编写无锁代码时,一定要小心谨慎,以保证正确的内存顺序。不然的话,会发生一些诡异的事情。Intel在x86/x64体系结构手册的Volume 3, §8.2.3 中列出了一些可能会发生的诡异的事情。这里介绍其中一个最简单的例子。假设在内存中有两个整型变量x和y,都初始化为0。两个处理器并行执行下面的机器码:不要被上面的汇编代码给吓坏了。这个例子的确是阐述CPU执行顺序的...
2018-10-15 18:09:35 713
转载 谈乱序执行和内存屏障
10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排查和理解.今天准备来聊聊乱序执行技术和内存屏障.为了能让大多数人理解,这里省略了很多不影响理解的旁枝末节,但由于我个人水平...
2018-10-15 18:07:23 320
转载 memory_order 强内存模型保证内存顺序就好
在C++11标准原子库中,大多数函数接收一个memory_order参数: enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_order_acq_rel,...
2018-10-15 15:09:49 4187
转载 as well as emitting any necessary fencing or special instructions. In x86 asm, ordinary loads and st
6down votefavorite1According to this https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html, a released store is implemented as MOV (into memory) on x86 (including x86-64).According to his http:...
2018-10-15 15:01:21 176
转载 memery order on x86/64 already implies acquire semantics and every store implies release semantics
Acquire and Release SemanticsGenerally speaking, in lock-free programming, there are two ways in which threads can manipulate shared memory: They can compete with each other for a resource, or they ...
2018-10-15 14:58:35 299
转载 memory order In x86 asm, ordinary loads and stores already have acquire / release semantics
Acquire and Release SemanticsGenerally speaking, in lock-free programming, there are two ways in which threads can manipulate shared memory: They can compete with each other for a resource, or they ...
2018-10-15 14:55:39 601
转载 memory-ordering-at-compile-time
浅谈Memory Reordering Memory ordering在我们编写的 C/C++代码和它被在 CPU 上运行,按照一些规则,代码的内存交互会被乱序.内存乱序同时由编译器(编译时候)和处理器(运行时)造成,都为了使代码运行的更快.被编译开发者和处理器制造商遵循的中心内存排序准则是:不能改变单线程程序的行为.因为这条规则,在写单线程代码时内存乱序被普...
2018-10-15 14:49:17 217
原创 atomicops.h
https://git.project-hobbit.eu/dj16/ricec/blob/c9d3dceb1c3b1c03a42077e0461e3ce5a2615a51/data/atomicops.h#L248// ©2013-2016 Cameron Desrochers.// Distributed under the simplified BSD license (see th...
2018-10-15 14:43:15 824
转载 Does the semantics of `std::memory_order_acquire` requires processor instructions on x86/x86_64?
https://stackoverflow.com/questions/18576986/does-the-semantics-of-stdmemory-order-acquire-requires-processor-instruction7down votefavorite4It is known that on x86 for the operations load() and ...
2018-10-15 14:40:18 228
转载 C/C++11 mappings to processors
C/C++11 mappings to processorsThis document summarises some known mappings of C/C++11 atomic operations to x86, PowerPC, ARMv7, ARMv8, and Itanium instruction sequences. These are collected for disc...
2018-10-15 14:38:34 232
原创 centos升级g++7.3.0
sudo yum install centos-release-sclsudo yum install devtoolset-7scl enable devtoolset-7 bash
2018-10-13 15:47:30 3776
转载 SetThreadName & GetThreadName
ypedef struct tagTHREADNAME_INFO{ DWORD dwType; // must be 0x1000 LPCSTR szName; // pointer to name (in user addr space) DWORD dwThreadID; // thread ID (-1=caller thread) DWORD dwFlags; // reserve...
2018-10-12 15:34:42 1195
转载 interlockedCompareExchange
class Lock{ volatile int dest = 0; int exchange = 100; int compare = 0; void acquire() { While(true) { if(interlockedCompareExchange(&dest, exchan...
2018-10-11 15:40:21 1393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人