Shader-数据类型

梦想游戏人
目录:
Unity

变量除了在 代码段中申明外 还 必须在Properties中 声明后才能正确使用(和能在inspector视图显示)

Properties中格式为:变量名字(inspector中显示的名字,类型)=默认值

其中类型有(类型=举例—————对应CG语言中类型)

Range(min,max)=0—————float ,half , fixed

Float=0.0 ——————————float,half,fixed

Int=1————————————–int

Color=(1,1,1,1) 或(1,1,1)———–float4 ,float3,half4 ,fixed4

vector=(1,1,1,1) 或 (1,1,1)———-float4 ,float3,half4 ,fixed4

2D=”white”{} ————————sampler2D

3D=”white”{} ————————sampler3D

Cube==”white”{} ————————samplerCUBE

数据类型说明:

float是32位浮点数

half是16位浮点数

fixed是12位定点数

float

s23e8 (“fp32”) IEEE single precision floating point

half

s10e5 (“fp16”) floating point w/ IEEE semantics

fixed

S1.10 fixed point, clamping to [-2, 2)

double

s52e11 (“fp64”) IEEE double precision floating point 

常量后缀:

  • d for double
  • f for float
  • h for half
  • i for int
  • l for long
  • s for short
  • t for char
  • u for unsigned, which may also be followed by sti, or l
  • x for fixed
Shader "Custom/NewShader" {
	Properties {
		_MainTex ("Base (RGB)", 2D) = "white" {}
        _color("color",Color)=(1,1,1)       
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Lambert

		sampler2D _MainTex;
		float3 _color;

		struct Input {
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) {
			half4 c = tex2D (_MainTex, IN.uv_MainTex);
            
   
          c.rgb=_color;
            
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}
Scroll Up