Unity3D 自定义渲染管线[CustomSRP]
这是一个有关于Unity-Custom SRP的基础系列教程。该教程涉及到一个简单的渲染管线的搭建,各种光照和阴影的计算与着色,DrawCall和几种Batching的方式,复杂的多贴图及相关遮罩,多相机的渲染和堆叠相机的解决方案,一个简洁的后处理系统包括了Bloom、ColorGrading、ToneMapping、FXAA的简单实现等等…对于了解Unity的渲染流程和CPU-GPU沟通协作方式有着很好的帮助。
本文主要取自Catlike Coding的系列教程,并根据自己的理解和习惯对部分代码结构进行了简单的重构和细节上的调整,之后有时间应该会对原文中介绍不够详细或没有介绍到的一些常见技术和实现另外开贴。
同时我也有一篇关于原文的翻译帖正在慢慢更新中,想要一步一步去理解和实现的可以在下边找到译文的链接,喜欢阅读原作的也可以去Catlike Coding的小屋里学习。
文末给出了给予我很大帮助的链接。
在代码中做了很详细的注释,就不过多叙述(主要是懒),直接上代码链接了。
(本系列教程使用的是Unity 2021.3.1f1c1 版本)
<hr>工程链接
Unity-CustomSRP
<hr>代码结构
Custom RP/Editor:
CustomLightEditor.cs
CustomShaderGUI.cs
RenderingLayerMaskDrawer.cs
Custom RP/Runtime:
CameraBufferSettings.cs
CameraRenderer.cs
CameraRenderer.Editor.cs
CameraSettings.cs
CustomRenderPipeline.cs
CustomRenderPipeline.Editor.cs
CustomRenderPipelineAsset.cs
CustomRenderPipelineAsset.Editor.cs
CustomRenderPipelineCamera.cs
CustomShaderKeywords.cs
CustomShaderPropertyId.cs
CustomShaderTagIds.cs
DrawGizmos.cs
EnumPasses.cs
Lighting.cs
PostFXBloom.cs
PostFXColorGradingTonemapping.cs
PostFXRenderer.cs
PostFXRenderer.Editor.cs
PostFXSettings.cs
ReinterpretExtensions.cs
RenderingLayerMaskFieldAttribute.cs
Shadows.cs
ShadowSettings.cs
Custom RP/ShaderLibrary:
BRDF.hlsl
Common.hlsl
Fragment.hlsl
GI.hlsl
Light.hlsl
Lighting.hlsl
Shadows.hlsl
Surface.hlsl
UnityInput.hlsl
Custom RP/Shaders:
CameraRender.shader
CameraRenderPasses.hlsl
FXAAPass.hlsl
Lit.shader
LitInput.hlsl
LitPass.hlsl
MetaPass.hlsl
PostFX.shader
PostFXPasses.hlsl
ShadowCasterPass.hlsl
UICustomBlending.shader
Unlit.shader
UnlitInput.hlsl
UnlitParticles.shader
UnlitPass.hlsl
<hr>译文链接(更新中)
Unity3D CustomSRP[译]
<hr>
效果图
<hr>相关参考资料
Catlike CodingCandy Cat-《UnityShader入门精要》 冯乐乐HLSL 文档Unity官方手册CG 文档线性代数的本质《3D数学基础:图形与游戏开发》
页:
[1]