42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
---
|
||
title: ToonReflection
|
||
date: 2025-03-20 17:04:16
|
||
excerpt:
|
||
tags:
|
||
rating: ⭐
|
||
---
|
||
# 反射功能相关Pass
|
||
- ReflectionIndirect(None)
|
||
- [[#ReflectionEnvironmentAndSky]]
|
||
- DiffuseIndirectAndAO(Lumen/SSR)
|
||
- LumenReflections
|
||
- [[#DiffuseIndirectComposite]]
|
||
|
||
## ReflectionEnvironmentAndSky
|
||
位于IndirectLightRendering.cpp的RenderDeferredReflectionsAndSkyLighting() => `AddSkyReflectionPass()`
|
||
|
||
当`DiffuseIndirectMethod = EDiffuseIndirectMethod::Lumen`(也就是开启Lumen GI),如果反射方法为Lumen或者SSR则不会执行后续逻辑。
|
||
|
||
不开启Lumen GI,反射方法为:
|
||
- Lumen:`RenderLumenReflections()`
|
||
- Rtx Reflection:`RenderRayTracingReflections()`
|
||
- SSR:`ScreenSpaceRayTracing::RenderScreenSpaceReflections()`
|
||
|
||
`RenderDeferredReflectionsAndSkyLighting()`主要执行了:
|
||
1. SkyLightDiffuse
|
||
1. RenderDistanceFieldLighting()
|
||
1. RenderDistanceFieldAOScreenGrid():渲染距离场AO。
|
||
2. RenderCapsuleShadowsForMovableSkylight():渲染胶囊阴影。
|
||
2. ReflectionIndirect
|
||
- RenderLumenReflections()
|
||
- RenderRayTracingReflections()
|
||
- RenderScreenSpaceReflections()
|
||
3. Denoise
|
||
- Denoiser:IScreenSpaceDenoiser::DenoiseReflections()
|
||
- TemporalFilter:AddTemporalAAPass()
|
||
4. RenderDeferredPlanarReflections():合成平面反射结果。
|
||
5. AddSkyReflectionPass()
|
||
|
||
执行完上述反射方法后,最后执行`AddSkyReflectionPass()`
|
||
## DiffuseIndirectComposite
|
||
位于IndirectLightRendering.cpp的`RenderDiffuseIndirectAndAmbientOcclusion()` |