标签:class spec UNC 计算 multi 像素 ima 编译 reflect
内置常用的三种输出数据格式:
//Standard output structure of surface shaders is this: struct SurfaceOutput{ fixed3 Albedo; // diffuse color fixed3 Normal; // tangent space normal, if written fixed3 Emission; half Specular; // specular power in 0..1 range fixed Gloss; // specular intensity fixed Alpha; // alpha for transparencies }; //Unity 5版本以上, 支持physically based lighting models. struct SurfaceOutputStandard{ fixed3 Albedo; // base (diffuse or specular) color fixed3 Normal; // tangent space normal, if written half3 Emission; half Metallic; // 0=non-metal, 1=metal half Smoothness; // 0=rough, 1=smooth half Occlusion; // occlusion (default 1) fixed Alpha; // alpha for transparencies }; //镜面高光输出 struct SurfaceOutputStandardSpecular{ fixed3 Albedo; // diffuse color fixed3 Specular; // specular color fixed3 Normal; // tangent space normal, if written half3 Emission; half Smoothness; // 0=rough, 1=smooth half Occlusion; // occlusion (default 1) fixed Alpha; // alpha for transparencies };
0x01 Surface Shader compile directives
Surface shader编码在CGPROGRAM...ENDCG块内,
拆分#pragma surface surfaceFunction lightmodel [optional params]
蓝色为必要参数:require params
surfaceFunction | 格式void surf (Input IN, inout SurfaceOutput o),Input自定义结构常必须包含纹理坐标和其他自需变量 | ||||||
lightModel |
|
surfaceFunction Input参数详解
struct Input { //纹理坐标必须带uv或uv2前缀,必须! float2 uv_MainTex; //---以下为可选--- float3 viewDir; //视图方向为了计算时差、边缘光照等效果,Input需要包含视图方向 float4 color; //每个顶点颜色值 float4 screenPos; //屏幕空间位置,为了获得反射效果 float3 worldPos; //世界坐标空间 float3 worldRefl; //世界空间反射向量,surface shader不能写入o.Normal参数 float3 worldNormal;//世界空间法向量,surface shader不能写入o.Normal参数
//世界坐标反射向量,surface shader必须写入o.Normal参数 //基于逐像素法线贴图获得反射向量,请使用WorldReflectionVector(IN,o.Normal) float3 worldRefl;INTERNAL_DATA;
//世界坐标法线向量,surface shader必须写入o.Normal参数 //基于逐像素法线贴图获得反射向量,请使用WorldReflectionVector(IN,o.Normal) float3 worldNormal;INTERNAL_DATA; }
橙色为可选参数:optional params
|
|||||||||||||||||||
0x02 Surface Shader Light Model
0x03 Example
标签:class spec UNC 计算 multi 像素 ima 编译 reflect
原文地址:https://www.cnblogs.com/baolong-chen/p/11624840.html