Shaders 着器unity 教程
Unity中的所有渲染都是由着器完成的 - 小脚本让您配置图形硬件是如何为渲染设置的。Unity有超过40个内置的着器,但你可以自己制作再扩展更多的。内置着器都记录在Built-in Shader Guide指南。
Unity中的着器都由名为ShaderLab的一种语言编写而成,它类似于微软的.FX文件或NVIDIA的CgFX。假如你想编写自己的着器,包括自定义顶点和片段方案,本节和ShaderLab reference现在都将解释。
让你从一些例子开始,我们对所有的内置着器载运ShaderLab源代码。你可以在Resources section到。
阅读关于ShaderLab的介绍,并查看ShaderLab Reference!
Shaders: Getting started 着器:开始
本教程将教你如何创建自己的着器,使你的游戏看上去更好!
Unity配备了强大的着和材料语言叫做ShaderLab。在风格上它类似CgFX和Direct3D语言 - 它描述了显示材料所需的一切,不只是简单的顶点/像素着器。
针对不同的显卡硬件的能力,着器描述了Unity中Material Inspector和多着实现(SubShaders)的属性,每个完整描述了显卡硬件的渲染状态,固定功能路径安装,或来使用的顶点/片断程序。顶点和片段程序都写在高级别Cg编程语言或低级别的着器程序集中。
在本教程中我们将描述如何在ShaderLab中同时使用固定功能和可编程管道,编写着器。我们假设读者对于OpenGL或Direct3D的渲染状态,固定功能和可编程管道有基本的了解,对于CG,HLSL的或GLSL的编程语言具有一定了解。一些着器教程和文档可在NVIDIA和AMD开发网站上到。
Getting started
要创建一个新的着器,无论是从菜单栏中选择Assets->Create->Shader,或复制一个现有的着器并从中操作。该新着器可以通过在项目视图中双击编辑。
我们将从一个很基本的着器开始:
Shader "Tutorial/Basic" {
Properties {
_Color ("Main Color", Color) = (1,0.5,0.5,1)
}
SubShader {
Pass {
Material {
Diffuse [_Color]
}
Lighting On
}
}
}
这个简单的着器演示了着器的最基本可能之一。它定义了一个称为 Main Color(主)的颜属性,并分配一个玫瑰的默认值(红= 100% 绿= 50% 蓝= 50% alpha= 100%)。然后通过调用一个Pass,并在该pass中设置diffuse材料组件到属性_Color并打开顶点灯光。
为了测试该着器,创建一个新的材料,从下拉菜单中选择该着器(Tutorial->Basic),并分配该材料到某些物件。在Material Inspector中调整颜,观察变化。
Basic Vertex Lighting 基本顶点照明
如果您打开一个现有的复杂着器,得到很好的概述有点难。为了让你开始,我们将剖析Unity运载的内置VertexLit着器。该Shader使用固定功能管道来制作标准的每-顶点照明。
Shader "VertexLit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0.5)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" { }
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
constantColor [_Color]
Combine texture * primary DOUBLE, texture * constant
}
}
}
}
所有着器都是由关键字shader开始的一个字符串,代表了着器的名称。这是在Inspector中显示的名称。该着器的所有代码必须放在它后面的大括号内:{ }(称为块)。
● 该名称应简短并具有叙述性。它不需要匹配的.shader的文件名。
● 要在Unity中将着器放到子菜单中,使用斜线 - 例如MyShaders/Test将在子菜单中显示为测试,称为MyShaders,或。
该着器是由SubShader块之后的一个属性块组成的。每个部分都在下面进行了说明。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论