vault backup: 2024-12-28 21:58:12

This commit is contained in:
BlueRose 2024-12-28 21:58:12 +08:00
parent 697603b364
commit d4dac9204a
2 changed files with 169 additions and 15 deletions

View File

@ -0,0 +1,148 @@
---
title: Untitled
date: 2024-12-28 21:56:29
excerpt:
tags:
rating: ⭐
---
![[HierachicalTracing2.png]]
![[HierachicalTracing3.png]]
![[HierachicalTracing1.png]]# Reflective Shadow MapsRSM2005
论文地址https://users.soe.ucsc.edu/~pang/160/s13/proposal/mijallen/proposal/media/p203-dachsbacher.pdf
Let's inject light in. (Photon Mapping?)
解决如何把“光”注入到场景中。
**Cool Ideas**
- Easy to be implemented
- Photon Injection with RSM
- Cone sampling in mipmap
- Low-res Indirect illumination with error check
**Cons**
- Single bounce
- No visibility check for indirect illumination
# Light Propagation Volumes
**"Freeze" the Radiance in Voxel**
Light Injection
- Pre-subdivide the scene into a 3D grid
- For each grid cell, find enclosed virtual light sources
- Sum up their directional radiance distribution
- Project to first 2 orders of SHs (4 in total)
# Sparse Voxel Octree for Real-time Global Illumination (SVOGI)
## Shading with Cone Tracing in Voxel Tree
Pass 2 from the camera
- Emit some cones based on diffuse+specular BRDF
- Query in octree based on the (growing) size of the cone
# VXGINvidia UE4 Plugins
**Problems in VXGI**
Incorrect Occlusion(opacity)
- naively combine the opacity with alpha blending.
Light Leaking
- when occlusion wall is much smaller than voxel size
# SSGI
SIGGRAPH2015Advances in Real-Time Rendering course
**Radiance Sampling in Screen Space**
For each fragment:
- **Step 1**: compute many reflection
rays
- **Step 2**: march along ray direction
**(in depth gbuffer)**
- **Step3**: use color of hit point as
indirect lighting
![[SSGI1.png]]
![[SSGI2.png]]
中间的RayCast使用RayMarching进行。但使用LinearRayMarching相对比较消耗资源所以采用HierachicalTracing。
![[SSGI3.png]]
最低层级
![[HierachicalTracing1.png]]
层级+1相当于RayMarching2个像素。
![[HierachicalTracing2.png]]
层级+2相当于RayMarching4个像素。此时RayHit。
![[HierachicalTracing3.png]]
回退当前HiZ像素的上一层级。
![[HierachicalTracing4.png]]
回退当前HiZ像素的上上一层级。
![[HierachicalTracing5.png]]
找到RayHit位置。
![[HierachicalTracing6.png]]
## Ray Reuse among Neighbor Pixels
- Store **hitpoint data**
- Assume visibility is the same between neighbors
- Regard **ray to neighbor's hitpoint** as valid
![[ConeTracingWithMipmapFiltering1.png]]
# Lumen
## Phase1: Fast Ray Track in Any Hardward
Signed Distance Field(SDF)
1. 它是均匀的。
2. 在空间上是连续的。
### Cone Tracing with SDF(ie. Soft Shadow)
## Phase2:Radiance Injection and Cacheing
![[MeshCard1.png]]
MeshCard的目的是为了将直接光照存储在模型上Surface Cache
![[GenerateSurfaceCache1.png]]
![[GenerateSurfaceCache2.png]]
最终目的是通过SurfaceCache这4张图渲染出SurfaceCache FinalLighting
![[LightingCachePipeline1.png]]
1. 计算SurfaceCache DirectLighting
2. 通过1计算体素光照。
3. 通过体素光照来计算间接照明。
4. 最终计算Surface Cache FinalLighting。
以此进行循环。![[DirectLighting1.png]]
针对多个光源会渲染对应数量的cache之后累加在一起。
![[MultiLightSurfaceCache.png]]
### Voxel Lighting to Sample
![[VoxelLightingToSample.png]]
对于近处的物体可以准确拿到Hit到物体的上一点的Radiance对于远处的物体会以相机坐标轴生成一个Voxel形式的表达之后通过Global SDF拿到对应的Radiance。
***PS. 该Voxel存储的数据为每个面对应方向上被其他直接照明照亮的亮度。***
![[VoxelClipmap.png]]![[BuildVoxelFaces.png]]
其Voxel的计算是基于SDF的。
![[InjectLightIntoClipmap.png]]
![[IndirectLighting.png]]
在SurfaceCache中 8x8的tile中行与列间隔4个像素放置2个探针进行4次空间Voxel采样。
之后进行球谐插值:
![[IndirectLighting_SHLerp.png]]![[Per-PixelIndirectLighting.png]]![[CombineLighting.png]]
## Phase3:Build a lot of probes with Different Kinds
![[ScreenProbeStructure.png]]
每隔 16 * 16 个像素采样一个ScreenSpaceProbe。采样的内容是Radiance与HitDistance以8面体Octahedron Mapping的方式进行存储。
![[ScreenProbePlacement.png]]![[PlaneDistanceWeightingOfProbeInterpolation.png]]![[DetectNon-InterpolatableCases.png]]![[ScreenProbeAtlas.png]]
将重采样的结果部分区域的屏幕空间探针因为实际空间距离太远进行插值没有意义所以需要额外填充探针进行重采样存在Atlas下面的空出来的区域。
![[ScreenProbeJitter.png]]
### 重要性采样
![[ApproximateRadianceImportanceFromLastFrameProbes.png]]![[AccumulateNormalDistributionNearby.png]]![[NearbyNormalAccumulation.png]]![[StructuredImportanceSampling.png]]![[FixBudgetImportanceSampling.png]]
### Denoise
![[Denoise_SpatialFilteringForProbe.png]]![[Denoise_GatherRadianceFromNeightbors.png]]![[ClampDistanceMismatching.png]]
### WorldSpace Probes and Ray Connecting
![[WorldSapceRadianceCache.png]]![[WorldSpaceRadianceCache.png]]![[ConnectingRays.png]]![[ConnectingRays2.png]]![[ConnectingRay3.png]]![[PlacementAndCacheing.png]]
## Phase4:Shading Full Pixels with Screen Space Probes

View File

@ -28,6 +28,8 @@ rating: ⭐⭐⭐
- https://zhuanlan.zhihu.com/p/716241556 - https://zhuanlan.zhihu.com/p/716241556
- BanG梦想 女子乐队派对 - BanG梦想 女子乐队派对
- 异度神剑 - 异度神剑
- 碧蓝幻想
- https://zhuanlan.zhihu.com/p/14858282081
- 归龙潮 - 归龙潮
- 其他人的作品 - 其他人的作品
- [蛋白胨](https://www.zhihu.com/people/danbaidong1111) https://zhuanlan.zhihu.com/p/663968812 - [蛋白胨](https://www.zhihu.com/people/danbaidong1111) https://zhuanlan.zhihu.com/p/663968812
@ -133,36 +135,39 @@ rating: ⭐⭐⭐
6. 渲染深度与法线Buffer。 6. 渲染深度与法线Buffer。
7. 渲染级联阴影。 7. 渲染级联阴影。
8. 合成阴影与环境光照AO、环境探针 8. 合成阴影与环境光照AO、环境探针
14. [ ] 添加Debug View https://zhuanlan.zhihu.com/p/668782106 14. [ ] 云彩生成器
15. [ ] [_UE5_ Shader Print系统](https://zhuanlan.zhihu.com/p/637929634) 1. [ ] https://www.bilibili.com/video/BV1L5kdYFEXc/?spm_id_from=333.1007.tianma.4-1-11.click&vd_source=d47c0bb42f9c72fd7d74562185cee290
16. [ ] GBufferView实现。 2. [ ] 风格化水面资产 https://item.taobao.com/item.htm?id=865360489543&pisk=gLHsX7NMiNb1gB7njFKURXly5Dwb5q9y1iZxqmBNDReTkigKDtQA6-FLJorOMSU2sqNju2VxQRoZRGDIPtWwSCmAh-yvzUJyUcman-Lyk8kOUGq4mNUAurCKv-rjPdNAXcmgnrIFkQlKjZg5RK5YDrKQpor7k-EYW9KQcuaYHPFAJ6E8JrexkSIdJuZ5MZCTHkKQju5OBoeYvMEaVtBtk-KIvyqxnDXQDCZ-fHz1qUDkpeKgJtBxdlNpTcUKrr-4i5TjbyXvy1Zg1coTRtBxKXkPllz9ZMz0QPDbfqvlIRFjTAVoQeBsl20KBSDp8B00QuV-MD-lTPDIQvFsCU1uCX3nd5DOWhqtsqDbQx71hDMb57HTOKx0CDEYdbneq6zidAkL1AT5ZPMiDjPItNTUuboEBWgJ89g0GXkgZA8dC4IyzTz7sJ5fA7XbAz-BAsf0xzPwqJ_edaNTxlTyAH_Gi5E3AmtBAsDg6kqF6HtCWc1..&spm=a21xtw.29178619.product_shelf.74.41727d6dRCDvul
17. [ ] Toon Debug模式可以让美术在材质进行进行简单的光照计算。 15. [ ] 添加Debug View https://zhuanlan.zhihu.com/p/668782106
18. [ ] ToonShadow 16. [ ] [_UE5_ Shader Print系统](https://zhuanlan.zhihu.com/p/637929634)
17. [ ] GBufferView实现。
18. [ ] Toon Debug模式可以让美术在材质进行进行简单的光照计算。
19. [ ] ToonShadow
1. ![[星穹铁道中下巴阴影处理.png]] 1. ![[星穹铁道中下巴阴影处理.png]]
2. [ ] ToonSDFShadow 2. [ ] ToonSDFShadow
1. [ ] TODO: SDF贴图工具 1. [ ] TODO: SDF贴图工具
3. [ ] ShadowPass https://zhuanlan.zhihu.com/p/619718145 3. [ ] ShadowPass https://zhuanlan.zhihu.com/p/619718145
1. [ ] 半分阴影[[幻塔-半程自阴影.png]] 1. [ ] 半分阴影[[幻塔-半程自阴影.png]]
19. [ ] LookDev场景 20. [ ] LookDev场景
1. [ ] https://zhuanlan.zhihu.com/p/394608910 1. [ ] https://zhuanlan.zhihu.com/p/394608910
20. [ ] 考虑往GBuffer中添加更多数据考虑Velocity以及SingleLayerWater 21. [ ] 考虑往GBuffer中添加更多数据考虑Velocity以及SingleLayerWater
1. ShaderMaterialDerivedHelpers.cppShader宏、GBufferInfo.cppGBuffer格式BasePassRendering.cpp950行SingleLayerWater写入GBuffer格式相关 1. ShaderMaterialDerivedHelpers.cppShader宏、GBufferInfo.cppGBuffer格式BasePassRendering.cpp950行SingleLayerWater写入GBuffer格式相关
2. 确定一下SingleLayerWater中VSMFiter与DistanceFieldShadow对渲染结果的影响之后在文档中说明。 2. 确定一下SingleLayerWater中VSMFiter与DistanceFieldShadow对渲染结果的影响之后在文档中说明。
21. [ ] 修复SIngleLayerWater的缩略图渲染渲染错误双击会有一瞬间的错误产生 22. [ ] 修复SIngleLayerWater的缩略图渲染渲染错误双击会有一瞬间的错误产生
22. [ ] 添加对应的Stat https://zhuanlan.zhihu.com/p/716644594 23. [ ] 添加对应的Stat https://zhuanlan.zhihu.com/p/716644594
23. [ ] ToonLumen、GI以及晕染效果实现。![[卡通渲染晕染效果.mp4]] 24. [ ] ToonLumen、GI以及晕染效果实现。![[卡通渲染晕染效果.mp4]]
24. [ ] 在材质中实现ToonEye相关效果 25. [ ] 在材质中实现ToonEye相关效果
1. 【二次元人物眼睛如何变形?】 https://www.bilibili.com/video/BV14M4m1y71A/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e 1. 【二次元人物眼睛如何变形?】 https://www.bilibili.com/video/BV14M4m1y71A/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
1. 原视频 https://www.youtube.com/watch?v=euIyX9v8rvw 1. 原视频 https://www.youtube.com/watch?v=euIyX9v8rvw
2. 眼睛建模 https://youtu.be/s2_7Q2IIvNY?si=fWiYjqcLFXzdeQ-B&t=126 2. 眼睛建模 https://youtu.be/s2_7Q2IIvNY?si=fWiYjqcLFXzdeQ-B&t=126
25. 尝试实现Forward+ 26. 尝试实现Forward+
1. BasePass https://zhuanlan.zhihu.com/p/618698467 1. BasePass https://zhuanlan.zhihu.com/p/618698467
26. DX11问题修复 27. DX11问题修复
1. [x] ToonOutline SceneColorTexture为空的问题。 **DX11限制必须CopyTexture** 1. [x] ToonOutline SceneColorTexture为空的问题。 **DX11限制必须CopyTexture**
27. 卡通渲染针对TAA的优化思路 https://zhuanlan.zhihu.com/p/678876237 28. 卡通渲染针对TAA的优化思路 https://zhuanlan.zhihu.com/p/678876237
1. https://www.bilibili.com/video/BV1BK411v7FY/?spm_id_from=333.788&vd_source=ea6df38502a795b7533aa33b78bf1159 1. https://www.bilibili.com/video/BV1BK411v7FY/?spm_id_from=333.788&vd_source=ea6df38502a795b7533aa33b78bf1159
2. https://zhuanlan.zhihu.com/p/20786650 2. https://zhuanlan.zhihu.com/p/20786650
28. [ ] Unreal Engine 5.4 Scene Extension https://zhuanlan.zhihu.com/p/706268007 29. [ ] Unreal Engine 5.4 Scene Extension https://zhuanlan.zhihu.com/p/706268007
1. [ ] 通过SceneExtension改进ToonObjectID这样可以减少对应ToonBuffer的精度来存其他数据。 1. [ ] 通过SceneExtension改进ToonObjectID这样可以减少对应ToonBuffer的精度来存其他数据。
2. [ ] https://www.bilibili.com/video/BV1fM4m1U7Tp/ 2. [ ] https://www.bilibili.com/video/BV1fM4m1U7Tp/
@ -183,6 +188,7 @@ TODO:
- [ ] 星穹铁道 - [ ] 星穹铁道
- [ ] 绝区零 - [ ] 绝区零
- [ ] 蓝色协议 - [ ] 蓝色协议
- [ ] 碧蓝幻想
# 卡通渲染引擎功能总览(按照渲染顺序进行排序) # 卡通渲染引擎功能总览(按照渲染顺序进行排序)
- GBuffer For ToonShaderModel - GBuffer For ToonShaderModel