【译】Unity3D Shader 新手教程(16)

合集下载

UnityShader基础教程

UnityShader基础教程

UnityShader基础教程在Github上看到⼀篇关于Unity-Shader的教程,感觉还不错,作者写的很好,很适合Unity-Shader的基础⼊门,我在这⾥翻译⼀下,分享给⼤家,英⽂⽔平很烂,⼤致能明⽩Unity-Shader是什么,渲染管线的⼯作流程,以及Unity Shader的⼀些类型和怎样编写Unity Shader。

(原⽂链接)第⼀部分:什么是Shader?Shader是计算机图形渲染管线的⼀部分,它是⼀⼩段应⽤程序,告诉计算机在场景中怎样对物体渲染和着⾊。

这个过程包括计算颜⾊和光照值,并将其给予对象,以⾄于对象被显⽰在屏幕上。

和上⾯⼀样,Shader也被⽤来创建游戏中的⼀些特殊的和后期处理效果。

在现代游戏引擎中(包括Unity),Shader运⾏在可编程的GPU渲染管道中,在GPU中允许并⾏运⾏,并且能够很快速的进⾏许多着⾊计算。

第⼆部分:渲染管道为了学习Shader,我们将简单的了解渲染管道,我们将在本教程中讨论下⾯这张图⽚:我更加倾向把Shader看做是由⼀种信息类型(模型数据、颜⾊等等)到另外⼀种信息类型(像素/⽚元)的变换,对象数据继承与对象本⾝,例如模型中的点、法线、三⾓形、UV坐标等等。

我们可以把⾃定义数据/传递到shader中使⽤,颜⾊、纹理、数字等等这些。

着⾊器流⽔线的第⼀步是顶点函数。

正如你所知的,顶点就是⼀些点。

顶点函数将处理模型中的⼀些点(连同其它的⼀些数据诸如法线)并将它们渲染流⽔线的下⼀个阶段,⽚元函数。

⽚元函数将使⽤这些顶点,并对它们着⾊。

将它想象为⼀个画家和他们的画笔,它最终以(R,G,B,A)的格式输出像素数据。

最后,将像素添加到帧缓冲中,在帧缓冲中这些数据有可能被进⼀步处理,直到这些数据被绘制到屏幕上。

第三部分:Scene 配置在开始写Shader代码之前,需要在Unity中配置⼀下我们的场景。

在Unity中创建⼀个⼯程,并导⼊所有的资源。

使用Unity开发3D游戏的基础教程

使用Unity开发3D游戏的基础教程

使用Unity开发3D游戏的基础教程第一章:Unity的介绍和安装Unity是一款强大的跨平台游戏开发引擎,可用于开发2D和3D游戏。

它拥有直观易用的界面和丰富的功能,适用于初学者和经验丰富的开发者。

在本章中,我们将介绍Unity的基础知识并帮助您安装和配置开发环境。

Unity支持多种平台,包括Windows、MacOS和Linux。

在开始之前,请确保您的计算机满足Unity的最低系统要求。

您可以从Unity官方网站下载并安装Unity Hub,它是一个用于管理Unity项目和版本的工具。

安装Unity之后,您可以通过Unity Hub打开编辑器。

Unity编辑器的界面分为多个窗口,如场景视图、资源视图、检查器视图和层次视图,从而使您能够轻松管理和操作游戏对象。

第二章:创建场景和游戏对象在Unity中,您可以创建场景来构建游戏世界。

场景是游戏中的虚拟空间,您可以在其中放置游戏对象和元素。

游戏对象是可以在场景中实例化的实体,如人物、道具、地形等。

要创建一个新场景,您可以在Unity编辑器中单击“File”菜单,然后选择“New Scene”。

接下来,您可以将游戏对象拖放到场景中,或使用Unity提供的创建工具来生成对象。

对于每个游戏对象,您可以在检查器视图中设置其属性和组件。

组件是游戏对象的功能模块,如碰撞器、脚本和动画控制器。

通过添加适当的组件,您可以控制游戏对象的行为和外观。

第三章:使用脚本编写游戏逻辑脚本是Unity中编写游戏逻辑的重要工具。

脚本是一种编程语言,可用于控制游戏对象的行为和交互。

在Unity中,您可以使用C#或Unity的自有语言UnityScript来编写脚本。

