XDGE Render-启程
说明
(这个是一个个人项目,但可以按需抽取)
由于实际Work的大量项目也抽取了不同的Feature, 然后我又不断搜集了大量和实现了乱七八糟的,故而还是想把这些都融合到XDRender.
一来:方便快速的实验,和实际使用(包含使用的变种)
二来:可以按需时候直接找到实现【一些Pape要么实现了不给实现过程,一些是比较封闭只有一个思路的PPT或者论文,这样再找的时候及其不方便和直观】
三来:能触类旁通(所以一改风格,尽量是思维图和源码作为总结】
1、分化出XDRender的UnityPackage版本、Unreal插件版本。这两个是统一和XDEngine的Render层次结构一致,配置数据可以使用。
XDRender-C++
XDRender-Unity
XDRender-Unreal
XDRender-WebGl
2、多视口和多管线
3、能够方便测试和不断加入ShaderMode和ShaderFeature。
来源RealTimeRender,GpuGem,SIGGRAPH,和各路大神。
这个才是目的
XDRender-C++
四层结构图
1、Core底层库
包括了Std等语言库的二次封装,待有时间后(可以重现一个自己的,膜拜下Unreal)
包括了Opengl,DX,Egine等第三方库的二次封装,
2、RHI
绘制命令,绘制状态,绘制资源等基于Opengl,es,DX,Vulta、Meta的封装
3、中间驱动
3.1、PipeLineAssets,Pipeline, ShaderRender
这里的真正的管线是在ShaderRender, 由PipeLine[UE的话叫XXXIII]统一驱动。
3.2、RCMD
XD:
目前只是类似Unity的CommandBuffer
UE
Unity
3.3、Mode
4 User
1、ShaderMode的Custom输入
2、ShaderGraphy和RCMDTool
3、FrameGraphy
XDRender-Unity And Unreal
四层结构图
Core | RHI | PipelineDriver、ShaderRender | Pass | RCMD | Mode |
---|---|---|---|---|---|
底层操作库 | 管线驱动器、管线 | 管线阶段 | 命令 | ||
默认的ShaderMode | |||||
基于默认提供的ShaderMode的Custom输入 |
1、Core
这部分引擎已经有了
2、RHI
这部分引擎已经有了,但为了后续能Handle能够方便。会尽可能套话
3、中间驱动
3.1、PipeLineAssets,Pipeline, ShaderRender
这里的真正的管线是在ShaderRender, 由PipeLine[UE的话叫XXXIII]统一驱动。
3.2、RCMD
(这部分XDRender也会再做一次封装,便于XDC++引擎也可以类似处理,Unity的话就是CommandBuffer和RenderContext. UE的话我们可以通过RHiCommand再封装来做,但Unreal已经做大量相关宏来处理所以不容易封装过头了)
3.3、Mode
提供各个默认的着色模型,当前的默认渲染模型分类是参考了RT和UE.
每个渲染模型的对应算法模型可以替换
ShaderRender
可以按照需要自行,这里默认提供了一条SimpleSR01(是XRRender用于Studio的,持续录入)
SimpleSR01:
Name | |
---|---|
ConfigEnvironmentPass | 环境相关信息的配置,如Camera的信息,当前的级别等等 |
DrawDepthPass | 预先的深度绘制,BatchDraw |
DephtFastCachePass | 深度缓存-这部分主要是Copy当前的深度,Just DrawDepthPass Work |
DrawLightPass | 配置光源 |
ShadowPass | 阴影绘制(这里部分并入到了RenderObject),尝试Batch |
OpaquePass | 不透明 |
TransparentPass | 透明(例外:分离半透的模式) |
SkyBoxPass | 天空盒等 |
PostProcessPass-ScreenSpaceTeac | 基于屏幕空间的效果 |
PostProcessPass-Effect | 后处理屏幕纹理 |
默认着色模型
///RenderPass着色模型
DepthOnly
ShadowOnly-PanelShadow,
ShadowOnly-ShadowMap,
ShadowOnly-CSMShadowMap
DrawLight
DrawOpa
DrawSky
DrawTranslute
PostProcess
//EditorTool使用
BakeLight-BakeLightMap,BakeIBL,BakeAO,BakeShadowMap
///RenderObjects着色模型
Unlit,/// 无光照
Lambert,
Phone,
BlinPhone,
DefaultLit,
DefaultScreenSubsurfaceScattering,// 标准屏幕空间次表面
DefaultImageSubsurfaceScattering,/// 标准图像空间次表面
DefaultPreintegratedSkin,/// 预整合皮肤
DefaultClearCoat,/// 透明涂层
DefaultSubsurfaceProfile,/// 次表面轮廓
DefaultTwoNomalClearCoat,/// 双法线透明涂层
DefaultTwoSidedFoliage, /// 双面植被
DefaultHair,/// 毛发
DefaultCloth,/// 布料
DefaultEye,/// 眼睛
DefaultSingleLayerWater,/// 单层水
DefaultThinTranslucent, /// 薄半透明
DefaultFrom/// FromMaterial
4 User
1、ShaderMode的Custom输入
2、ShaderGraphy和RCMDTool
ShaderGraph:图表化的Shader, 能方便生成Shader源文件。
RCMDTool:命令工具的代理,能够方便插入现有的Pipeline的阶段. 从而聚焦到自身。
3、FrameGraphy
图表化、配置化的管线。
Unity版本
Unreal版本
时间关系,待后续加入。