Shader即着色器,是一中运行在GPU上的程序,用来对三维物体进行着色处理,光与影的计算,纹理颜色的呈现等,从而将游戏引擎中一个个作为抽象的几何数据存在的模型,场景和特效,以和真实世界类似的光与影的形式呈现于玩家的眼中。通过Shader可以改变物体的形状,大小,位置,旋转等,甚至可以做PS的功能效果。伴随着GPU硬件性能的提升,shader编程方式经历了从最初的固定管线,到可编程流水线的发展。Shader有顶点Shader和片段Shader两个基本类型,顶点Shader有着可以处理,变换最终会渲染到屏幕上的网格物体的顶点位置的功能,但是不可以生成新的顶点。Shader作为一款在GPU上运行上的程序,目前有三种高级图形语言可供选择:HLSL,GLSL,CG。Unity对shader编程语言支持的重点是CG。
Unity中的Shader:
以关键字shader开始,在Unity中新建一个Shader默认如下
Shader "Custom/NewShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"

Shader是运行在GPU上的程序,用于处理游戏中的光照、纹理等,赋予3D模型真实感。Unity支持CG、HLSL和GLSL等图形语言编写Shader。在Unity中,Shader由SubShader组成,每个SubShader包含一个或多个Pass,用于定义渲染步骤。Queue和RenderType标签控制渲染顺序和类型。当所有SubShader失败时,会使用FallBack。Shader分为固定管线、可编程着色器(顶点+片段)和表面着色器,其中SurfaceShader简化了光照和阴影的处理。

2万+

被折叠的 条评论
为什么被折叠?



