Unity ShaderLab 光照随笔
unity camera默认3种渲染路径,unity5.50里面有4种
camera Rendering Path
1 vertexLit(逐顶点,一般在vert中处理)
2 forward (前向渲染,简单说就是只渲染影响力比较大的几个光源)
3 Deferred(延迟渲染,逐像素,一般在frag中处理,目前已知就是surface里默认的光照处理)
shader LightMode
1 Vertex(渲染vertex光源)
2 ForwardBase(用来渲染场景中最重要光源,pixel平行光)
3 ForwardAdd(用来渲染场景中其他pixel光源)
4 PrePassBase(以后补充)
5 PrePassFinl(以后补充)
6 Always(默认LightMode就是Always)
内置存取光源变量
(所有这些变量都可能存在无效数据,出于效率考虑,当RenderPath切换时,无用的变量不会立刻清除)
位置相关
前三位是光源位置如 _WorldSpaceLightPos0.xyz
最后一位比如_WorldSpaceLightPos0.w如果是0代表平行光(向量),1代表点光源(点)
具体可以看下齐次坐标
1 float4 _WorldSpaceLightPos0
2 float4 unity_4LightPosX0,unity_4LightPosY0,unity_4LightPosZ0
3 float4 unity_LightPositon[4]
颜色相关
1 floar4 _LightColor0
2 float4 unity_4LightAtten
3 float4 unity_LightColor[4]
渲染路径与LightMode组合时shader的执行情况
RenderPath LightMode
VertexLit 只有Vertex的shader生效,Always生效,同时有Vertex和Always时都生效,顺序与代码顺序一致
Forward Deferred不生效,forward不生效,vertex在没有forward的时候生效,单独Always生效,
针对forward的Always生效(顺序同代码顺序),针对DeferredAlways不生效
Deferred Deferred生效,Forward没有Deferred时生效,vertex在没有deferred和forward时生效,Always不会执行
渲染路径与LightMode组合时光源变量的情况
VertextLit时
unity_LightPositon[4]和unity_LightColor[4]有vertex光源数据 其中position是CameraSpace
Forward时
1 unity_LightPositon[4],unity_LightColor[4]在forward中不包含有效数据
2 如果只有ForwardBase(没有ForwardAdd)
_WorldSpaceLightPos0,_LightColor0中存储最重要平行pixel光源位置颜色(如果没有pixel平行光_WorldSpaceLightPos0存储pixel点光源位置,_LightColor0中无数据)
unity_4LightPos[X,Y,Z]0和unity_LightColor[4]中包含pixel点光源数据(不含平行光)
3 如果同时有ForwardBase和ForwardAdd
对于ForwardBase
_WorldSpaceLightPos0,_LightColor0作用不变
unity_4LightPos[X,Y,Z]0和unity_LightColor[4]只包含Vertex光源数据
对于ForwardAdd
ForwardAdd执行次数取决于除主要pixel光源外pixel光源的个数
每多一个pixel光源就多执行一次ForwardAdd
这些多出的pixel光源数据都存在_WorldSpaceLightPos0,_LightColor0中
在ForwardAdd中unity_4LightPos[X,Y,Z]0不存在有效数据
Unity ShaderLab 光照随笔的更多相关文章
- Unity ShaderLab学习总结
http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编 ...
- Unity Shaderlab: Object Outlines 转
转 https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/ Unity Shader ...
- unity ShaderLab 编辑器——sublime text 2
sublime text 2,支持unity shader关键字高亮显示,智能提示功能.这个脚本编辑器的售价是70美元,不过作者很厚道地给了我们永久的免费试用期. 1)下载sublime text 2 ...
- Unity ShaderLab 学习笔记(一)
因为项目的问题,有个效果在iOS上面无法实现出来- 因为shader用的HardSurface的,在android上面跑起来没有问题- 以为在iOS上也不会有问题,但是悲剧啊,技能效果一片漆黑- 而且 ...
- unity shaderlab Blend操作
原文链接: http://www.tiankengblog.com/?p=84 Blend混合操作是作用于在所有计算之后,是Shader渲染的最后一步,进行Blend操作后就可以显示在屏幕上.shad ...
- Unity——ShaderLab实现玻璃和镜子效果
在这一篇中会实现会介绍折射和反射,以及菲尼尔反射:并且实现镜子和玻璃效果: 这里和之前不同的地方在于取样的是一张CubeMap: demo里的cubemap使用的一样,相机所在位置拍出来的周围环境图: ...
- Unity 过度光照贴图
背景:开关窗帘过程,让环境在亮和暗之间过度 事先烘培出亮.暗两张Lighting map.然后代码实现,窗帘开关由动作实现,而代码中通过动作执行进度来过度两张Lighting map void OnA ...
- Unity——ShaderLab基础
1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在in ...
- Unity 5 中的全局光照技术详解
貌似是某位好人翻译的 https://unity3d.com/cn/learn/tutorials/topics/graphics/unity-5-lighting-and-rendering#rd? ...
随机推荐
- 一文读懂实用拜占庭容错(PBFT)算法
在区块链中有一个著名的问题,就是拜占庭将军问题,对于拜占庭将军问题,网上的文章已经多得不要不要了,今天和大家分享的是其相关的实用拜占庭容错算法,一起来看看吧. 实用拜占庭容错算法(Practi ...
- oracle-jforum论坛链接Oracle
问题描述 jforum论坛链接Oracle jforum论坛链接Oracle数据库 论坛主题页面不显示 是权限引起的吗 解决方案 页面不显示,你需要看一下错误,估计是配置不对引起的 参考一下这个 jf ...
- 【Java线程】锁机制:synchronized、Lock、Condition(转)
原文地址 1.synchronized 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility). 1.1 原子性 ...
- 原生js基础学习--正则RegExp
转义字符"\" 使用反斜杠之后,会强制的将"\"之后的字符取消掉原来的意思转换成文本, 转义符号不会输出 var str= "abc\"de ...
- 剑指Offer:链表中环的入口节点【23】
剑指Offer:链表中环的入口节点[23] 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 题目分析 第一步确定链表中是否包含环,怎么确定呢?我们定义两个指针橙和 ...
- git功能速查
http://gitbook.liuhui998.com/index.html git rebase:在本地变基.将本地所有的修改应用到另一个分支上 git merge:在本地合并分支 git bra ...
- bzoj5213: [Zjoi2018]迷宫
好题!话说省选的都开始构造了吗 由于有K的倍数的限制所以不妨取模,先建K个点表示0~K-1这些数,第i个点向[i*m,i*m+m]建边.不难发现这是合法的但不一定是最优的 考虑合并等价的点,首先从直观 ...
- win下发现两个有用的快捷键
调出命令行工具:win+x然后a.默认是cmd的管理员模式,可以改成powershell. 从当前目录打开命令行:shift + 鼠标右键
- VS调试的问题
调试Vs,使用本地IIS也不行,使用外部服务器也不行,最后运行VS2013以管理员身份就可以了
- java高级特性增强
第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...