TheLudGamer 发表于 2021-4-3 10:30

一、Shader基础:7、顶点里的基本操作

一、空间变换

VertexOutput vert (VertexInput v) {    VertexOutput o = (VertexOutput)0; // 新建一个输出结构    o.pos = UnityObjectToClipPos( v.vertex ); // 变换顶点信息 并将其塞给输出结构    o.nDirWS = UnityObjectToWorldNormal(v.normal); // 变换法线信息 并将其塞给输出结构    return o; // 将输出结构 输出}

[*]1、顶点位置->齐次裁剪空间
o.pos = UnityObjectToClipPos:将模型空间下的顶点转换到齐次裁剪空间。可以理解为由模型顶点信息换算而来的顶点屏幕位置。
o.nDirWS = UnityObjectToWorldNormal:将模型空间下的法线转换到世界空间(已归一化)。
[*]2、顶点位置->世界空间
o.posWS = mul(unity_ObjectToWorld, v.vertex);
投影


TRANSFER_VERTEX_TO_FRAGMENT(o)增加投影。需要同时在输出结构增加LIGHTING_COORDS(0,1) ,并且增加库文件。
include "AutoLight.cginc" // 使用Unity投影必须包含这两个库文件

include "Lighting.cginc" // 同上
页: [1]
查看完整版本: 一、Shader基础:7、顶点里的基本操作