温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ShaderLab Syntax 基本语法

发布时间:2020-07-26 08:41:17 来源:网络 阅读:637 作者:慕婧 栏目:开发技术

本文为个人从Unity文档翻译所得,如要转载请注明源博客地址:http://ymdzz.blog.51cto.com


ShaderLab Syntax 基本语法


Unity里的所有的Shader文件都是用一种说明性语言(declarative language)来编写。


在Shader文件里,用括号包含的语法来声明用于描述Shader的变量。

例如显示哪一些Shader属性(shader properties)到Material的监视面板中;做哪种硬件回滚操作;使用哪一种混合模式(blending modes)等等。而真正的Shader代码写在一个CGPROGRAM片段中。


Shader文件的第一个定义就是Shader的名字,每一个文件都必须定义一个(而且只能定义一个)Shader。Material所使用的Shader定义了有多少个物体要被渲染。


语法(Syntax)

Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }


它将会出现在Material的监视面板中,Shader可以定义成一系列的属性,并显示在Material的监视面板中。接着是一系列的SubShader,再往下是任意的回滚(fallback)或者是自定义编辑器声明。


细节(Details)

属性(Properties)

Shader可以有一系列的属性,任何定义在Shader里的属性都会显示在material的监视面板中,

典型的属性包括物体的颜色、贴图或者是Shader要用到的任意变量。


SubShaders & Fallback

每一个Shader包含了一系列的SubShader,至少要有一个,当加载一个Shader的时候,Unity会按顺序调用这一系列的SubShader,并且采用第一个支持当前用户机器的SubShader,如果没有一个SubShader可以被支持,那么Unity将会尝试使用回滚操作。


不同的显卡有不同的性能,这是一个所有游戏开发者都会遇到的不变的困扰,你想你的游戏运行在高端配置机器上效果更华丽,但是又不想让游戏只能在3%的机器上跑。于是SubShader出现了,你可以创建一个拥有所有华丽效果的SubShader,同时准备更多的SubShader用于低端的显卡,这些SubShader会实现你想在低端机器上跑的效果,或者更多的效果细节。


Shader的LOD(level of detail),即细节等级,和Shader replacement是两个在SubShader上的技术点。


例子:

以下是一个简单的Shader:

// colored vertex lighting

Shader "Simple colored lighting"

{

    // a single color property

    Properties {

        _Color ("Main Color", Color) = (1,.5,.5,1)

    }

    // define one subshader

    SubShader

    {

        // a single pass in our subshader

        Pass

        {

            // use fixed function per-vertex lighting

            Material

            {

                Diffuse [_Color]

            }

            Lighting On

        }

    }

}


这一个Shader定义了一个颜色属性_Color,将会以MainColor这个名字显示在Material的监视面板上,默认值是(1, 0.5, 0.5, 1),然后定义了一个SubShader,这个SubShader由一个Pass组成,这个Pass开启了fixed-function vertex lighting和为它创建了一个基本的Material。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI