shader实例(八)渲染路径RenderingPath
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的更多相关文章
- [Unity Shader笔记]渲染路径--Forward渲染路径
[Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...
- RenderingPath 渲染路径
http://blog.csdn.net/lichaoguan/article/details/42554821 RenderingPath 渲染路径 Deferred Lighting 延时光照 延 ...
- Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
简述 Unity supports different Rendering Paths. You should choose which one you use depending on your g ...
- 解读Unity中的CG编写Shader系列八(多光源漫反射)
转自http://www.itnose.net/detail/6117338.html 前文中完成最简单的漫反射shader只是单个光源下的漫反射,而往往场景中不仅仅只有一个光源,那么多个光源的情况下 ...
- 前向渲染路径细节 Forward Rendering Path Details
正向渲染路径细节 Forward Rendering Path Details Forward Rendering path renders each object in one or more pa ...
- 渲染路径-Deferred Lighting 延时光照
http://blog.csdn.net/heyuchang666/article/details/51564954 注意: 最后3个步骤注意下 延时光照是有着最高保真度的光照和阴影的渲染路径.如果你 ...
- 渲染路径-u3d渲染路径比较
Unity支持不同的渲染路径.应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个.不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影. 项目所使用的渲染路径在Player S ...
- 正向渲染路径细节 Forward Rendering Path Details
http://www.ceeger.com/Components/RenderTech-ForwardRendering.html This page describes details of For ...
- 【OpenGL】Shader实例分析(七)- 雪花飘落效果
转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如 ...
随机推荐
- oracle 的sys 和 system 账号
sys 和 system 账号有啥区别?一直以来懵懵懂懂,只想当然的认为就是权限大小不一样. 但是,它们都是管理员? 现在,我知道有一个区别了: [sys]只能用sysdba身份登录(也许还有syso ...
- 【BZOJ1975】[Sdoi2010]魔法猪学院 A*
[BZOJ1975][Sdoi2010]魔法猪学院 Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪 ...
- Spring注入service为null另类解决办法 工具类 一般类 静态 非controller
系统为SpringMVC框架,在开发的过程中有一些工具类需要调用下由spring管理的service层.但是一进注入不进来,报null异常: 在尝试了网上的一系列方法后,还是没有解决.网上的解决方法主 ...
- The server must be started under an unprivileged user ID to prevent
mysql8 PostgreSQL [root@test local]# postgres -D /usr/local/pgsql/data"root" execution of ...
- EL表达式 介绍
EL表达式 1.EL简介 1)语法结构 ${expression} 2)[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一 ...
- delphi android 录像(使用了JMediaRecorder,MediaRecorder的使用方法)
delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...
- git基本操作---持续更新(2017-08-11)
git 强制push $ git push -u origin master -f 查看本地标签 $ git tag 打标签并添加备注 $ git tag 20170811 -m"图片保存多 ...
- Machine Learning in Action(1) K-近邻
机器学习分两大类,有监督学习(supervised learning)和无监督学习(unsupervised learning).有监督学习又可分两类:分类(classification.)和回归(r ...
- Anroid事件分发
因为最近因个人原因离职,面试的时候,有人问到了Android中事件分发机制的过程,因为忘得差不多了,没答好,所以回来后,想写了个Demo,重新复习一遍. 一般来说,Android的组件其实可以分为两类 ...
- codeforces 31C Schedule 解题报告
题目链接:http://codeforces.com/problemset/problem/31/C 题目意思:给出 n 个 lessons 你,每个lesson 有对应的 起始和结束时间.问通过删除 ...