美文网首页游戏
Unity3d 渲染通道

Unity3d 渲染通道

作者: 周威_今天的天气真是好极了 | 来源:发表于2017-02-22 12:00 被阅读591次

    ====== Unity’s Rendering Pipeline  Unity的渲染路径 ======

    === Description 描述 ===

    着色器定义了一个对象如何被他自身(材质属性)与光照所影响。因为光照计算必须内置在着色器中,同时又很多光照类型与阴影类型,所以编写一个满足需求且高质量的着色器是一个复杂的任务。为了是这一切变得更加简单,Unity提供了(Surface Shaders)表面着色器,使用它能使光照、阴影、光照贴图、向前vs延迟渲染自动化处理。

    本文档描述Unity的光照与渲染路径的特性,以及在场景中表面着色器是如何工作。

    ===Rendering Paths  渲染路径===

    光照是如何被应用以及着色器中的哪一个通道(Passed)被使用,是依赖于何种渲染路径(Rendering Path)被使用。每一个着色器中的通道鉴别其光照类型是通过通道标签(Pass Tags)。

    1.在前向渲染(Forward Rendering)中,ForwardBase 与ForwardAdd通道会被使用。

    2.在延迟着色渲染(Deferred Shading)中,Deferred通道会被使用。

    3.在传统延迟光照渲染(Legacy Deferred Lighting)中,PrepassBase和PrePassFinal通道会被使用。

    4.传统顶点光照渲染(Legacy Vertex Lit),Vertex,VertexLMRGBM和VertexLM通道会被使用。

    5.除了以上之外,渲染阴影或者深度贴图,ShadowCast通道会被使用。

    === Forward Rendering path 前向渲染路径===

    ForwardBase通道渲染自然光,光照贴图,主方向光和非重要(顶点/SH)光。ForwardAdd通道被用来处理所有附加的逐像素光照;一次调用使逐个物体发光。在Forward Rendering中查阅详细资料。

    如果前向渲染被使用,但是着色器没有一个合适的forward通道(forwardBase和forwardAdd都没被提供),那么该对象以顶点光照路径形式进行渲染,下同。

    === Deferred Shading path  延迟渲染路径 ===

    Deferred 通道渲染所有光照所需要的信息(内置的shader中:漫反色颜色,镜面反色颜色,光滑度,世界空间法线,自发光)。同时他在自发光处理中增加了光照贴图、反色试样和环境光照。在Deferred Shading中查询详细资料。

    === Legacy Deferred Lighting Path 传统延迟光照路劲 ===

    PrepassBase 通道渲染法线与高光指数;PrepassFinal 通道通过合并贴图渲染最终颜色,渲染光照与自发光材质属性。所有普通场景中,光照实在空间中分别进行的。

    === Legacy Vertex Lit Rendering path===

    因为顶点光照被更多的用在那些不支持可编程着色器的平台上,Unity不能创建多个着色器的排列在内部处理lightmapped和non-lightmapped对象,因此多通道处理必须被显示的先写。

    1.Vertex 通道被用来处理非光照对象,所有的光照只被渲染一次,通过使用一个固定功能的OpenGL与Direct3D光照模型(Blinn-Phong)。

    2.VertexLMRGBM 通道被用来处理光照对象,当光照贴图使用过RGBM编码(PC平台)。当没有实时光照备用使用的情况下,通道被期望混合贴图与光照贴图。

    4.VertexLMM 通道被用来处理光照对象,当光照贴图是都变了——LDR编码(移动平台)。当没有实时光照情况下,通道被期望混合贴图与光照贴图。

    ===See Also  更多===

    1.Graphics Command Buffers 展示Unity如何开展渲染路径。

    相关文章

      网友评论

        本文标题:Unity3d 渲染通道

        本文链接:https://www.haomeiwen.com/subject/lnapwttx.html