【Unity3D_Shader】流水Shader的名词查找和疑问
来源:互联网 发布:安卓埋雷软件 编辑:程序博客网 时间:2024/05/18 01:51
Shader "Mobile/Transparent/Vertex Color" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Spec Color", Color) = (1,1,1,0)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.1, 1)) = 0.7
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
Category {【1】
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}【2】
ZWrite Off//关闭深度记录,用于半透明物体
Alphatest Greater 0 //Alpha大于0的物体才渲染
Blend SrcAlpha OneMinusSrcAlpha//最终颜色 = (源颜色rgb*源颜色alpha)+(累积颜色*(1-源颜色alpha)) 效果是alpha值高的地方源颜色突出,alpha低的地方,累积颜色突出
SubShader {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Pass {
ColorMaterial AmbientAndDiffuse//替代材质的环境光和漫反射值,即不受光源影响光泽,光泽自定义
Fog { Mode Off }
Lighting Off//关闭顶点光照
SeparateSpecular On//允许使用一个单独的颜色作为镜面高光
SetTexture [_MainTex] {
Combine texture * primary, texture * primary【3】
}
SetTexture [_MainTex] {
constantColor [_Color]
Combine previous * constant DOUBLE, previous * constant//DOUBLE:提亮
}
}
}
}
}
Category {
Fog { Mode Off }
Blend One One
SubShader {
}
SubShader {
}
}
}
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Spec Color", Color) = (1,1,1,0)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.1, 1)) = 0.7
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
Category {【1】
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}【2】
ZWrite Off//关闭深度记录,用于半透明物体
Alphatest Greater 0 //Alpha大于0的物体才渲染
Blend SrcAlpha OneMinusSrcAlpha//最终颜色 = (源颜色rgb*源颜色alpha)+(累积颜色*(1-源颜色alpha)) 效果是alpha值高的地方源颜色突出,alpha低的地方,累积颜色突出
SubShader {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Pass {
ColorMaterial AmbientAndDiffuse//替代材质的环境光和漫反射值,即不受光源影响光泽,光泽自定义
Fog { Mode Off }
Lighting Off//关闭顶点光照
SeparateSpecular On//允许使用一个单独的颜色作为镜面高光
SetTexture [_MainTex] {
Combine texture * primary, texture * primary【3】
}
SetTexture [_MainTex] {
constantColor [_Color]
Combine previous * constant DOUBLE, previous * constant//DOUBLE:提亮
}
}
}
}
}
【1】Category 是一个分类逻辑组。它将具有相同操作的SubShader分组到一起。大多数情况下是用来继承渲染状态。举例:
你的Shader可能含有多个SubShader, 每一个SubShader都需要关闭fog并且激活blending。这种情况下你就可以使用分类:
Shader "example" {Category {
Fog { Mode Off }
Blend One One
SubShader {
}
SubShader {
}
}
}
【2】
1)"Queue"="Transparent"
除光晕层外,物体在所有图像层最上方
预定义的Queue有:
- Background - 最早被调用的渲染,用来渲染天空盒或者背景
- Geometry - 这是默认值,用来渲染非透明物体(普通情况下,场景中的绝大多数物体应该是非透明的)
- AlphaTest - 用来渲染经过Alpha Test的像素,单独为AlphaTest设定一个Queue是出于对效率的考虑
- Transparent - 以从后往前的顺序渲染透明物体
- Overlay - 用来渲染叠加的效果,是渲染的最后阶段(比如镜头光晕等特效)
2)"IgnoreProjector"="True"
物体不会产生投影
3)"RenderType"="Transparent"
告诉系统应该在渲染非透明物体时调用我们
Unity定义了一些列这样的渲染过程,与RenderType是Opaque相对应的显而易见的是"RenderType" = "Transparent",表示渲染含有透明效果的物体时调用。在这里Tags其实暗示了你的Shader输出的是什么,如果输出中都是非透明物体,那写在Opaque里;如果想渲染透明或者半透明的像素,那应该写在Transparent中。
【3】语法
Combine ColorPart,AlphaPart
0 0
- 【Unity3D_Shader】流水Shader的名词查找和疑问
- 【Unity3D_Shader】镜面scrip的名词初步查找
- 【Unity3D_Shader】渐变shader的比较
- 【Unity3D_Shader】瞄准器射线Shader
- 【Shader】Shader名词详解
- SEO优化:新手的六大概念名词疑问
- shader 4 杂 一些和函数名词、数据结构
- Shader 简单流水效果
- 日文中的数学名词和计算机名词都是什么样的?
- 一些网络协议和名词的整理
- DVR和DVS的一些个名词
- 网络名词的全称和解释
- OPENGL 和 shader的流程
- OpenGl 的BeginMode 和 shader
- Stage的MinWidth和MinHeight的疑问
- ValueObject和DTO模式的一些疑问
- IOC模式的思考和疑问
- 关于attach和detach的疑问
- URAL1917_Titan Ruins: Better late than killed_二分搜索
- CentOS 开发问题
- 找钱方式:递归,循环的解法
- 朝鲜半岛不再被关注 金正恩玩消失成功转移焦点
- spoj705( 求不相同的子串个数)
- 【Unity3D_Shader】流水Shader的名词查找和疑问
- MYSQL的explain工具简介
- matlab .m文件转换成exe可执行文件
- 判断是否存在一条直线穿过所有的线段
- 奥巴马对20国防长演讲:埃博拉疫情必须从源头根除
- 杭电2028
- poj3261(可重复k次的最长子串)
- 解放军新装备精品课目一上高原就出洋相 各种故障
- C#和sqlserver中生成新的32位GUID