• 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

    人生当苦,笑着看看
  • 相关阅读:
    Js图片利用定时器自动切换(setInterval)
    JS全选,全不选,添加,删除功能的实现
    windows 下安装memcache拓展
    Linux 踢出其他用户
    通过nginx配置php环境变量
    Mac 服务重启
    Mac PHP安装redis扩展
    高并发解决方案
    MySQL 分表
    MySQL 主从-简介
  • 原文地址:https://www.cnblogs.com/BaiPao-XD/p/13751645.html
Copyright © 2020-2023  润新知