上一篇记录了shader常用函数和变量,这篇记录一些光照计算时常用函数和变量 
1、内置的光照变量

_LightColor0    float4  //该Pass处理的逐像素光源的颜色

_WorldSpaceLightPos0    float4  //_WorldSpaceLightPos0.xyz是该Pass处理的逐像素光源的位置。如果该光源是平行光,那么_WorldSpaceLightPos0.w是0,其他光源类型是1

_LightMatrix0   float4x4    //从世界空间到光源空间的变换矩阵,可以用于采样cookie和光强衰减纹理

unity_4LightPosX0,unity_4LightPosY0,unity_4LightPosZ0   float4  //仅用于Base Pass,前4个非重要的点光源在世界空间中的位置

unity_4LightAtten() float4  //仅用于Base Pass, 存储了前4个非重要的点光源的衰减因子

unity_LightColor    half4[4]    //仅用于Base Pass,存储了前4个非重要的点光源的颜色

2 、LightMode标签支持的渲染路径设置选项

Always  //不管使用哪种渲染路径,该Pass总会被渲染,但是不会计算任何光照
ForwardBase //用于前向渲染,该Pass会计算环境光,最重要的的平行光,逐顶点/SH光源和Lightmaps
ForwardAdd //用于前向渲染,该Pass会计算额外的逐像素光源,每个Pass对应一个光源
Deferred //用于延迟渲染,该Pass会渲染G缓冲(G_buffer)
ShadowCaster //把物体的深度信息渲染到阴影映射纹理或一张深度纹理中
PrepassBase //用于遗留延迟渲染,该Pass会渲染法线和高光反射的指数部分
PrepassFinal //用于遗留延迟渲染,该Pass通过合并纹理、光照、自发光来渲染得到的最后的颜色
Vertex,VertexLMRGBM和VertexLM //用于遗留的顶点照明渲染

3、顶点照明渲染路径中可以使用的内置变量

unity_LightColor    half4[8]     //光源颜色

unity_LightPosition float4[8]   //xyz分量是视角空间中的光源位置,如果光源是平行光,那么z分量值为0,其他光源类型z分量值为1

unity_LightAtten    half4[8]    //光源衰减因子,如果光源是聚光灯,x分量是cos(spotAngle/2),y分量是1/cos(spotAngle/4);如果是其他光源,x分量是-1,y分量是1,z分量是衰减的平分,w分量是光源范围开根号的结果

unity_SpotDirection float4[8]   //如果光源是聚光灯的话,值为视角空间的聚光灯的位置,如果是其他类型的光源,值为(0,0,1,0)

4、顶点照明渲染路径中可以使用的内置函数

float3 ShadeVertexLights(float4 vertex,float normal)     //输入模型空间中的顶点位置和法线,计算四个顶点光源的光照以及环境光

float3 ShadeVertexLightsFull(float4 vertex, float3 normal, int lightCount, bool spotLig

Unity3D -- shader光照常用函数和变量的更多相关文章

  1. Unity3D -- shader常用函数和变量

    最近在学习Unity Shader,写Shader的时候总是忘记Unity为我们提供的函数.变量怎么写的,这里整理一下,方便自己查阅,也提供给网友,学习Shader不易. 1.函数 float3 Wo ...

  2. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  3. OC常用函数及变量

    1.OC常用的的函数及变量 (1)算术函数 [算术函数] 函数名 说明 int rand() 随机数生成.(例)srand(time(nil)); //随机数初期化int val = rand()P; ...

  4. WEBservice的浏览器及元素的常用函数及变量整理总结 (selenium )

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  5. Unity3D Shader 内置函数

    Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...

  6. 【Unity Shader】---常用帮助函数、结构体和全局变量

    [Unity Shader]---常用帮助函数.结构体和全局变量 一.内置包含文件 Unity中有类似于C++的包含文件.cginc,在编写Shader时我们可以使用#include指令把这些文件包含 ...

  7. 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨)  ...

  8. salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用

    上一篇介绍VF中常用的变量,此篇主要内容为VF页面可以直接使用的函数,主要包括Date相关函数,Text相关函数,Information相关函数以及logic相关函数,其他相关函数,比如math相关函 ...

  9. R的变量类型和常用函数

    一.R的变量类型 也可以说是数据存储方式,有: Vector: 一维阵列 Matrics: 二维阵列,其中所有元素是同一数据类型. factor: 种类变量,可使用levels函数来规定种类变量的各级 ...

随机推荐

  1. BZOJ 3943 [Usaco2015 Feb]SuperBull:最大生成树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3943 题意: 有n只队伍,每个队伍有一个编号a[i]. 每场比赛有两支队伍参加,然后选一支 ...

  2. node.js+express+jade系列二:rotue路由的配置

    页面的访问最常见的是get和post两种,无论是get请求还是post请求express自动判断执行app.get或app.post 1:app.get(名称,路径)或app["get&qu ...

  3. POJ 1258 Agri-Net(Prim算法)

    题意:n个农场,求把所有农场连接起来所需要最短的距离. 思路:prim算法 课本代码: //prim算法 #include<iostream> #include<stdio.h> ...

  4. 封装一个简单的Hibernate SessionFactory

    封装Hibernate框架中的session工厂   ,方便很多,免去了很多重复无用的代码 package com.maya.test; import org.hibernate.*; import ...

  5. OpenAL播放pcm或wav数据流-windows/ios/android(一)

    OpenAL播放pcm或wav数据流-windows/iOS/Android(一)   最近在研究渲染问题,本文采用openal做pcm和wav数据流播放,并非本地文件,demo是windows的,i ...

  6. ACM学习历程—BZOJ2956 模积和(数论)

    Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ...

  7. BZOJ1636&&1699:[USACO2007JAN]Balanced Lineup

    浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...

  8. bzoj 1070 修车 —— 费用流

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1070 需要考虑前面修的车对后面等待的车造成的时间增加: 其实可以从每个人修车的顺序考虑,如果 ...

  9. C#SqlDataReader的用法

    string sqljn = "select [序号],[品名],[电压等级],[单位],[型号],[规格],[红本价格] FROM [book].[dbo].[View_wjprice]& ...

  10. Ruby迭代器(Iterator)

    简单的讲,一个迭代器就是一个能接受代码块的方法.当初为了进行迭代操作而设置了带块方法,现在很多时候仍然称它为迭带器. 可实际上,早期版本的 Ruby 将使用代码块的方法称为迭代器,因为它们就是被设计来 ...