要创建一个新的脚本,您可以在Unity编辑器中单击“Assets”菜单,然后选择“Create”>“C# Script”。

然后,您可以使用Unity内置的脚本编辑器来编写和编辑脚本。

在脚本中,您可以定义类和方法来实现所需的游戏逻辑。

unity shader的使用流程

unity shader的使用流程

Unity Shader的使用流程1.简介U n it yS ha de r是一种用于控制渲染效果的程序,它可以实现各种各样的特效和图形效果。

本文将介绍U ni ty Sh a de r的使用流程,帮助开发者快速上手并创建自己的S ha de r效果。

2.步骤2.1.创建S h a d e r文件在U ni ty中创建S ha d er文件非常简单。

在项目文件夹中右键点击“C re at e”->“S ha d er”->“St an dar d Su rf ac eS ha de r”,即可创建一个新的Sh ad er文件。

2.2.编辑S h a d e r属性编辑Sh ad er属性是创建自定义S ha de r的第一步。

通过编辑S ha de r 属性,我们可以控制材质的外观和行为。

可以定义基础属性如颜色、纹理等,也可以自定义属性以实现更复杂的效果。

2.3.实现表面着色器函数表面着色器是Sh ad er中最重要的部分之一。

它决定了物体表面的颜色、反射等属性。

在表面着色器函数中,我们可以使用Un ity提供的内置函数和变量来实现各种特效。

2.4.添加顶点着色器函数顶点着色器决定了物体的形状和位置。

通过修改顶点的坐标,我们可以实现形变和动画效果。

在顶点着色器函数中,我们可以使用U ni ty提供的顶点变换函数来处理顶点位置。

2.5.编写片段着色器函数片段着色器控制像素的颜色和透明度。

在片段着色器函数中,我们可以使用U ni ty提供的内置函数和变量来实现各种图形效果,如光照、阴影等。

2.6.使用S h a d e r完成Sh ad er的编写后,我们可以将其应用到物体上。

在U nit y的材质属性面板中,选择自定义S ha de r并配置相关参数。

通过调整参数,我们可以实时预览S had e r的效果。

3.示例下面是一个简单的示例,演示如何创建一个变色效果的Sh ad er。

```C#S h ad er"C us to m/Col o rC ha ng e"{P r op er ti es{_M ai nC ol or("Ma inC o lo r",C ol or)=(1,1,1,1)_C ha ng eC ol or("Cha n ge Co lo r",C ol or)=(0,0,0,1)_O ff se t("O ff se t",R an ge(0,1))=0}S u bS ha de r{T a gs{"Re nd er Ty pe"="O pa qu e"}C G PR OG RA M#p ra gm as ur fa ce sur f La mb er ts a mp le r2D_Ma in Tex;h a lf_O ff se t;f i xe d4_M ai nC ol or;f i xe d4_C ha ng eC olo r;s t ru ct In pu t{f l oa t2uv_M ai nT ex;};v o id su rf(I np ut IN,i no ut Su rf ac eO utp u to){f i xe d4c=te x2D(_Ma i nT ex,I N.uv_M ain T ex);c.rg b+=_Ch an ge Col o r.rg b*_O ff se t;o.Al be do=c.r gb*_M a in Co lo r.rg b;}E N DC G}F a ll Ba ck"D if fu se"}```4.总结通过本文的介绍,我们了解了Un it yS had e r的使用流程。

Unity3D内部Shader详解

Unity3D内部Shader详解

Unity3D Built-in Shader详解一Unity3D的ShaderUnity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的.FX文件或者NVIDIA的CgFX有些类似。

传统意义上的vertex shader和pixel shader 还是使用标准的Cg/HLSL 编程语言编写的。

(因此Unity文档里面的Shader,都是指用ShaderLab编写的代码)然后我们来看下Unity3D 自带的60多个Shader。

这些Shader被分为五个大类:Normal,Transparent,Transparent Cutout,Self-llluminated,Reflective。

由于数量比较多,将分几个篇幅一一介绍。

(一) Normal Shader Family 这个家族一共9个Shader,都是针对不透明的对象的。

(1) Vertex-Lit:最简单的一种Shader之一,所有照射在该物体上的光在一个Pass里面渲染完,光源只在顶点计算。

