Shader:常用結構體

weixin_34146805發表於2017-04-05

光照模型結構體

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

};

In Unity 5, surface shaders can also use physically based lighting models. Built-in Standard and StandardSpecular lighting models (see below) use these output structures respectively:

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

};

引入標頭檔案後可使用的結構體

#include“UnityCG.cginc”

struct appdata_base {

float4 vertex : POSITION;

float3 normal : NORMAL;

float4 texcoord : TEXCOORD0;

};

struct appdata_tan {

float4 vertex : POSITION;

float4 tangent : TANGENT;

float3 normal : NORMAL;

float4 texcoord : TEXCOORD0;

};

struct appdata_full {

float4 vertex : POSITION;

float4 tangent : TANGENT;

float3 normal : NORMAL;

float4 texcoord : TEXCOORD0;

float4 texcoord1 : TEXCOORD1;

float4 texcoord2 : TEXCOORD2;

float4 texcoord3 : TEXCOORD3;

#if defined(SHADER_API_XBOX360)

half4 texcoord4 : TEXCOORD4;

half4 texcoord5 : TEXCOORD5;

#endif

fixed4 color : COLOR;

};

相關文章