PSO功能
文章平均质量分 81
PSO功能源码
YouYider
想当图形学和游戏引擎糕手!
展开
-
【UE源码分析】PSOcache预编译的源码流程分析
因为每个"FMeshPassProcessor"必须通过"BuildMeshDrawCommands()“来调用通道着色器的"GetShaderBindings()”,所以通过"ShaderElementData"参数到"BuildMeshDrawCommands()"来将任意数据从"FMeshPassProcessor"传递到"GetShaderBindings()"调用。网格体渲染从"FPrimitiveSceneProxy"开始,这是游戏线程的"UPrimitiveComponent"渲染线程表示。原创 2024-04-10 19:17:18 · 846 阅读 · 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 · 1459 阅读 · 1 评论 -
【UE源码分析】PSO相关类代码分析
首先创建一个临时文件把文件的内容给move过来,然后创建一个reader来读取,reader创建好以后,判断标志以指示缓存文件是否应被使用,如果二进制文件大小是0,不会报错只会报警告,构建一个缓存条目列表FGLProgramBinaryFileCacheEntry,每个条目代表文件中的一个程序。所以可以看到在我们OpenGL3的条件下,if判断的第一个参数是一个为false的bool值,这段代码不会执行,但是还是分析下这个功能,这个函数确保所有的Uniform Block都正确地绑定到了预期的位置。原创 2024-04-05 11:29:09 · 1016 阅读 · 1 评论 -
【UE源码分析】PSO cache函数调用过程分析
首先通过ProgramBinRefPtr去获得FGLProgramBinaryFileCacheEntry FoundProgram,判断FoundProgram的state不是ProgramStored或者ProgramAvailable说明这个地方为非预期,但如果是ProgramAvailable说明可以直接赋值返回,否则说明这个时候还没有准备好。接下来把Program绑定到管线上,重新创建LinkedProgram,如果有曲面细分的话就加上。如果程序存在的话,说明二进制数据已经被使用了,清空它。原创 2024-04-05 11:46:10 · 1117 阅读 · 1 评论 -
【UE源码分析】PSOcache流程一图流
温(mian)馨(ze)提(sheng)示(ming):此文内容质量极差,仅作为个人学习过程记录 作者刚学习UE一个月,本文只是作为前三篇的总结 这是我第一次画流程图,该流程图极度不规范,只是为了帮助个人梳理代码使用 对PSO的源码梳理将暂时告一段落,切换脑子的线程去学点别的PSO全(?)流程原创 2024-04-05 12:26:47 · 211 阅读 · 0 评论