所以不会有任何基于像素渲染得效果,比如说:normal mapping,light cookies和shadows.这个shader对模型的剖分(将一个物体从几何描述变为多边形表示的过程)非常敏感,如果你将一个点光源放在很靠近一个立方体的一个顶点那里,并且对立方体使用这个shader,光源只会在角落计算。

基于像素光照的shader对剖分没有要求,在表现圆形高光上效果也很好。

如果上述情况时你想要的效果,你可以考虑使用一个基于像素光照的shader或者增加模型的剖分。

(增加顶点数)总的来说,这个shader的渲染代价比较小。

这个shader包含了2个subshader,分别对应可编成管线和固定管线。

是所有硬件都支持的一个最基本的shader。

如果设备支持可编成管线,那使用可编成管线的subshader,否则使用固定管线的。

(2) Diffuse: Diffuse基于一个简单的光照模型-Lambertian,光照强度随着物体表面和光入射角夹角的减小而减小(即光垂直于表面时强度最大)。

unity的shader用法

unity的shader用法

一、Shader的概念及作用Shader是一种编程语言,用于控制计算机图形的渲染过程,其主要作用是定义了物体的表面如何反射光线,从而决定了物体在屏幕上的呈现效果。

在Unity中,Shader是一种通过编写代码来控制物体表面属性,使其在游戏中呈现出不同的视觉效果的工具。

二、Shader的编写流程1. 编写Shader的基础知识在Unity中编写Shader需要掌握一定的基础知识,包括语法结构、变量、函数等。

同时还需要了解Shader的类型,如表面Shader (Surface Shader)、顶点和片元Shader(Vertex and Fragment Shader)等。

2. 创建Shader文件在Unity中可以通过创建一个新的Shader文件来开始编写自己的Shader程序。

在创建Shader文件时,需要为其指定类型,并可以选择不同的模板来快速生成基础代码。

3. 编写Shader代码根据需要,可以在Shader文件中编写自定义的Shader代码,控制物体表面的颜色、光照、透明度等属性。

在编写Shader代码时,需要根据具体的需求选择合适的函数和变量来实现期望的效果。

4. 调试和优化Shader代码编写完Shader代码后,需要进行调试和优化工作,确保Shader可以正确地在游戏中使用并且不影响游戏的性能。

三、Shader的常见用法1. 实现特效通过编写Shader代码,可以实现各种特效效果,如模拟火焰、水波纹、粒子效果等,从而增强游戏的视觉表现力。

2. 自定义材质通过使用Shader,可以为游戏对象创建自定义的材质,实现各种独特的视觉效果,使游戏中的场景更加丰富多彩。

3. 控制光照Shader还可以用于控制游戏中的光照效果,包括光照强度、光照颜色、阴影效果等,从而使游戏中的光照效果更加逼真。

四、常见问题和解决方法1. 兼容性问题在使用Shader时,可能会出现不同评台不兼容的情况,需要根据不同评台的要求进行调整和优化。

unity shader常用方法

unity shader常用方法

