U3D-- U3d Shader的一些知识

xiaoxiao2021-02-28  128

Tags中的RenderType:

Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。 Transparent:用于半透明着色器(透明着色器、粒子着色器、字体着色器、地形额外通道的着色器)。 TransparentCutout: 蒙皮透明着色器(Transparent Cutout,两个通道的植被着色器)。 Background: Skybox shaders. 天空盒着色器。 Overlay: GUITexture, Halo, Flare shaders. 光晕着色器、闪光着色器。 TreeOpaque: terrain engine tree bark. 地形引擎中的树皮。 TreeTransparentCutout: terrain engine tree leaves. 地形引擎中的树叶。 TreeBillboard: terrain engine billboarded trees. 地形引擎中的广告牌树。 Grass: terrain engine grass. 地形引擎中的草。 GrassBillboard: terrain engine billboarded grass. 地形引擎何中的广告牌草。

输入参数 uv_MainTex: uv float3 viewDir -- 视图方向( view direction)值。为了计算视差效果(Parallax effects),边缘光照(rim lighting)等,需要包含视图方向( view direction)值。 float4 with COLOR semantic -- 每个顶点(per-vertex)颜色的插值。

float4 screenPos -- 屏幕空间中的位置。 为了反射效果,需要包含屏幕空间中的位置信息。比如在Dark Unity中所使用的 WetStreet着色器。

float3 worldPos -- 世界空间中的位置。

float3 worldRefl -- 世界空间中的反射向量。如果表面着色器(surface shader)不写入法线(o.Normal)参数,将包含这个参数。 请参考这个例子:Reflect-Diffuse 着色器。

float3 worldNormal -- 世界空间中的法线向量(normal vector)。如果表面着色器(surface shader)不写入法线(o.Normal)参数,将包含这个参数。

float3 worldRefl; INTERNAL_DATA -- 世界空间中的反射向量。如果表面着色器(surface shader)不写入法线(o.Normal)参数,将包含这个参数。为了获得基于每个顶点法线贴图( per-pixel normal map)的反射向量(reflection vector)需要使用世界反射向量(WorldReflectionVector (IN, o.Normal))。请参考这个例子: Reflect-Bumped着色器。

float3 worldNormal; INTERNAL_DATA -- 世界空间中的法线向量(normal vector)。如果表面着色器(surface shader)不写入法线(o.Normal)参数,将包含这个参数。为了获得基于每个顶点法线贴图( per-pixel normal map)的法线向量(normal vector)需要使用世界法线向量(WorldNormalVector (IN, o.Normal))。

SurfaceOutput参数:

struct SurfaceOutput {    

    half3 Albedo;      // 该像素的反射率,反应了像素的基色        half3 Normal;     // 该像素的法线方向       half3 Emission;   // 该像素的自发光颜色,使得即便没有光照也可以物体本身也可以发出光       half Specular;     // 该像素的高光指数         half Gloss;         // 该像素的高光光滑度,值越大高光反射越清晰,反之越模糊         half Alpha;         // 该像素的不透明度   

};

CG内置函数:  参见 博客   
转载请注明原文地址: https://www.6miu.com/read-18278.html

最新回复(0)