ShaderLab: Legacy Lighting
来源:互联网 发布:过滤器相关java面试题 编辑:程序博客网 时间:2024/06/17 00:28
ShaderLab: Legacy Lighting
材质和光照参数被用来控制内建的顶点光照。顶点光照是标准的 Direct3D/OpenGL 光照模型用来计算每个顶点的光照。Lighting on 将其打开。光照被 Material 模块影响, ColorMaterial 和 SeparateSpecular 命令.
Note: 当vertex programs被使用时 Material/Lighting 命令不会生效;在这种情况下,所有的计算都被完整的描述在shader中。目前使用可编程 shader 代替旧的顶点光照是明智的。这样你不需要使用任何命令描述,而是自定义 vertex and fragment programs ,来做所有的光照,贴图和其他任何事。
对于任何几和渲染,顶点的颜色和光照影响都是第一个被计算的。它在顶点级别被操作,并计算在应用纹理之前它的基础颜色。
Syntax
顶层的命了控制了是否使用固定管线光照,和一些配置选项。主要的步骤是在 Material Block,将在后边介绍。
Color
Color color
将对象设为纯色。颜色是在圆括号中的RGBA值,或在方括号中的颜色属性名称。
Material
Material {Material Block}
Material 块用来定义对象的材质属性。
Lighting
Lighting On | Off
为了使定义在材质块中的设置有效,你必须使用 Lighting On 命令开启光照。如果光照是关闭状态,颜色会直接从 Color 命令获得。
SeparateSpecular
SeparateSpecular On | Off
该命令使镜面光泽被加到shader pass的最后,因此,镜面光泽不受纹理化影响。只有当 Lighting On 被使用时,才有效。
ColorMaterial
ColorMaterial AmbientAndDiffuse | Emission
让逐顶点颜色代替材质中的颜色。AmbientAndDiffuse 代替材质中的 Ambient 和 Diffuse 值; Emission 代替材质中的 Emission 值。
Material Block
该块包含了材质对光的响应的设置。任何属性都可以忽略,这种情况下,它们默认为黑色(例如 没有效果)。
Diffuse color: The diffuse color component. 这是一个对象的基础颜色。
Ambient color: The ambient color component. 这是当物体被 ambient light 照射时的颜色。在 Lighting Window中设置。
Specular color: 对象高光的颜色。
Shininess number: 高光的锐度, 在 0 和 1 之间。 当值为 0 你会得到一个巨大的高光,它看起来更像漫反射光,为 1 时你会得到一个小光斑。
Emission color: 当物体没有被任何光照亮时的颜色。
所有光击中物体后的颜色是:
Ambient * Lighting Window’s Ambient Intensity setting + (Light Color * Diffuse + Light Color * Specular) + Emission
等式中的光照部分,被复用于所有击中该对象的光。
通常,你希望漫反射的光照与环境光颜色相同。(所有 built-in Unity shaders 都是这样).
Examples
总是渲染物体为纯红色:
Shader "Solid Red" { SubShader { Pass { Color (1,0,0,0) } }}
基础的shader,用来给物体上色为白色,并提供顶点光照:
Shader "VertexLit White" { SubShader { Pass { Material { Diffuse (1,1,1,1) Ambient (1,1,1,1) } Lighting On } }}
一个扩展的版本,它把材质颜色变为一个在材质监视面板中可见的属性:
Shader "VertexLit Simple" { Properties { _Color ("Main Color", COLOR) = (1,1,1,1) } SubShader { Pass { Material { Diffuse [_Color] Ambient [_Color] } Lighting On } }}
最后,一个完全成熟的顶点光照shader (see also SetTexture reference page):
Shader "VertexLit" { Properties { _Color ("Main Color", Color) = (1,1,1,0) _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] { Combine texture * primary DOUBLE, texture * primary } } }}
- ShaderLab: Legacy Lighting
- ShaderLab: Legacy Texture Combiners
- ShaderLab: Legacy Alpha Testing
- ShaderLab: Legacy Fog
- ShaderLab: Legacy BindChannels
- ShaderLab Tutorials-Lighting
- Unity旧延迟光照渲染路径( Legacy Deferred Lighting Rendering Path)
- Lighting
- Unity-shaderLab
- shaderlab 关键字
- ShaderLab 笔计一
- ShaderLab: Stencil
- ShaderLab-UV
- shaderlab 基础
- shaderLab语法
- Shaderlab blend
- ShaderLab: Pass
- ShaderLab Syntax
- 洛谷p1455搭配购买
- GridViewColumn中设置自动填充的列宽
- 入门专题-git
- 心跳包
- ios常见问题——The file “XXX.app” couldn’t be opened because you don’t have permission to view it.
- ShaderLab: Legacy Lighting
- android的原生SlidingDrawer禁止触摸滑动
- 二次型求导
- activemq的几种基本通信方式总结
- jQuery插件写法
- 【mysql 分组取前几条】 先按某字段分组再取每组中前N条记录
- rand() 和 srand()函数 (1)
- redis简介
- IaaS、PaaS、SaaS、CaaS、MaaS的区别_云计算概念大全