0基础尝试找出UnityURP渲染管线的AdditionalLit(spot点光源)的实现

目录

0基础其实最好

代码的本质

代码的入口

 代码分析

代码逻辑

代码实现

自行练习


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);

代码实现

自行练习

猜你喜欢

转载自blog.csdn.net/avi9111/article/details/124305516