geometry shader lod_geometry dash_heal geometry(3)

电脑杂谈  发布时间:2017-05-21 13:14:27  来源:网络整理

oFloat -任意一个浮点数;

oVector -一个四维数;

·defaultValue定义了这个属性的默认,通过输入一个符合式的默认来指定对应属性的初始(某些效果可能需要某些特定的参数来达到需要的效果,虽然这些可以在之后在进行调整,但是如果默认就指定为想要的的话就省去了一个个调整的时间,方便很多)。

oColor -以0~1定义的rgba颜色,比如(1,1,1,1);

o2D/Rect/Cube -对于贴图来说,默认可以为一个代表默认tint颜色的字符串,可以是空字符串或者”white”,”black”,”gray”,”bump”中的一个

oFloat,Range -某个指定的浮点数

oVector -一个4维数,写为(x,y,z,w)

·另外还有一个{option},它只对2D,Rect或者Cube贴图有关,在写输入时我们最少要在贴图之后写一对什么都不含的空白的{},当我们需要打开特定选项时可以把其写在这对花括号内。如果需要同时打开多个选项,可以使用空白分隔。可能的选择有ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal中的一个,这些都是OpenGL中TexGen的模式,具体的留到后面有机会再说。

所以,一组属性的申明看起来也许会是这个样子的

//Define a color with a default value of semi-transparent blue

_MainColor ("Main Color", Color) = (0,0,1,0.5)

//Define a texture with a default of white

_Texture ("Texture", 2D) = "white" {}

现在看懂上面那段Shader(以及其他所有Shader)的Properties部分应该不会有任何问题了。接下来就是SubShader部分了。

Tags

表面着色器可以被若干的标签(tags)所修饰,而硬件将通过判定这些标签来决定什么时候调用该着色器。比如我们的例子中SubShader的第一句

Tags { "RenderType"="Opaque" }

告诉了系统应该在渲染非透明物体时调用我们。Unity定义了一些列这样的渲染过程,与RenderType是Opaque相对应的显而易见的是"RenderType" = "Transparent",表示渲染含有透明效果的物体时调用。在这里Tags其实暗示了你的Shader输出的是什么,如果输出中都是非透明物体,那写在Opaque里;如果想渲染透明或者半透明的像素,那应该写在Transparent中。

另外比较有用的标签还有"IgnoreProjector"="True"(不被Projectors影响),"ForceNoShadowCasting"="True"(从不产生阴影)以及"Queue"="xxx"(指定渲染顺序队列)。这里想要着重说一下的是Queue这个标签,如果你使用Unity做过一些透明和不透明物体的混合的话,很可能已经遇到过不透明物体无法呈现在透明物体之后的情况。这种情况很可能是由于Shader的渲染顺序不正确导致的。Queue指定了物体的渲染顺序,预定义的Queue有:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-48390-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 马春云
      马春云

    • 杜旃
      杜旃

      我怎么感觉你是来秀优越感的呢

    • 杨英范
      杨英范

      北洋不得不拱手让出制海权甚至一放弃自己的旅顺大本营二躲进威海大本营而全军覆没

    热点图片
    拼命载入中...