(原创实用版3篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的3篇《unity shader常用方法》,供大家借鉴与参考。

下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(3篇)《unity shader常用方法》篇1Unity 中 Shader 的使用可以通过编写着色器来实现,着色器分为顶点着色器和片元着色器两种。

顶点着色器主要用于处理模型的顶点信息,如位置、颜色、纹理坐标等,而片元着色器则主要用于处理模型的像素信息,如光照、阴影、透明、反射等。

通过编写 Shader,我们可以实现各种特效,例如镜面反射、水面、塑料等特殊材质。

同时,Shader 也可以方便地设置渲染状态,如混合函数、深度写入等。

在 Unity 中,我们可以将编写好的着色器打包成材质,然后将材质赋予合适的游戏对象,从而实现我们所需的渲染效果。

Shader 的编写语言为 HLSL 和 GLSL,其中 HLSL 是 Microsoft 推出的标准语言,而 GLSL 则是 OpenGL 的标准语言。

在 Unity 中,我们可以使用这两种语言中的任意一种来编写着色器。

此外,Unity 还提供了 ShaderLab 语言,它是一种类似于 HLSL 的语言,专门用于编写 Unity 中的着色器。

《unity shader常用方法》篇2Unity 中的 Shader 是一种用于控制 GPU 渲染流水线的高度可编程的阶段,可以通过编写着色器和设置渲染状态来实现各种渲染效果。

下面列举了一些Unity 中常用的 Shader 方法和技巧:1. 基本 Shader 类型:Unity 中的 Shader 分为两种类型,分别是顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。

Unity3D Shader入门指南

Unity3D Shader入门指南

当然,因为我本身在Shader开发方面也是一个不折不扣的大菜鸟,本文很多内容也只是在自己的理解加上一些可能不太靠谱的求证和总结。

本文中的示例应该会有更好的方式来实现,因此您是高手并且恰巧路过的话,如果有好的方式来实现某些内容,恳请您不吝留下评论,我会对本文进行不断更新和维护。

一些基本概念Shader和Material如果是进行3D游戏开发的话,想必您对着两个词不会陌生。

Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。

绘图单元可以依据这个输出来将图像绘制到屏幕上。

输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。

之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染(输出)了。

所以说Shader并没有什么特别神奇的,它只是一段规定好输入(颜色,贴图等)和输出(渲染器能够读懂的点和颜色的对应关系)的程序。

而Shader开发者要做的就是根据输入,进行计算变换,产生输出而已。

Shader大体上可以分为两类,简单来说∙表面着色器(Surface Shader)- 为你做了大部分的工作,只需要简单的技巧即可实现很多不错的效果。

类比卡片机,上手以后不太需要很多努力就能拍出不错的效果。

∙片段着色器(Fragment Shader)- 可以做的事情更多,但是也比较难写。

使用片段着色器的主要目的是可以在比较低的层级上进行更复杂(或者针对目标设备更高效)的开发。

因为是入门文章,所以之后的介绍将主要集中在表面着色器上。

Shader程序的基本结构因为着色器代码可以说专用性非常强,因此人为地规定了它的基本结构。

一个普通的着色器的结构应该是这样的:一段Shader程序的结构首先是一些属性定义,用来指定这段代码将有哪些输入。

unity3D学习之shader学习的教程

unity3D学习之shader学习的教程

由于本人比较懒,基本上混迹于问答板块与朋友们交流U3D开发很少发主题帖,由在这里准备写一些自己学习shader的一些经验与心得,然后与朋友们分享一些写sha 交流,欢迎指出错误之处)一:工欲善其事必先利其器首先推荐两本学习shader非常有必要而且很不错的书。

学习shader你首先应该必备一些写shader的语法支持GPU的编程的语法有三种微软提供的HLSL,OpenGL提供的GLSL,还有NVIDIA提供的Cg在这里推荐使用Cg因为Cg编写的Shader同时兼容Direct3D和OpenGL。

那么要怎么学好Cg语言呢?那么《 Cg教程---可编程实时图形权威指南》一定可以满足你的需求这是一本英译书,所以建议有点英语基础的小伙伴去购买英译版的然后自己理解,学习shader教程中比较不错的书《unity 3D ShaderLab开发实战详解》二:Shader原理及基础书本介绍完了那么首先来了解下shader的工作原理吧从字面意思来说shader翻译过来就是着色器,所以可以理解为给我们想要看见的道计算机的GPU就是为此服务的,而我们写shader的目的也就是告文章来自【狗刨诉GPU我们画在屏幕什么位置,什么颜色,什么形态等等。

他们的工作流程是:1.坐标系变换,(物体空间坐标->世界坐标->摄像机坐标->裁剪空间坐标)2.流水线图形,(着色顶点->图元装配->光栅化->插值,贴图,着色)3.unity3d渲染流程(固定关系和可编程管线的渲染)4.光栅操作(像素所有权测试->裁剪测试->alpha测试->模板测试->深度测试->混合这些之中与我们shader编程密切相关的就是第三点固定渲染管线这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着纹理混合。

T&L管线可以被渲染状态控制,矩阵,光照和采制参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【译】Unity3D Shader 新手教程(16)标签:class style 代码com log 使用src html http 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步。

该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章)详细介绍了Unity3D 中的表面着色器(Surface Shader)的,为学习更复杂的Shader编程打下基础。

动机如果你是刚刚接触Shader编程的新手,你可能不知道从何开始踏出Shader编程的第一步。

本教程将带你一步步完成一个表面着色器(Surface Shader)和片段着色器(Fragment Shader)。

