自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 【UE源码分析】PSOcache预编译的源码流程分析

因为每个"FMeshPassProcessor"必须通过"BuildMeshDrawCommands()“来调用通道着色器的"GetShaderBindings()”,所以通过"ShaderElementData"参数到"BuildMeshDrawCommands()"来将任意数据从"FMeshPassProcessor"传递到"GetShaderBindings()"调用。网格体渲染从"FPrimitiveSceneProxy"开始,这是游戏线程的"UPrimitiveComponent"渲染线程表示。

2024-04-10 19:17:18 698 1

原创 【UnityShader入门精要】凹凸贴图、渐变纹理、遮罩纹理

值得注意的是切线的第四个分量是切线空间的方向性。切线的w分量可以确保TBN矩阵的正确性。后者存储的可以是在模型空间下的法线,也可以是每个顶点在切线空间下的法线扰动。即使是在切线空间中存储了法线,但是在计算光照的时候还是有两种方法,分别是在切线空间下计算或在世界空间下计算,前者效率更高而后者通用性更强。由于模型空间的法线是绝对的,而切线空间的法线是相对的,所以很多时候用后者可以做到很多前者做不到的东西。可以看到代码v2f的结构体中的TtoW用了float4,多出来的三个w分量可以用来存储世界空间的顶点位置。

2024-04-08 21:34:18 1020

原创 【UnityShader入门精要】从简单的shader编写到基础光照

由于这里是要把法线从局部坐标变为世界坐标,所以unity_WorldToObject是局部变世界坐标的逆矩阵,然后可以看到代码中mul函数是向量在左,矩阵在右,放在左边是为了实现同矩阵转置后右乘向量的一样效果。这里在vs输出颜色时,通过法线进行了颜色的设置,因此不同的法线方向的shading point的颜色也不一样。前面的镜面反射已经是加上了漫反射,但是在高光反射的时候计算了反射方向,通过Blinn光照模型使用视角方向和光照方向相加并且归一化得到,这样的计算量没有之前的计算量那么费。

2024-04-07 08:59:53 631

原创 【UE源码分析】PSOcache流程一图流

温(mian)馨(ze)提(sheng)示(ming):此文内容质量极差,仅作为个人学习过程记录 作者刚学习UE一个月,本文只是作为前三篇的总结 这是我第一次画流程图,该流程图极度不规范,只是为了帮助个人梳理代码使用 对PSO的源码梳理将暂时告一段落,切换脑子的线程去学点别的PSO全(?)流程

2024-04-05 12:26:47 123

原创 【UE源码分析】PSO cache函数调用过程分析

首先通过ProgramBinRefPtr去获得FGLProgramBinaryFileCacheEntry FoundProgram,判断FoundProgram的state不是ProgramStored或者ProgramAvailable说明这个地方为非预期,但如果是ProgramAvailable说明可以直接赋值返回,否则说明这个时候还没有准备好。接下来把Program绑定到管线上,重新创建LinkedProgram,如果有曲面细分的话就加上。如果程序存在的话,说明二进制数据已经被使用了,清空它。

2024-04-05 11:46:10 987 1

原创 【UE源码分析】PSO相关类代码分析

首先创建一个临时文件把文件的内容给move过来,然后创建一个reader来读取,reader创建好以后,判断标志以指示缓存文件是否应被使用,如果二进制文件大小是0,不会报错只会报警告,构建一个缓存条目列表FGLProgramBinaryFileCacheEntry,每个条目代表文件中的一个程序。所以可以看到在我们OpenGL3的条件下,if判断的第一个参数是一个为false的bool值,这段代码不会执行,但是还是分析下这个功能,这个函数确保所有的Uniform Block都正确地绑定到了预期的位置。

2024-04-05 11:29:09 891 1

原创 【UE】Android PSO Caches的使用流程

通过上面步骤我们已经完成PSO的流程,但是我们不知道PSO的数据是否是如我们预期的一样,现在我们在C:\Unreal4.27\UnrealEngineEX_4.27.2-release\Engine\Source\Runtime\OpenGLDrv\Private\OpenGLShaders.cpp文件中添加Log输出。进行此操作的目的是尝试加载游戏中使用的每个内容,以便材质使用的着。的文件,在ue引擎的win64文件中,搜索找到后将其放置到C盘根目录上的PSOCaching文件夹中。

2024-04-05 11:23:52 988 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除