ShaderForge学习笔记:Lighting(灯光信息)

发表于2018-07-17
评论0 4.1k浏览
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

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引