在Unity中,标准表面着色器附带冲浪功能
void surf (Input IN, inout SurfaceOutputStandard o)
{
这个函数何时被调用,它应该用于做什么? 哪里可以找到该函数的语言参考?
答案 0 :(得分:2)
我认为您不太了解 Surface Shaders 的概念。
正如here所写:
Unity中的表面着色器是一种代码生成方法,与使用低级顶点/像素着色器程序相比,可以更轻松地编写点亮着色器。请注意,Surface Shaders中没有自定义语言,魔法或忍者;它只生成所有必须手工编写的重复代码。您仍然在HLSL中编写着色器代码。
工作原理
您可以定义一个“表面函数”,它可以获取您需要的任何UV或数据 输入,并填充输出结构SurfaceOutput。 SurfaceOutput 基本上描述了表面的属性(它的反照率颜色, 正常,发射,镜面反射等)。您在HLSL中编写此代码。
Surface Shader编译器然后计算出需要什么输入,什么 输出被填充等等,并生成实际的顶点和像素 着色器,以及渲染传递以处理前进和延迟 渲染。