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 光照随笔的更多相关文章

  1. Unity ShaderLab学习总结

    http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编 ...

  2. Unity Shaderlab: Object Outlines 转

    转 https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/ Unity Shader ...

  3. unity ShaderLab 编辑器——sublime text 2

    sublime text 2,支持unity shader关键字高亮显示,智能提示功能.这个脚本编辑器的售价是70美元,不过作者很厚道地给了我们永久的免费试用期. 1)下载sublime text 2 ...

  4. Unity ShaderLab 学习笔记(一)

    因为项目的问题,有个效果在iOS上面无法实现出来- 因为shader用的HardSurface的,在android上面跑起来没有问题- 以为在iOS上也不会有问题,但是悲剧啊,技能效果一片漆黑- 而且 ...

  5. unity shaderlab Blend操作

    原文链接: http://www.tiankengblog.com/?p=84 Blend混合操作是作用于在所有计算之后,是Shader渲染的最后一步,进行Blend操作后就可以显示在屏幕上.shad ...

  6. Unity——ShaderLab实现玻璃和镜子效果

    在这一篇中会实现会介绍折射和反射,以及菲尼尔反射:并且实现镜子和玻璃效果: 这里和之前不同的地方在于取样的是一张CubeMap: demo里的cubemap使用的一样,相机所在位置拍出来的周围环境图: ...

  7. Unity 过度光照贴图

    背景:开关窗帘过程,让环境在亮和暗之间过度 事先烘培出亮.暗两张Lighting map.然后代码实现,窗帘开关由动作实现,而代码中通过动作执行进度来过度两张Lighting map void OnA ...

  8. Unity——ShaderLab基础

    1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在in ...

  9. Unity 5 中的全局光照技术详解

    貌似是某位好人翻译的 https://unity3d.com/cn/learn/tutorials/topics/graphics/unity-5-lighting-and-rendering#rd? ...

随机推荐

  1. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Zhuo' did not find a matching property.

    eclipse里面配置tomcat方法:window -- show view -- other -- 找到servers 点击finish 就会出现servers选项卡在选项卡中右键鼠标 new - ...

  2. SAP RFC 的介绍

    第一部分 RFC技术 什么是RFC? RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议.简单地说,RFC过程就是系统调用当前系统外的 ...

  3. API的理解和使用——列表类型的命令

    列表类型的命令及对应的时间复杂度 操作 命令 功能 时间复杂度 添加 rpush key value [value ...] 向右插入 O(k),k是元素个数 lpush key value [val ...

  4. 更新TP-LINK路由器的外网IP到花生壳动态IP解析

    ------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...

  5. 20145239杜文超 《Java程序设计》第1周学习总结

    20145239<Java程序设计>第1周学习总结 教材学习内容总结 第一周. 通过教材简单的了解了java的历史.因为之前看过视频,所以有一个大致明了的认识. 识记了Java三大平台:J ...

  6. IC卡、ID卡、M1卡、射频卡的区别是什么【转】

    本文转载自:https://www.cnblogs.com/najifu-jason/p/4122741.html IC卡.ID卡.M1卡.射频卡都是我们常见的一种智能卡,但是很多的顾客还是不清楚IC ...

  7. SDUT OJ 2616 简单计算

    简单计算 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 某天,XX 给YY 出了一道题,题目是: 给出n 个十进制的数,找出这n ...

  8. [转]aliyun阿里云Maven仓库地址——加速你的maven构建

    原文链接:http://www.cnblogs.com/geektown/p/5705405.html maven仓库用过的人都知道,国内有多么的悲催.还好有比较好用的镜像可以使用,尽快记录下来.速度 ...

  9. 单页导航菜单视觉设计HTML模板

    单页导航菜单视觉设计HTML模板,视觉,企业,html,单页,单页导航菜单视觉设计HTML模板是一款磨砂背景的大气时尚HTML设计网页模板 http://www.huiyi8.com/moban/

  10. openfire插件开发环境

    创建java工程 SamplePlugin: package com.hoo.server.plugin; import java.io.File; import org.jivesoftware.o ...