Unity3D Shader :surface Shader

Propertie

                _Color("Color", Color) = (1,1,1,1)//主颜色
_MainTex("Albedo (RGB)", 2D) = "white" {}//主纹理
_Cutoff("Alpha Cutoff",Range(0.0,1.0)) = 0.5//Alpha剔除度
_Glossiness("Smoothness", Range(0,1)) = 0.5//光滑.光泽度
_Metallic("Metallic", Range(0,1)) = 0.0//金属性
_MetallicGlossMap("Metallic",2D) = "white"{}//金属光泽纹理图
_BumpScale("Scale",Float) = 1.0 //凹凸的尺度
_BumpMap("Normal Map",2D) = "bump"{}//法线贴图
_OcclusionStrength("Strength",Range(0.0,1.0)) = 1.0//遮罩强度
_OcclusionMap("Occlusion",2D) = "white"{}//遮罩纹理图
_EmissionColor("Color",Color) = (0,0,0)//自发光颜色
_EmissionMap("Emission",2D) = "white"{}//自发光纹理图
_DetailMask("Detail Mask",2D) = "white"{}//细节掩膜图
_DetailAlbedoMap("Detail Albedo x2",2D) = "gray"{}//细节纹理图
_DetailNormalMapScale("Scale",Float) = 1.0;//细节法线贴图尺度
_DetailNormalMap("Normal Map", 2D) = "bump"{}//细节法线贴图
_SpecColor("Specular Color", Color) = (0.5, 0.5, 0.5, 1)//高光反射颜色
_Shininess("Shininess", Range(0.0, 1.0)) = 1.0//加亮时的光泽度

struct Input

多个贴图的uv坐标,名字必须符合格式uv+贴图名。例如 float2 uv_MainTex
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)参数,将包含这个参数。

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


struct surfaceOutput {
half3 Albedo 光源反射颜色
half3 Normal 法线方向
half3 Emission  自发光
half3 Specular  高光反射的系数
half3 Gloss 高光反射强度

half3 Alpha 透明度


inline float4 LightingTest(SurfaceOutput s, fixed3 lightDir, fixed atten)  //定义光照模型
{
float difLight = (max(0, dot(s.Normal), lightDir));
float col;
col.rgb = s.Albedo*_LightColor0.rgb*(difLight*atten * 2);
col.a = s.Alpha;
return col;
}

猜你喜欢

转载自blog.csdn.net/weixin_42452001/article/details/80681460