Shader "Custom/LODShader" {
//绑定到编辑器属性面板上的变量;
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {} //漫反射的颜色值
_Glossiness ("Smoothness", Range(0,1)) = 0.5 //粗糙/光滑
_Metallic ("Metallic", Range(0,1)) = 0.0 //金属 0=非金属 1=金属
}
SubShader { //子着色器
Tags { "RenderType"="Opaque" } //shader标签=队列渲染
//设置subShader子着色器LOD值,Shader脚本每次只会根据情况来选择一个可执行的SubShader子着色器
// (也就是一直找到第一个<= Shader脚本.maximumLOD的 那个SubShader子着色器执行,如果都没有 就“降级处理”
LOD 600
CGPROGRAM //CG代码开始
#pragma surface surf Standard fullforwardshadows //定义名为:surf表面着色器 Standard光照模型 Options可选参数
#pragma target 3.0 //使用着色器模型3.0目标,以获得更好的照明
sampler2D _MainTex;//为了使用属性块内的属性 命名1个同名的_MainTex(2d纹理图)
struct Input { //定义 表面着色器"Input结构体"
float2 uv_MainTex;//uv_纹理图片名称
};
half _Glossiness; //为了使用属性块内的属性 命名1个同名的_Glossiness
half _Metallic; //为了使用属性块内的属性 命名1个同名的_Metallic
fixed4 _Color; //为了使用属性块内的属性 命名1个同名的_Color
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
//表面着色的入口函数: void 表面着色器名称(1.表面着色器"Input结构体" 2.表面着色器"SurfaceOutputStandard结构体")
void surf (Input IN, inout SurfaceOutputStandard o) {
//fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;//获得纹理颜色
o.Albedo = fixed3(1.0,0.0,0.0); // _Color.rgb;//赋值颜色
//o.Metallic = _Metallic; //赋值 金属
//o.Smoothness = _Glossiness;//赋值 粗糙/光滑
//o.Alpha = c.a;//透明度
}
ENDCG//CG代码结束
}
SubShader { //子着色器
Tags { "RenderType"="Opaque" } //shader标签=队列渲染
//设置subShader子着色器LOD值,Shader脚本每次只会根据情况来选择一个可执行的SubShader子着色器
// (也就是一直找到第一个<= Shader脚本.maximumLOD的 那个SubShader子着色器执行,如果都没有 就“降级处理”
LOD 500
CGPROGRAM //CG代码开始
#pragma surface surf Standard fullforwardshadows //定义名为:surf表面着色器 Standard光照模型 Options可选参数
#pragma target 3.0 //使用着色器模型3.0目标,以获得更好的照明
sampler2D _MainTex;//为了使用属性块内的属性 命名1个同名的_MainTex(2d纹理图)
struct Input { //定义 表面着色器"Input结构体"
float2 uv_MainTex;//uv_纹理图片名称
};
half _Glossiness; //为了使用属性块内的属性 命名1个同名的_Glossiness
half _Metallic; //为了使用属性块内的属性 命名1个同名的_Metallic
fixed4 _Color; //为了使用属性块内的属性 命名1个同名的_Color
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
//表面着色的入口函数: void 表面着色器名称(1.表面着色器"Input结构体" 2.表面着色器"SurfaceOutputStandard结构体")
void surf (Input IN, inout SurfaceOutputStandard o) {
//fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;//获得纹理颜色
o.Albedo = fixed3(0.0,1.0,0.0); // _Color.rgb;//赋值颜色
//o.Metallic = _Metallic; //赋值 金属
//o.Smoothness = _Glossiness;//赋值 粗糙/光滑
//o.Alpha = c.a;//透明度
}
ENDCG//CG代码结束
}
SubShader {//子着色器
Tags { "RenderType"="Opaque" } //shader标签=队列渲染
//设置subShader子着色器LOD值,Shader脚本每次只会根据情况来选择一个可执行的SubShader子着色器
// (也就是一直找到第一个<= Shader脚本.maximumLOD的 那个SubShader子着色器执行,如果都没有 就“降级处理”
LOD 400
CGPROGRAM //CG代码开始
#pragma surface surf Standard fullforwardshadows //定义名为:surf表面着色器 Standard光照模型 Options可选参数
#pragma target 3.0 //使用着色器模型3.0目标,以获得更好的照明
sampler2D _MainTex;//为了使用属性块内的属性 命名1个同名的_MainTex(2d纹理图)
struct Input { //定义 表面着色器"Input结构体"
float2 uv_MainTex;//uv_纹理图片名称
};
half _Glossiness; //为了使用属性块内的属性 命名1个同名的_Glossiness
half _Metallic; //为了使用属性块内的属性 命名1个同名的_Metallic
fixed4 _Color; //为了使用属性块内的属性 命名1个同名的_Color
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
//表面着色的入口函数: void 表面着色器名称(1.表面着色器"Input结构体" 2.表面着色器"SurfaceOutputStandard结构体")
void surf (Input IN, inout SurfaceOutputStandard o) {
//fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;//获得纹理颜色
o.Albedo = fixed3(0.0,0.0,1.0); // _Color.rgb;//赋值颜色
//o.Metallic = _Metallic; //赋值 金属
//o.Smoothness = _Glossiness;//赋值 粗糙/光滑
//o.Alpha = c.a;//透明度
}
ENDCG//CG代码结束
}
FallBack "Diffuse"//当所有着色器不支持就 降级处理
}