本教程也将介绍在Unity3D Shader编程中所使用的一些函数和变量,这些内容可能和你在网上看到的不一样哦!如果你满足下面的条件,我觉得你应该看看这篇文章:如果你是shader编程的新手。

你想在你的游戏中使用shader做一些很炫酷的效果,但是你在网上找不到可用的Shader(译者注:o(╯□╰)o自己动手丰衣足食)。

由于缺乏对基础知识的了解,造成不能随心所欲使用Strumpy着色器编辑器(译者注:Strumpy Shader Editor,一种图形化编写shader的方式,看着很诱人!)。

你想在你的shader代码中手动处理纹理(Textures)本文是该系列教程的第一篇文章,随后我们会制作一些更复杂的shader。

相比起来,第一篇文章确实很简单。

关于作者我也是Shader编程的新手----所以我决定写这篇教程帮助大家入门——我当初也在入门上遇到很多苦恼。

事实上我并不是一个Shader编程专家。

当我想了解Shader编程时,我曾反复阅读官方文档,但是我最终发现官方文档讲述的顺序并不适合我学习shader。

所以我觉得我应该写一篇教程,并分享我所学到的知识。

不过写完教程之后,我发现再次阅读官方文档时,觉得明白多了。

尽管本教程中的所有例子都能正常运行,但是我相信肯定有更好shaders实现这些例子。

如果聪明的你对这些例子中的shaders有更好的建议,请在评论区留言!我之所以学习shader编程是因为我需要在我创建的游戏世界中创建些东西,但这个游戏世界创建起来有个麻烦之处,因为它是由不同角色组成的,而我必须创建由多个部分组成的一个统一网格(mesh)。

所以我只能对每个角色使用一次绘制调用(draw call)。

(译者注:完全不知道他在讲什么?所以我把原文放在下面给大家评评理)My reason for getting into shader programming was to build something that I needed for a world populated with an endless array of different characters. I needed to build a combined mesh out of multiple parts so I only have one draw call per character.通过打开和关闭角色的穿衣效果,我使用Megafiers(一个变形插件)修改了角色的基本网格(base meshes)。

其中的困难在于我只有一个纹理(texture),但是我却想给每个角色的皮肤,服饰以及其他的特征使用不同的颜色。

我想到一个方法----对每个角色使用不同的3个4x4纹理,并使用一个shader 来给模型上色。

我将在整个教程中详细描述我做的这个shader,但是现在—我想你们已经迫不及待地想看我创建的角色表演一段即兴的快闪舞(flash mob dance)(译者注:网上截的图片)。

着色器和材质(shaders&materials)一个shader所做的就是将一个模型的网格(mesh)渲染到屏幕上。

Shader可以被定义为一系列的属性(译者注:就像一个函数里面的参数一样,你可以改变函数的不同赋值来改变函数的输出结果),你可以通过改变这些属性来改变模型渲染到屏幕上的效果。

而这些属性被存放起来,放到一个叫做材质(material)的地方。

Unity3D Shader有以下几种表面着色器(surface shader)----后台自动为你做的绝大部分的工作,减少了你工作量,并且适合绝大多数需要shader 的情况。

片段着色器(fragment shader)----可以让你做更多的效果,但是此shader更难写。

你也可以用它做一些底层的工作,比如顶点光照(Vertex lighting,即在每个顶点存储该点的光照信息)。

顶点光照对于移动设备很有用(译者注:估计省内存吧)。

该shader对于一些需要多通道(multiple passes)的高级渲染效果也很有效。

本文中我们将关注点放在表面着色器上。

学习Shader的资源如果你要学习Shader编程,我向你推荐下面几个资源Martin Kraus‘s fantastic Wiki Book GLSLProgramming/UnityUnity‘s Shader ReferenceNVidia‘s tutorial on the CG programming languageCreativeTD‘s video series on writing surface shadersShader的流水化工作方式(译者注:Shader的工作方式也称为shader流水线(pipeline),因为shader工作方式很类似汽车流水线,将模型上一系列顶点数据和其他各种数据作为输入,用这个shader组成的流水线加工下,出来的就成了炫酷的效果了。

)你将在shader流水线中看到不明觉厉的各种术语,我将用我自己的语言尽量降低理解的难度。

Shader的工作就是输入一些3D几何信息,经过shader处理后将其变为2D的像素呈现在屏幕上。

