UE5 HLSLTranslator 与 ShaderCompiler

UE 里的材质图不是 GPU 能直接执行的东西。比如你在材质编辑器里连了几个节点:

复制代码
TextureSample
      |
  Multiply ---- VectorParameter(Color)
      |
   BaseColor

GPU 不认识"节点连线"。GPU 最后只能执行 shader 代码,比如 HLSL:

复制代码
float4 Tex = Texture.Sample(Sampler, UV);
float3 BaseColor = Tex.rgb * Color.rgb;

HLSLTranslator 做的事,就是把上面的"节点连线"变成下面的"HLSL 代码"。

它的位置是:

复制代码
材质编辑器节点
        |
        v
HLSLTranslator:把节点翻译成 HLSL
        |
        v
Shader Compiler:把 HLSL 编译成 GPU 字节码
        |
        v
GPU 执行

MaterialExpression 节点:
我表达"我要干什么"

HLSLTranslator:
我把你说的话翻译成 HLSL 代码

ShaderCompiler:
我把 HLSL 编译成 GPU 能执行的机器码 机器码就是对应的编译好的二进制shader数据

Render/RHI:
我在运行时把 shader 绑上去并 draw

GPU:
我真正执行这些 shader 指令

HLSL 源码:人能读的 shader 代码
Shader bytecode:编译好的二进制 shader 数据
RHI shader object:运行时 API 可绑定的 shader 对象
Draw/Dispatch:真正让 GPU 开始执行

Draw -> 一定是 graphics pipeline,提交到 graphics queue
Dispatch -> 一定是 compute pipeline,但不一定是 async compute queue

但 Dispatch 有两种可能:

复制代码
普通 Compute:排在 graphics queue 里执行
Async Compute:排到 async compute queue 里执行
相关推荐
1204157137 肖哥1 天前
UE5.7 场景打光管线流程_【雪山】
ue5
weixin_404679311 天前
虚幻5 替代小白人角色的完整逻辑
ue5
1204157137 肖哥4 天前
UE5.7 灯光详解
ue5
狂云歌5 天前
AI写UE的3Dgame
人工智能·3d·ue5·游戏程序
日月云棠9 天前
UE5源码分析之Editor——Blutility模块全面分析
ue5
日月云棠9 天前
UE5源码分析之Editor——BehaviorTreeEditor模块全面分析
ue5
日月云棠9 天前
UE5源码分析之Editor——AssetTagsEditor模块全面分析
ue5
远离UE410 天前
UE5 显存 虚拟内存 深入学习笔记
笔记·学习·ue5
日月云棠10 天前
UE5源码分析之Editor——AnimationSettings模块全面分析
ue5