添加环境光
球谐光照原理


内置函数SH
Built-in Render Pipeline
内置sh函数
Tags { "LightMode"="ForwardBase"}
--------------------------------------------
#pragma multi_compile_fwdbase
#include "AutoLight.cginc"
-------------------------------------------
//************************************
//SH代码 内置函数
//**********************************
half3 env_color = ShadeSH9(float4(normal_dir,1.0));
Universal Render Pipeline
内置sh函数
float3 ambientColor = SampleSH(pixelNormalWS);
函数对应内容在下方文件中 GlobalIllumination.hlsl文件

SphericalHarmonics.hlsl文件

添加球谐光照
新增参数
增加环境光强度控制参数

计算SH
使用GammaColor进行混合颜色和_AmbientColorIntensity控制强度。最终输出颜色直接加上环境光颜色即可,但这里做了额外的处理,提取出高光颜色大于1的部分在相加,因为SH环境光是加法混合,整体颜色变亮可能会让高光效果不明显,所以这里为增加高光做处理。

//Sh球谐光照
float3 ambientColor = SampleSH(pixelNormalWS) * gammaColor * _AmbientColorIntensity;
float3 color = ambientColor;
color += pbrDiffuseColor * albedo + pbrSpecularColor * specularColor * albedo;
color += max(0, pbrSpecularColor * specularColor * albedo - 1);
//雾效颜色混合设置
color = MixFog(color, input.positionWSAndFogFactor);
当前效果


左边是没有环境光,右面是加上环境光处理过的。
