|
原文指路:
在Unity中,Shader被分为三大类:
- 作为图形管线一部分的着色器:最普遍的类型,其通过执行计算来得到屏幕像素的颜色(比如Surface Shaders)
- 计算着色器(compute shaders):在图形管线之外在GPU上执行计算
- 光线追踪着色器(Ray tracing shaders):主要用来生成光照
Shader可视化编辑:Shader Graph
Unity shader是用Unity专属的ShaderLab语言编写的,你也可以用Shader Graph可视化地创建shader。你可以在Shader Graph的框架下连接节点并实时查看材质的变化,而不需要在编辑器中编写代码,保存,编译以及测试。
Shader Graph资产为不同的材质提供了预配置的选项,其中的节点可以获取到材质所应用到的物体的数据。think of their mathematical functions and procedural patterns .
除此之外,Shader Graph系统是可扩展的,开发者可以创建自定义的节点。你可以用Shader Graph来为URP和HDRP创建Shader(2021LTS及更新的版本可以为Built-in创建)
Master Stack是Shader Graph中的终点,其决定了Shader最终的surface appearance。它能让使用者非常清晰地看到顶点阶段(计算多边形顶点的属性)和片元阶段(计算顶点间的像素)的操作的关系
如果你熟悉HLSL代码,你还可以在Shader Graph中创建Custom Function
SRP中的Compute Shaders
Compute Shader在普通渲染管线之外运行在GPU上,其可以被用于高并行度的GPU算法(massively parallel GPU algorithms),从而加速渲染的某个部分
想要高效地使用它们,需要对GPU architectures and parallel algorithms, DirectCompute, OpenGL Compute, CUDA, or OpenCL有很深的理解。这些shader有更好的兼容性和多样性,并且可以在所有的Unity渲染管线中执行
Built-in管线的Surface Shaders
就像名字所表示的那样,Surface Shader定义了物理性质的材质,其在材质中计算每个像素的最终颜色,然后计算光照来表现表面上的每个像素的光影情况。大多数Surface Shader是作为Standard Surface Shader的扩展,其能够使得创造的过程更加符合直觉,以及给了艺术家们更多的自由来定义表面的观感
更多资料
The definitive guide to creating advanced visual effects in Unity
Shader Graph Master Stack
Experimenting with Shader Graph: Doing less with more
Normal Map compositing using the surface gradient framework in Shader Graph
个人叨逼叨
其实感觉这一节说的东西挺少的,甚至没有提到最基础的URP Shader,估计是Unity还是想推广Shader Graph
但是我看大部分人都还是觉得Shader Graph有不少局限性的,要想实现更多的功能,最好还是要学习代码的写法。这里推荐一下经典的《Unity Shader入门精要》,虽然如今CG语言已经逐渐减少支持,但还是有许多值得学习的东西的。如果想要转URP/HLSL,网上也有很多教程。还有B站上庄懂老师的教程,可以积累一些实战的经验。更高级一点就是上Shadertoy了,反正水挺深的(逃 |
|