ShaderForge学习笔记:Lighting(灯光信息)
发表于2018-07-17
ShaderForge是一款为Unity所用的、基于节点操作的Shader插件。所以这个ShaderForge学习笔记系列希望可以帮到大家。这一篇就来介绍下Lighting(灯光信息)的使用。
ShaderForge 灯光信息

Ambient Light
1. 官方说明

输出着色器正在渲染的场景的环境光。
2. 节点输出
环境光颜色四维向量

3. Unity Shader获取AmbientLight
built-in变量UNITY_LIGHTMODEL_AMBIENT,使用时#include “UnityCG.cginc”:
float4 ambient = UNITY_LIGHTMODEL_AMBIENT;
Half Dir
1. 官方说明

输出half-direction。half-direction是视线向量和灯光向量的中间向量,通常在blinn-phong镜面模型中使用的。
2. 节点输出
Half-Direction三维向量

3. Unity Shader获取halfDirection
float3 halfDirection = normalize(viewDirection+lightDirection);
Light Atten
1. 官方说明

输出的探照灯的衰减。这个节点包含光衰减和阴影信息。
2. 节点输出
灯光衰减值,一个范围为[0,1]的一维数值
常用于与灯光颜色相乘,乘法结果作为漫反射的灯光颜色
3. Unity Shader中获取Light Atten
Build-in变量 ,使用时#include AutoLight.cginc”
... float4 frag(VertexOutput i) : COLOR { float attenuation = LIGHT_ATTENUATION(i); ... }
关于灯光衰减的原理可以参考冯乐乐女神的:【常见问题】dot(lightCoord, lightCoord).rr和光源衰减的相关问题
Light Color
1. 官方说明

输出当前渲染的灯光的颜色。
2. 节点输出
灯光颜色RGBA四维向量值,A值总是为1
3. Unity Shader获取LightColor
Built-in变量_LightColor0
float4 lightColor = _LightColor0;
LightDirection
1. 官方说明

输出当前渲染的灯光的方向(注意:这个方向是从物体到光源)
2. 节点输出
物体位置到光源位置的单位三维向量

3.Unity Shader获取LightDirection
float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
Light Position
1. 官方说明

输出当前渲染的灯光的位置。
[Pnt]输出1说明当前的光源是点光,否则输出为0。
2. 节点输出
灯光位置的三维数据XYZ

3. Unity Shader获取LightPosition
build-in变量_WorldSpaceLightPos0,使用时#include “UnityCG.cginc”
float3 lightPosition = _WorldSpaceLightPos0.xyz;
来自:https://blog.csdn.net/v_xchen_v/article/details/79088182