好处是在shader处理过程中,你只需要改变少数几个属性就可以产生不同的效果。

对于表面着色器,该工作流程看起来像下面这样:(译者注:简单讲解一下这个流程图,首先要渲染的物体将自己的几何信息传递到Shader中,并且系统得到了该物体的顶点信息,然后你可以选择经不经过Vertex Function来处理这些顶点信息,随后经过光栅化(将三维几何信息映射到二维屏幕上,打个不恰当的比喻,相当于把3D模型拍扁到屏幕上,然后你就可以专心处理屏幕上的像素了),每个像素经过你的shader代码将得到最终的颜色值)注意在表面着色器(Surface Shader)中的函数退出之前,像素的颜色还没有计算出来。

这意味着你可以再次之前传入顶点的法向量来影响光照的计算。

片段着色器(Fragment Shader)有着同样的工作流程,但事实上,片段着色器中必须有Vertex Function(上图中的Vertex Function部分就是可选的(Optional)),而且需要在像素处理阶段做很多的工作才能产生最终的像素。

而表面着色器隐藏了这些。

(译者注:给我的感觉就是片段着色器向用户提供了更多的接口进行更高级的渲染)。

下图展示了你的代码如何被调用以及代码构成从上图我们可以看到,当你写一个shader的时候,你可能得有一些属性值(properties),并且有一个或多个Subshaders。

具体使用哪个Subshader进行处理取决于你的运行平台。

你应该还要指定一个Fallback shader,当你的subshader没有一个能运行在你的目标设备上,将使用Fallback shader(译者注:有点像备胎)。

每个Subshader都至少有一个通道(pass)作为数据的输入和输出。

你可以使用多个通道(passes)执行不同的操作,比如在一个Grab Pass中,你可以获取将要呈现到屏幕上的像素值(译者注:类似于glsl中的fragment buffer)。

当你想制作高级的扭曲效果,这非常有用。

虽然当你开始学习shader编程时,你可能并不会使用到它。

另外一个使用多通道(multiple passes)的原因是在不同时刻,你可能需要写入或者禁止写入深度缓存的使用。

当你写表面着色器时,我们将直接在Subshader这个层次上写代码,系统将把我们的代码编译成若干个合适的通道(pass)。

尽管shader最终产生的是二维像素,但是其实这些像素除了保存xy坐标外,本身保存着深度值(即每个像素点上的内容在原先3D场景中离照相机的远近),这样距离照相机近的物体就会把距离照相机远的物体遮挡住,在屏幕上显示时,就是将其像素值覆盖。

你可以控制是否在你的shader中使用深度缓存(Z-buffer)产生一些特效,或者在Pass中使用一些指令决定shader是否可以写入Z-buffer:比如使用ZWrite Off时,任何你输出的东西都不会更新Z-buffer的值,即关闭的Z-Buffer的写入功能。

你可以使用Z-buffer技术在别的物体上掏出一个洞,你可以先写入需要打洞区域的深度值,但不输出打洞区域所属的像素值,然后在你模型后面的物体的深度值将无法写入(因为Z-buffer觉得你的模型已经挡住了后面的物体)(译者注:这样你打洞区域显示的就是一开始使用的背景色,会造成一个洞穿过了这些物体的效果)。

下面是一些shader代码:希望你能看出上面代码是由Properties,SubShader,Fallback三段代码组成的。

理解Shader代码文章剩下的部分将讲述上面那段简单代码到底做了什么?真正的干货马上就来了,你必须好好掌握这些内容。

当你进行shader编程时,你必须使用正确的变量名和函数名来调用它们,事实上变量的名称在某些情况下能让人一眼看出它的特定含义。

创建并使用默认Shader(译者注:在详细介绍Shader之前,我们先简单介绍下shader如何使用。

)1. 我们先打开Unity(我的版本是4.6.1),创建新工程,并在Assets文件夹下创建三个目录,如下:2. 我们再创建一个cube。

可以在Inspector面板看到新创建的cube所使用的Material 如下。

3. 打开Material文件夹,我们在其中创建一个Shader和一个Material。

此时New Material的默认Shader为Diffuse。

我们将NewShader拖到New Material上。

可以看到该材质所使用的Shader变成我们新建的NewShader了。

当然你也可以直接点击材质编辑器中Shader下拉框,选择相应的Shader。

相关文档
最新文档