Unity的摄像机上支持3种RenderingPath,分别是VertexLit,Forward和Dferred Lighting,而shader中的LightMode标签Vertex,ForwardBase,forwardAdd,PrepassBase,PrepassFinal等,分别表示当前pass是为哪一个RenderingPath下设计使用的。

下面的shader中LightMode有三种模式,分别为Vertex, ForwardBase, deferred,它们输出的颜色分别为蓝,绿,红。在摄像机中选择不同的RenderingPath时,模型就会改变成相应的颜色。

Shader "Custom/Deferred_Forward_Vertex" {
SubShader{
Blend One One
pass{
Tags{"LightMode"="Vertex"}
Blend One Zero
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "Lighting.cginc" struct vertOut{
float4 pos:SV_POSITION;
float4 color:COLOR;
};
vertOut vert(appdata_base v)
{
vertOut o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.color = float4(0,0,1,1);
return o;
}
float4 frag(vertOut i):COLOR
{
return i.color;
}
ENDCG
}
pass{
Tags{"LightMode"="ForwardBase"}
Blend One One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "Lighting.cginc"
struct vertOut{
float4 pos:SV_POSITION;
float4 color:COLOR;
};
vertOut vert(appdata_base v)
{
vertOut o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.color = float4(0,1,0,1);
return o;
}
float4 frag(vertOut i):COLOR
{
return i.color;
}
ENDCG
}
CGPROGRAM
#pragma surface surf MyDeferred
half4 LightingMyDeferred_PrePass(SurfaceOutput s, half4 light){
half4 c;
c.rgb = s.Albedo;
c.a = s.Alpha;
return c;
} sampler2D _MainTex; struct Input {
float2 uv_MainTex;
}; void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = float3(1,0,0);
}
ENDCG
}
}

注:选择了Deferred时,优先选择deferred模式下的pass,如果找不到,则会选择forward模式下面的pass。

选择了Forward时,优先选择Forward模式下的pass,如果找不到,则会选择Vertex模式下面的pass。

Unity在一个时间只会执行一个渲染路径下的pass。

 

关于这3个渲染路径之外的参数【Always】:

always + deferred:在选择deferred时,只执行deferred的pass。

always + vertexLit:都会执行,并且谁靠前谁先执行。

always + forward:都会执行,并且谁靠前谁先执行。

而无参数执行顺序和always一样。

 

渲染顺序用Blend测试

One One将之前颜色和现在的融合

One Zero不融合之前的颜色,只用现在的颜色

shader实例(八)渲染路径RenderingPath的更多相关文章

  1. [Unity Shader笔记]渲染路径--Forward渲染路径

    [Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...

  2. RenderingPath 渲染路径

    http://blog.csdn.net/lichaoguan/article/details/42554821 RenderingPath 渲染路径 Deferred Lighting 延时光照 延 ...

  3. Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解

    简述 Unity supports different Rendering Paths. You should choose which one you use depending on your g ...

  4. 解读Unity中的CG编写Shader系列八(多光源漫反射)

    转自http://www.itnose.net/detail/6117338.html 前文中完成最简单的漫反射shader只是单个光源下的漫反射,而往往场景中不仅仅只有一个光源,那么多个光源的情况下 ...

  5. 前向渲染路径细节 Forward Rendering Path Details

    正向渲染路径细节 Forward Rendering Path Details Forward Rendering path renders each object in one or more pa ...

  6. 渲染路径-Deferred Lighting 延时光照

    http://blog.csdn.net/heyuchang666/article/details/51564954 注意: 最后3个步骤注意下 延时光照是有着最高保真度的光照和阴影的渲染路径.如果你 ...

  7. 渲染路径-u3d渲染路径比较

    Unity支持不同的渲染路径.应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个.不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影.        项目所使用的渲染路径在Player S ...

  8. 正向渲染路径细节 Forward Rendering Path Details

    http://www.ceeger.com/Components/RenderTech-ForwardRendering.html This page describes details of For ...

  9. 【OpenGL】Shader实例分析(七)- 雪花飘落效果

    转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如 ...

随机推荐

  1. mvc 发送QQ邮件

    试图部分代码: @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } ...

  2. EasyDarwin开源流媒体云平台设计与实现(分布式+负载均衡)

    前言 早在2013年我就设计了一套架构非常简单的分布式流媒体服务器平台<基于Darwin实现的分布式流媒体直播服务器系统>,当时的考虑如今看来有诸多的细节点没有考虑到:1.CMS是单点部署 ...

  3. 2017NOIP游记 (格式有点炸)

    NOIP游记 作者:一只小蒟蒻 时间可真快呀!还记得我第一次接触信息竞赛时,hello world都要调好久,不知不觉就考完了2017noip,自我感觉良好(虽然还是有很多不足). 这两个月的闭关,让 ...

  4. 解析json的方式

    一.Javascrip操作json 原始方式: var str1 = '{ "name": "jacun", "addr": "b ...

  5. meteor ---快速启动meteor和 mongodb 方法--MAC

    c:~ lsg$ cat .bash_profile c:~ lsg$ vim .bash_profile --- 修改这个文件 按i 修改文件 shift+Z+Z 保存修改内容 添加如下代码 exp ...

  6. [NOIP2011提高组day1]-3-mayan游戏

    3.Mayan 游戏 (mayan.cpp/c/pas) [问题描述] Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个 7行 5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...

  7. 【 spring配置文件详解】

    转自: http://book.51cto.com/art/201004/193743.htm Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的 ...

  8. Protobuf入门实例

    Protobuf是一个灵活.高效.结构化的数据序列化框架,相比于XML等传统的序列化工具, 它更小.更快.更简单.Protobuf支持数据结构化一次就可以到处使用,甚至是跨语言使用,通过代码生成工具可 ...

  9. CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network

    from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...

  10. hdu-5596 GTW likes gt(模拟+优先队列)

    题目链接: GTW likes gt  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Othe ...