zoukankan      html  css  js  c++  java
  • Color, Material, Lighting

    Color, Material, Lighting

      The material and lighting parameters are used to control the built-in vertex lighting. Vertex lighting is the standard Direct3D/OpenGL lighting model that is computed for each vertex.

      material & parameters 参数用于控制vertex lighting。

        Lighting on turns it on. Lighting is affected by Material block, ColorMaterial and SeparateSpecular commands.

      Lighting on 命令开启顶点光照。Lighting受Material、ColorMaterial、SeparateSpecular命令的影响。

      Per-pixel lights are usually implemented with custom vertex/fragment programs and don't use vertex lighting. For these you don't use any of the commands described here, instead you define your own vertex and fragment programs where you do all lighting, texturing and anything else yourself.

      Per-pixel 光照通过通过vertex/fragment 程序来实现,它们不使用顶点光照。Per-pixel光照不使用上述的任何命令,你需要定义自己的vertex & fragment 程序,在那里你要做lighting、texturing等所有的事。

      

    [Syntax]

      Color:ColorSets the object to a solid color. A color is either four RGBA values in parenthesis, or a color property name in square brackets.

      Material:{ Material Block }The Material block is used to define the material properties of the object.

      Lighting:On | Off。For the settings defined in the Material block to have any effect, you must enable Lighting with the Lighting On command. If lighting is off instead, the color is taken straight from the Color command.

      SeparateSpecular:On | Off。 This command makes specular lighting be added to the end of the shader pass, so specular lighting is unaffected by texturing. Only has effect when Lighting On is used.

    [Material Block]

      This contains settings for how the material reacts to the light. Any of these properties can be left out, in which case they default to black (i.e. have no effect).

      Diffuse:ColorThe diffuse color component. This is an object's base color.

      Ambient:ColorThe ambient color component. This is the color the object has when it's hit by the ambient light set in the RenderSettings.

      Specular:ColorThe color of the object's specular highlight.

      Shininess:NumberThe sharpness of the highlight, between 0 and 1. At 0 you get a huge highlight that looks a lot like diffuse lighting, at 1 you get a tiny speck.

      Emission:ColorThe color of the object when it is not hit by any light.

      The full color of lights hitting the object is:

      

      The light parts of the equation (within parenthesis) is repeated for all lights that hit the object.

    [Examples]

    1、Always render object in pure red:

    Shader "Solid Red" {
        SubShader {
            Pass { Color (1,0,0,0) }
        }
    } 
    View Code

    2、Basic Shader that colors the object white and applies vertex lighting:

    Shader "VertexLit White" {
        SubShader {
            Pass {
                Material {
                    Diffuse (1,1,1,1)
                    Ambient (1,1,1,1)
                }
                Lighting On
            }
        }
    } 
    View Code

    3、An extended version that adds material color as a property visible in Material Inspector:

    Shader "VertexLit Simple" {
        Properties {
            _Color ("Main Color", COLOR) = (1,1,1,1)
        }
        SubShader {
            Pass {
                Material {
                    Diffuse [_Color]
                    Ambient [_Color]
                }
                Lighting On
            }
        }
    } 
    View Code

    4、And finally, a full fledged vertex-lit 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
                }
            }
        }
    } 
    View Code

    参考:file://localhost/Applications/Unity/Unity.app/Contents/Documentation/Documentation/Components/SL-Material.html

      

  • 相关阅读:
    qt用mingw编译时报错 multiple definition of
    作用域详解
    webpack-dev-server
    前端致命错误汇总
    那些我不知道的基础知识
    常见英语词汇第一记
    CSS权重;慎用!important
    校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
    同源策略
    用CSS实现梯形图标
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3862297.html
Copyright © 2011-2022 走看看