untiy ShaderLab学习之路
文章平均质量分 81
Shader 即着色器,是一款运行在 GPU 上的程序,用来对三维物体进行着色处理,光与影的计算, 纹理颜色的呈现等,从而将游戏引擎中 一个个作为抽象的几何数据存在的模型、场景和特效,以和 真实世界类似的光与影的形式呈现于玩家的眼中。
heyuchang666
这个作者很懒,什么都没留下…
展开
-
SubShader的Tag RenderType类型
SubShader的TagShader "ShaderLab Tutorials/TestShader" { SubShader { Tags { "Queue"="Geometry+10" "RenderType"="Opaque" } //... }}SubShader内部可以有标签(Tags)的定义。Tag指定了这个SubShader...转载 2018-02-27 11:36:43 · 1510 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_3_球体阴影(三) 点光源对球体的投影
如图所示,淡黄色的是阴影的淡入淡出,淡紫色的是点光源的阴影。在接受阴影的Shader 中计算了平行光和点光源两种阴影原创 2016-10-26 11:25:32 · 1653 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_2_球体阴影(二) 阴影的淡入/淡出
在上一节的例子中,我们仅仅判断了是否能看到光源,其实不仅仅能判断是否可以看到光源,当我们看不到光源时,还可以计算出此时点距离光亮地带的远近程度,等价于到阴影中心的远近程度,这样就可计算一个带浓淡变化的阴影里,而这是在一般的阴影实现算法中比较难以做到的。原创 2016-10-26 10:56:28 · 797 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_2_球体阴影(一) 平行光对球体的投影
然后,当我们需要计算一个点是否在球体的投影区域时,我们需要知道这个点到灯光的方向,到球体中心的方向以及距离,然后根据这两个方向的夹角,通过相似三角形的计算,考察透过这个方向在球体的此半径内能不能看到光源,如果可以,此点就不处于阴影之中,否则此点将被标记在阴影中。这个完整操作是在SphereShadow_l.shader中完成的,其完整代码如下:原创 2016-10-21 11:06:08 · 1782 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_1_平面阴影(三) 点光源对平面的投影
这个方法还有一个显而易见的问题,那就是物体本身是立体的,不是一个平面,因此这个计算前后的点的距离是包括物体本身厚度的,这个厚度就会表现在阴影上。要解决这个问题,我们可以先把物体变换到灯光空间,使用_World2Light矩阵沿着灯光方向把物体压扁,然后投射物体,这样计算出来的阴影衰减就不会包括物体的厚度了。原创 2016-09-28 15:55:29 · 1454 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_1_平面阴影(二) 点光源对平面的投影
点光源也是类似的,对于通过使用WorldSpaceLightDir()方法来计算光源方向原创 2016-09-28 15:23:41 · 1368 阅读 · 0 评论 -
untiy 3d ShaderLab_第9章_1_平面阴影(一)
在此Shader中,我们首先使用固定管线对物体做了一个简单的照明。在计算阴影的ForwardBase中,首先使用一个可以叠加阴影的混合模式,然后使用z偏移保证出来的阴影在接受平面之上。_World2Ground和_Ground2World分别是我们自定义的两个进出阴影接受平面矩阵。在具体计算中,首先将光源方向和投影物体的顶点都转换到接受平面的空间,在它们都处于同一个空间后,通过简单的三角形近似算法,来计算投影物体顶点沿光线投射后在接受平面上的新位置。因为这是一个Build In的Unity Plane,所以原创 2016-09-28 11:49:10 · 1165 阅读 · 0 评论 -
untiy 3d ShaderLab_第8章_4_ 单光照贴图在Deferred 渲染路径下的实时阴影
单光照贴图在Deferred 渲染路径下的实时阴影 另外,我们可以将相机的RenderingPath切换为Deferred模式,在这种模式里,可以尝试移动实时光源,你会发现,不论是静态的还是非静态的物体,如果打开阴影选项,都会投射出阴影。注意非静态球体下的阴影以及黄色光源的阴影投影。原创 2016-06-24 15:17:43 · 1525 阅读 · 0 评论 -
升级Unity5-----Unity5灯光烘焙与Unity4 灯光烘焙实际应用中的差别
Skybox:会直接影响你的环境光Ambient Source:环境源,这里选 的skyboxAmbient Intensity: 环境光的强度值,也就是环境光的亮度值Reflection Source:反射源,这是Unity4.X里没有的。烘焙后会在场景文件的同名文件夹中多出一个名为 LightmapSnapshot的文件。Realtime Resolution:实时分辨率,这个物体所产生的GI对其它物体的影响程度,值越大影响越大。原创 2016-06-24 16:27:21 · 4872 阅读 · 0 评论 -
Unity_二维纹理 Texture 2D_4_总结细节
Unity支持下面的文件格式:PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT。应注意,Unity可以导入多层PSD和TIFF文件,在导入时,层将自动被塌陷,因此你不必浪费时间,直接使用源文件类型。这Texture Sizes 纹理大小 这些尺寸如下:2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 或 2048像素。纹理可不必是正方形,即宽度和高度可以不同。点很重要,允许只有一个纹理拷贝,使用从Photoshop,三维原创 2016-06-06 11:49:33 · 2922 阅读 · 0 评论 -
Unity_二维纹理 Texture 2D_3_按平台覆盖
当你在不同的平台构建(游戏),你必须考虑为目标平台决定你的纹理,尺寸和质量。使用Unity3,你可以覆盖这些选项,并根据你要部署的平台指定具体的值。注意,当你构建项目时,如果你没有选择任何值覆盖,编辑器会选择默认值。除非你是针对一个特定的硬件,像Tegra,我们建议你使用ETC1压缩。如果需要可以储存额外的alpha通道并仍能得到较低的纹理占用空间。如果你一定要储存alpha通道在纹理中,RGBA16位是所有的硬件厂商所支持的压缩。 如果你的应用程序采用一个不支持的纹理压缩,纹理将解压到原创 2016-06-06 11:04:35 · 2142 阅读 · 0 评论 -
Unity_二维纹理 Texture 2D_2_高级纹理
Non Power of 2 不是2的幂:如果纹理大小不是2的幂,这将定义在导入时的缩放行为(更多信息请参阅下文纹理尺寸部分): None 无:纹理将被填充到下一个较大的2的幂大小以便与GUI纹理组件使用。(真别扭!) To nearest 到最近的:纹理在导入时将被缩放到最近的幂大小。例如257x511纹理将成为256x512。请注意,PVRTC格式要求纹理是正方形(宽度与高度相等),因此最终大小将变换到512x512。 PVRTC是一种有损的纹理压缩技术,主要用于iPhone,iPod原创 2016-06-06 10:26:01 · 3582 阅读 · 0 评论 -
Unity_二维纹理 Texture 2D_1_Properties 属性
纹理使你的网格、粒子、和界面更生动!它们是你覆盖或环绕着对象的图片或影片文件。由于它们是如此的重要,它们有很多的属性。如果你是第一次阅读这一点,跳到细节,当你需要一个参考时返回到实际设置。 用于对象的着色器可以指定所需要的纹理,但基本原则是可以放置项目中任何图像文件。如果它符合尺寸要求(见以下说明),它将会被导入并优化。对于多层Photoshop文件或TIFF文件——它们在导入过程中被塌陷合并,所以对于游戏没有不利影响。原创 2016-06-05 15:16:03 · 2465 阅读 · 0 评论 -
Unity渲染路径 Rendering Paths_3_Vertex Lit 顶点光照
顶点光照(Vertex Lit) 是最低保真度的光照、不支持实时阴影的渲染路径。最好是用于旧机器或受限制的移动平台上。1.顶点照明渲染路径通常在一个通道中渲染物体,所有光源的照明都是在物体的顶点上进行计算的。2.顶点照明渲染路径是最快的渲染路径并且有最广泛的硬件支持(然而,请记住:它无法工作在游戏机上)。3.由于所有的光照都是在顶点层级上计算的,此渲染路径不支持大部分的逐像素渲染效果:如,阴影、法线贴图、灯光遮罩、高精度的高光原创 2016-06-02 11:29:13 · 2832 阅读 · 0 评论 -
Unity渲染路径 Rendering Paths_2_Forward Rendering 正向渲染
正向渲染一个基于着色器的渲染路径。它支持逐像素计算光照(包括法线贴图和灯光Cookies)和来自一个平行光的实时阴影。在默认设置中,少数最亮的灯光在逐像素计算光照模式下渲染。其余的灯光计算对象顶点的光照。 根据影响物体的光源的不同,正向渲染路径用单个或多个通道来渲染物体。在正向渲染中,光源本身也会根据他们的设置和强度受到不同的对待。原创 2016-06-02 11:41:57 · 3517 阅读 · 0 评论 -
Unity渲染路径 Rendering Paths_1_Deferred Lighting 延时光照
延时光照是有着最高保真度的光照和阴影的渲染路径。如果你有很多实时灯光,最好是使用延时光照。它需要一定水平的硬件支持,仅在 Unity Pro可用,移动设备上不支持。 延迟光照是一种当前最高级的能实现光线和阴影保真的渲染路径1.完全采用以每像素的方式评估光线,这等于意味着全部将以正常贴图的方式正确的和物体交互2.所有光线都能拥有信息缓存3.所有的光线都能产生阴影4.对于能影响任何物体的光线数量没有上限原创 2016-06-02 11:18:14 · 3730 阅读 · 0 评论 -
Unity渲染路径 Rendering Paths介绍
Unity支持不同的渲染路径。应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个。不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影。 项目所使用的渲染路径在Player Settings选择。此外,可以为每个摄像机重写(不同摄像机可以是不同的设置)。如果图形卡不能处理选定的渲染路径,Unity将自动使用一个较低保真度的设置。因此,在GPU上不能处理延迟照明(Deferred Lighting),将使用正向渲染(Forward Rendering )。如果不支持正向渲染(Forwa转载 2016-06-02 11:09:31 · 2964 阅读 · 0 评论 -
untiy 3d ShaderLab_第8章_3_ 单光贴图和Forward 渲染路径
在单光照贴图的情况下,Camera的RenderingPath为VertexLit时,有一个不理想的地方就是被烘焙过的静态物体,默认的材质不会受到实时光照的影响。当然,可以通过提供自定义的材质改变这一行为,但是很麻烦。在RenderingPath为Forward时,这种麻烦就不会存在了,经过烘焙物体,Unity的默认材质会继续受到实时Pixel光源的影响。首先我们可以注意到,相比于VertexLit模式下,烘焙过的物体,默认材质不再受到实时光源的影响,我们在Forward模式下的黄色实时Pixel光源仍对烘原创 2016-06-01 21:14:27 · 4060 阅读 · 0 评论 -
untiy 3d ShaderLab_第8章_2_在效果和性能间进行权衡
Resolution 分辨率: 每世界单位中光照图分辨率的大小。因此当设置分辨率为50的一个10单位乘以10单位的平面将产生一张500*500像素的光照贴图。Scale In Lightmap 光照图比率: (只作用于可渲染网格)特别大的数值将分配给可渲染网格更大的分辨率。最终分辨率比例(光照图缩放)*(物体世界坐标空间所占面积)*全局分辨率烘培设置)如果设置为0物体将不被烘培。(但是它依旧对其他的物体有影响)Quality 质量: 高质量(比较好的效果)和低质量(计算速度快)的预设值。它们将影响最终聚原创 2016-05-11 20:52:26 · 3701 阅读 · 1 评论 -
untiy 3d ShaderLab_第8章_ 基于光照贴图的烘焙照明
和刚刚的Shader不同的是,此Shader多了一个LightMode为VertexLMRGBM的Pass,在这个Pass中,我们读取了Beast的烘焙结果unity_Lightmap,然后将其输出。这样,我们就看到应用了刚刚烘焙结果的球体,就和场景中其他使用了默认材质的物体一样。 LightMode为VertexLMRGBM只适用于发布为桌面应用的情况,此时灯光贴图的编码为RGBM。如果是移动终端,大部分情况下,光照贴图的编码为double-LDR,此时应该提供一个LightMode为Vertex原创 2016-05-10 20:08:05 · 3720 阅读 · 0 评论 -
untiy 3d ShaderLab_第7章_ Forward渲染路径_4_Forward渲染路径总结
在ForwardBase的Pass内,_WorldSpaceLightPos0和_LightColor0只会含有第一个Pixel行光的有效组合。在没有Pixel平行光时,_WorIdSapceLightPos0也可能含有1个Pixel点光源的位置数据,但是并没有有效的_LightColor0数据。在ForwardAdd内,_WorldSpaceLightPos0和_LightColor0只会含有Pixel光源,而且按照强度大小,平行光优先的顺序依次对每一个Pixe!光源执行一次。 在Forwar原创 2016-05-10 14:10:07 · 1350 阅读 · 0 评论 -
untiy 3d ShaderLab_第7章_ Forward渲染路径_3_重要光源在ForwardAdd内的执行
场景中存在一个足够强大的黄色Pixel平行光,强大到可以保证它一定会被ForwardBase内的_WorldSpaceLightPos0所捕捉,从而不会让任何其他Pixel光源落到ForwardBase内,而只会被放到ForwardAdd Pass的_WorIdSpaceLightPos0内。最后,场景中还有5个RenderMode为Not Important,即Vertex光源,其色彩分别为青色、橙色、绿色、红色和蓝色。编译并运行此场景,然后依次将5个Vertex光源设为Pixel,结果如图7.8所示,右原创 2016-05-07 18:07:00 · 2783 阅读 · 0 评论 -
untiy 3d ShaderLab_第7章_ Forward渲染路径_2_Forward渲染路径下的重要光源
这种情形的存在原因,是Unity为FowardAdd Pass准备的光源数据在再次轮回到为FowardBase准备数据时Unity未及时清除的结果。Unity出于性能方面的考虑,因为毕竟在CPU和GPU之间频繁传递数据是很耗资源的一件事情。7.2.5 Forward渲染路径下的Pixel光源小结 至此我们可以总结,在LightMode = ForwardBase,LightMode=FowardAdd的Pass内,_WorldSapceLightPos0只会含有Pixel光源。在ForwardB原创 2016-05-04 21:15:04 · 4490 阅读 · 0 评论 -
untiy 3d ShaderLab_第7章_ Forward渲染路径_1_ForwardBase和ForwardAdd
我们编译运行一下,根据上面图中所示的结果,在VertexLit渲染模式下, ForwardBase和FowardAdd的LightMode都不被支持。另外,FwdAddX.shader在3个渲染路径下都没有输出,这说明ForwardAdd这个Pass需要和ForwardBase一起使用,否则会被Unity所忽视掉。在Forward和Deferred渲染路径下,Forward的Pass均能被正常渲染。原创 2016-05-04 14:59:35 · 9902 阅读 · 1 评论 -
untiy 3d ShaderLab_第6章_VertexLit渲染路径_4_顶点照明和Unity存放光源的第三种方式
对于LightMode=Vertex的Pass来说,有效存取光源的方法是读取unity_LightPosition[4]和unity_LightColor[4],这两个数组可以保证在Unity的3个RenderingPath下都有效工作。需要注意的是,unity_LightPosition[4]中的点光源的位置向量和平行光的方向向量都处于CameraSpace中。如果各位想写一个只逐Vertex照明的Shader,又不想操作这些恼人的数组,可以直接使用UnityCG.cginc中的ShadeVertexLi原创 2016-05-04 12:01:16 · 2989 阅读 · 0 评论 -
untiy 3d ShaderLab_第6章_VertexLit渲染路径_3_顶点照明和Unity存放光源的第二种方式
同样,如果你乐意,可以打开Lab 2chaos场景,就像刚刚检测unity 4LightPos[X,Y,Z]0时一样,你会看到默认材质中最后一个Forward Pass执行过后的未清除的光源数据,如图6.6所示。由此可见,_WorldSpaceLightPos0和_LightColor0中不包含为Vertex Pass准备的数据。原创 2016-05-03 19:47:08 · 4873 阅读 · 0 评论 -
untiy 3d ShaderLab_第6章_VertexLit渲染路径_2_顶点照明和Unity存放光源的第一种方式
我们在unity 4LightPos[X,Y,Z]0中看到了数据,而且如果是在Forward的渲染路径下,如果我们改变光源的状态,比如从Pixel光源变为Vertex光源,即从点光源变为平行光,unity_4LightPos[X,Y,Z]0都会有相应的改变。但是不要误会,这并不是Unity为Vertex的Pass中的unity_4LightPos[X,Y,Z]0提供的数据,而是最后一个ForwardPass渲染过后遗留的未及时清除的无效数据。 所以结论就是,在LightMode = Vertex原创 2016-05-03 19:26:03 · 4566 阅读 · 0 评论 -
untiy 3d ShaderLab_第6章_VertexLit渲染路径_1_顶点照明
顾名思义,逐顶点计算的Vertex Light就是基于物体的每一个顶点进行光的照明计算,然后根据顶点的光照信息对面片土的像素光照进行线性插值,这个线性插值操作是通过GPU的硬件来完成的,速度不是一般的快,因此这部分的消耗可以不用考虑。所以Vertex Lighting的效果和效率与物体的网格密度有密切关系,网格细分大,计算结果就比较贴近实物,但是GPU计算消耗就也相应地增加。原创 2016-05-03 16:53:05 · 3259 阅读 · 0 评论 -
untiy 3d ShaderLab_第5章_第一个被执行的Pass_2_3个渲染路径之外
我们现在可以编译并运行看看了。先把Camera切换到VertexLit模式下,如图所示,在针对Deferred和Forward渲染路径设计的Shader中,因为不能在VertexLit模式下执行,所以Always Pass也没有被执行。而在针对VertexLit渲染路径的Shader中,Always Pass的执行和在代码中的位置有关系,在代码中靠前,则先执行,然后被混合模式为Blend One One的Vertex Pass中输出的红色混合,输出为黄色;在代码中靠后,则后执行,其混合模式为Blend On原创 2016-04-29 18:44:43 · 4854 阅读 · 0 评论 -
untiy 3d ShaderLab_第5章_第一个被执行的Pass_1_不同LightMode 被选择的顺序
我们可以总结出,Unity在Deferred渲染路径下,则会寻找可在Deferred渲染模式下的Pass然后返回,并不会执行其他渲染路径下的Pass,但是如果找不到Deferred状态下的Pass,则会再寻找Forward模式下的Pass并执行,然后返回,如果Forward模式下的Pass依然没有找到,则会寻找VertexLit模式下的Pass并执行。在Forward渲染路径下,会优先寻找Forward模式下可渲染的Pass,如果找不到,才会寻找 VertexLit模式下可渲染的Pass。原创 2016-04-29 18:15:50 · 5196 阅读 · 0 评论 -
untiy 3d ShaderLab_第4章_基本的光照模型
对于粗糙物体表面的某一点,其亮度应该和入射光线与该点的垂直程度相关,也就是入射光线与此点法线的夹角相关。在上面的高光计算方式中,我们确确实实计算了一次入射光线的反射,然后考察此反射光线进入视野的程度。还有一种更简单、更易于调节的方法是使用入射光线和视线的中间平均值,即半角向量,然后使用此半角向量和法线计算出一个和视角相关的高光,此种高光计算方式即为BlinnPhong。原创 2016-04-29 17:31:07 · 3797 阅读 · 0 评论 -
untiy 3d ShaderLab_第3章_Shader(着色器)中用到的各种空间概念
在Unity的脚本中,可以通过transform.worldToLocalMatrix这个矩阵的MultiplyPoint()或者MultiplyVector()方法,把世界坐标表达的矢量转换为为此物体的模型空间表达的矢量。在Shader中,可以通过左乘_World20bject这个矩阵来完成此项任务。剪切空间3.5.1投影原创 2016-04-28 11:32:06 · 980 阅读 · 0 评论 -
untiy 3d ShaderLab第 1 章 Shader(着色器)的概念和在 3D 游戏中的作用
Shader 即着色器,是一款运行在 GPU 上的程序,用来对三维物体进行着色处理,光与影的计算, 纹理颜色的呈现等,从而将游戏引擎中 一个个作为抽象的几何数据存在的模型、场景和特效,以和 真实世界类似的光与影的形式呈现于玩家的眼中。不论是诸如"魔兽世界"这样的大型网游,还是 诸如"愤怒的小鸟"这类大众小游戏,都是因为着色器的功效,我们才能观察、体会,甚至是身临 其境般地沉浸在计算机技术所创造的虚拟世界中 。因此可以说, Shader 就是照亮虚拟世界的"魔法"。 着色器在 GPU 上所做的 工作原创 2016-02-06 20:14:28 · 2082 阅读 · 0 评论 -
Unity3D内置着色器
Unity内部提供了一些可以直接使用的着色器,这些内置着色器包括以下6个方面:(1)Performance of Unity shaders 着色器的性能和两个方面有关:shader本身和render path。 Deferred Lighting:每个对象都会被绘制2遍,无论其是否受到光照,性能与纹理数和具体的计算过程有关。 Vertex Lit:每个对象只被绘制一次,性能与纹理数和具体的计算过程有关。 Forward rendering:性能和灯光数量有关。 Vertex-Lit原创 2016-02-25 14:10:16 · 2779 阅读 · 0 评论 -
Rendering Path
Rendering Path:渲染路径 设置:1、Player Setting,2、Camera(会覆盖PlayerSetting中的设置) 选择:根据渲染内容和目标平台来选择合适的Rendering Path,当一个GPU不能处理Deferred Lighting时,会自动切换到Forward Lighting,当Forward Lighting不支持时,会自动切换到Vertexx Lig。原创 2016-02-25 14:28:42 · 2081 阅读 · 0 评论 -
Shader Overview
Unity有三种形式的Shader: (1)Surface Shaders:对光照管线的高层抽象,受光照和影子效果影响的shader,使用Cg/HLSL语言编写;不进行light相关操作的shader别使用Surface Shader,因为它会进行一堆光照计算;Surface Shader会自动转换为Vertex and Fragment Shaders。 (2)Vertex and Fragment Shaders:最灵活的方式,不处理light相关操作的shader推荐使用该方式,使用Cg/HL原创 2016-02-25 14:20:29 · 843 阅读 · 0 评论 -
基础Shader
Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组 合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设 置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,将材质赋予合适的 renderer(渲染器)来进行渲染(输出)了。原创 2015-11-12 00:38:17 · 1333 阅读 · 1 评论 -
untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_2_Unity中Shader的3种形态
2.2 Unity的ShaderLab所支持的Shader2.3 Unity中Shader的3种形态2.3.1固定管线2.3.2可编程Shader对于面向OpenGL接口的情况,还可以使用#pragma profileoption MaxTexIndirection = 256这样的指令。当编译平台为独立的可执行桌面OpenGL程序时,可以使用#pragma glsl把Cg代码转换为GLSL代码,从而绕过在Shader Model 3.0中的一些指令限制。如果大家熟悉OpenGL接口,也可以使用#pr原创 2016-04-27 18:48:30 · 988 阅读 · 0 评论 -
untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_1_Unity通过ShaderLab 来组织Shader
真正用于呈现渲染物体的内容是在SubShader中实现的。之所以用SubShader,是为了能让开发者针对不同性能的显卡编写不同的Shader,因为现实中并不是每个人都用相同的显卡。由于显卡千差万别,为了能让用户编写的游戏最大化地在各种各样的GPU上运行,尽可能地呈现最好的效果,就用SubShader来组织具体的实现,使Unity在运行时会针对实际的运行环境,从上到下选出最优的SubShader实现来呈现开发者的作品。从理论上来说,SubShader的数量是没有限制的,但实际操作中为了减少文件的大小,一般写原创 2016-04-27 18:32:55 · 702 阅读 · 0 评论 -
untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_3_Shader的数据接口:属性和 uniform变量
cube属性是3D贴图,是Texture 2D贴图的子类,range属性则是一种限制了范围的float类型,本质和float一样。如果我们在脚本中进行操作的属性在Shader中并不存在,那么Unity只会将此操作忽略,而不会报错。矩阵: 不能在属性块定义的变量。除了Unity的固定管线因为有其特定语法之外,在Properties块中定义的属性必须在代码中再声明一次才能被使用。原创 2016-04-27 18:54:24 · 3798 阅读 · 0 评论