千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 深入理解Shader Step

深入理解Shader Step

来源:千锋教育
发布人:xqq
时间: 2023-11-23 22:47:40 1700750860

一、Shader Step简介

Shader Step是在Unity Shader中的一个特殊函数,它在Shader在渲染时执行。每个Shader都必须包含至少一个pass,这些pass可以使用着色器步骤按顺序调用,以便以正确的顺序执行自定义着色代码。Shader Step在Unity内部被称为Surface Shader Generator。它支持的Shader模型包括了3.0、4.0、5.0和6.0

二、Shader Step的基本结构

Shader Step的基本结构由每个pass中的一个或多个着色器步骤组成,每个着色器步骤都有一个称为和阈值的输入,以及一个输出胡颜色。通常情况下我们使用CGPROGRAM和ENDCG指令将我们的GLSL代码包装在Unity中,这些代码将在此处被编译并注入到当前pass的代码中。在写出一个完整的Shader Step前,我们必须了解它的输入和输出,它们是Shader Step的基本组成部分。

三、Shader Step的输入

Shader Step的输入分为编译时变量和每帧运行时变量两种。

四、Shader Step的输出

Shader Step的输出是一个颜色值。每个着色器步骤的输出都会存储在一组“ Frame Buffer”或“ Render Target”中,可以在几个Render Texture中进行读取和传递。

五、Shader Step的示例代码


        CGPROGRAM
        #pragma surface surf Standard

        struct Input {
            float2 uv_MainTex;
            float3 worldPos;
        };

        sampler2D _MainTex;
        float _Glossiness;
        float _Metallic;

        void surf (Input IN, inout SurfaceOutputStandard o) {
           // Albedo comes from a texture tinted by color
           fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;

           o.Albedo = c.rgb;
           // Metallic and smoothness come from slider variables
           o.Metallic = _Metallic;
           o.Smoothness = _Glossiness;
           o.Alpha = c.a;
        }
        ENDCG

六、Shader Step的深度

Shader Step是Unity中的一个丰富的渲染引擎,提供了多种方法来访问和修改渲染流程。它定义了一个框架,用于在渲染管道的任何位置插入自定义代码。Shader Step的深度反映了它在渲染管道中的位置,较浅的步骤会很大程度上影响着色器的最终输出,而较深的步骤则对渲染性能产生较小的影响。

七、小结

Shader Step是Unity中非常重要的一部分,可以为用户提供多种类型的Shader并在运行时动态地进行渲染。在使用Shader Step时,我们需要关注输入和输出规则,在合适的位置插入自定义代码,并理解每个步骤的深度。希望通过本文的介绍,可以帮助大家更好的理解Shader Step的基本结构和用途。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT