diff --git a/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md b/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md index 2775c48..68da717 100644 --- a/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md +++ b/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md @@ -360,8 +360,9 @@ void DeferredLightPixelMain( const float SceneDepth = CalcSceneDepth(InputParams.ScreenUV); const FDerivedParams DerivedParams = GetDerivedParams(InputParams, SceneDepth); + //设置获取光源各种信息 FDeferredLightData LightData = InitDeferredLightFromUniforms(CURRENT_LIGHT_TYPE); - UpdateLightDataColor(LightData, InputParams, DerivedParams); + UpdateLightDataColor(LightData, InputParams, DerivedParams);//根据当前世界坐标计算LightData.Color *= 大气&云&阴影的衰减值 * IES灯亮度(非IES灯数值为1) float3 V =-DerivedParams.CameraVector; float3 L = LightData.Direction; // Already normalized @@ -404,7 +405,7 @@ void DeferredLightPixelMain( } #else // STRATA_ENABLED - + //取得屏幕空间数据(FGbufferData、AO) FScreenSpaceData ScreenSpaceData = GetScreenSpaceData(InputParams.ScreenUV); // Only light pixels marked as using deferred shading BRANCH if (ScreenSpaceData.GBuffer.ShadingModelID > 0 @@ -413,19 +414,23 @@ void DeferredLightPixelMain( #endif ) { + //通过SceneDepth获取的CameraVector以及当前像素的世界坐标 const float SceneDepth = CalcSceneDepth(InputParams.ScreenUV); const FDerivedParams DerivedParams = GetDerivedParams(InputParams, SceneDepth); + //设置获取光源各种信息 FDeferredLightData LightData = InitDeferredLightFromUniforms(CURRENT_LIGHT_TYPE); - UpdateLightDataColor(LightData, InputParams, DerivedParams); + UpdateLightDataColor(LightData, InputParams, DerivedParams);//根据当前世界坐标计算LightData.Color *= 大气&云&阴影的衰减值 * IES灯亮度(非IES灯数值为1) + #if USE_HAIR_COMPLEX_TRANSMITTANCE + //针对ShadingModel Hair(同时需要CustomData.a > 0)计算头发散射结果 if (ScreenSpaceData.GBuffer.ShadingModelID == SHADINGMODELID_HAIR && ShouldUseHairComplexTransmittance(ScreenSpaceData.GBuffer)) { LightData.HairTransmittance = EvaluateDualScattering(ScreenSpaceData.GBuffer, DerivedParams.CameraVector, -DeferredLightUniforms.Direction); } #endif - + //计算当前像素的抖动值 float Dither = InterleavedGradientNoise(InputParams.PixelPos, View.StateFrameIndexMod8); float SurfaceShadow = 1.0f;