Shader以及Unity中的Shader

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值