【Unity / Shader Graph】常见节点原理 | 01Graphics pipeline
图文内容来自Youtube@Ben Cloward
https://www.youtube.com/watch?v=ZEXVQgbWxQY
在Unreal中理解Vertex Processor和Pixel Processor
- Graphic Shader 作用于Programmable Vertex Processor 和 Programmable Pixel Processor两个模块
- 在Vertex Processor上编辑比在Pixel Processor上编辑的代价更小
- 在虚幻引擎中,结点VectexInterpolator的作用类似于图中的Rasterization & Interpolation。可以理解为如果我们手动调用这个结点,在Vertex Processor中对于per vertex的计算结果会被先解释为对应的per pixel的结果,再进入Pixel Processor的阶段。然而此时我们已经有了pixel级的计算结果了。因此我们不需要在Pixel Processor中进行计算。
第一行(Base pass shader)表示的是在Pixel Processor上的执行次数。第三行(Base pass vertex)表示的是在Vertex Processor上的执行数。
可以看到,我们的计算操作消耗152-148 = 4次执行次数。
当我们不使用VectexInterpolator去提前完成这一解释过程时,在VertexProcessor上的执行数是111。而使用了VectexInterpolator节点后,在VertexProcessor上的执行数是115。
这相当于把原先需要在Pixel processor上的执行工作丢给了Vertex processor。
在Unity中
而到了Unity中,一切变得更容易理解。Vertex(红色部分)接收到的运算(连到上面的线)会在VertexProcessor被完成;而Fragment(蓝色部分)接收到的运算会在Pixel processor上被执行。
但是在Unity中,并没有上述的类似虚幻引擎中VectexInterpolator的优化方法。