目录
0基础其实最好
其实不可能是0基础,但是要是你是0基础,就好像张三丰说的,忘了你爸吧
假如你现在开始看现在的Unity URP或Standard Shader
1-如果熟读乐乐姐的《入门精要》,那是2015年出版的,2013年开始写,写的那是一个优雅,而你现在再看Unity内部Shader肯定内伤。
2-如果你有多年程序经验,你会觉得看不明白的代码,肯定是好代码,但细心想想,这年头看不明白的代码,只有100年前的汇编语言
所以,先自宫,再往下看:
代码的本质
代码的入口
<找到Package目录下的Shader目录>
代码分析
<一大堆,不用看,就一句代码:引用了XXXX>
600行代码,就这一句有用,《其他不用看》
代码逻辑
发现Spot lit 点光源的逻辑,就是在 LitForwradBase.hlsl 这文件
最终你会发现,是初始化了SurfaceData,然后把这个参数传给UniversalFramentPBR()这个方法计算出最终的颜色
half4 LitPassFragment(Varyings input) : SV_Target
{
//.............
SurfaceData surfaceData;
InitializeStandardLitSurfaceData(input.uv, surfaceData);
InputData inputData;
InitializeInputData(input, surfaceData.normalTS, inputData);
half4 color = UniversalFragmentPBR(inputData, surfaceData);