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的封装

image-20200929135524057

3、中间驱动

3.1、PipeLineAssets,Pipeline, ShaderRender

这里的真正的管线是在ShaderRender, 由PipeLine[UE的话叫XXXIII]统一驱动。

3.2、RCMD

XD:

​ 目前只是类似Unity的CommandBuffer

UE

image-20200929200829555

Unity

image-20200929201050201

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版本

image-20200929114133165

image-20200929114156090

Unreal版本

时间关系,待后续加入。

持续

image-20200929200330138

人生当苦,笑着看看
原文地址:https://www.cnblogs.com/BaiPao-XD/p/13751645.html