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 里执行
相关推荐
fanfan_hongyun1 天前
UE5.1 应用InWebSocketClient-main 接收websocket信息
ue5
远离UE42 天前
Chaos、WFC 与 FJA 原理与区别笔记
ue5
平行云2 天前
3D应用推流太贵太慢?ImmerShare Lite:利用本地算力实现极简一键分享
unity·ue5·实时云渲染·云桌面·像素流·云游戏·串流
fanfan_hongyun3 天前
UE5.1 VaRest插件 读取json http请求
ue5
SpiderCodeJ3 天前
【UE5】- UE MCP :在UE5.8编辑器中内置链接Codex
ue5·codex·智能体·mcp
weixin_404679317 天前
ue5 widget 之间的蓝图通讯
ue5
zr想努力7 天前
GAS学习(UE5自用)
学习·ue5
平行云7 天前
国产GPU云渲染适配实战:驱动兼容、编码调优与多路并发
unity·ue5·webrtc·webgl·实时云渲染·云桌面·像素流送
fanfan_hongyun7 天前
UE5.1 学习记录-玩家控制器
学习·ue5
远离UE49 天前
UE5 Niagara LightWeight Emitter
ue5