BakedVertexColorBumpSpec2

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(Removing all content from page)
m (Reverted edits by Joseph05408 (Talk); changed back to last version by NeARAZ)
Line 1: Line 1:
 +
[[Category: Unity 2.x shaders]]
 +
[[Category: Pixel lit shaders]]
  
 +
Author: [[User:NeARAZ | Aras Pranckevicius]]
 +
 +
==Description==
 +
Similar to builtin Lightmapped/Bumped Specular, but this uses lighting baked into vertex colors instead of a separate lightmap texture. Any additional Unity lights add on top of baked lighting.
 +
 +
Should work on dual texture graphics cards (NVIDIA TNT2, ATI Rage 128 and up).
 +
 +
==ShaderLab - BakedVertexColorBumpSpec2.shader==
 +
<shaderlab>Shader "Baked Vertex Lighting/Bumped Specular" {
 +
Properties {
 +
    _Color ("Main Color", Color) = (1,1,1,1)
 +
    _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
 +
    _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
 +
    _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
 +
    _BumpMap ("Bump (RGB)", 2D) = "bump" {}
 +
}
 +
 +
SubShader {
 +
    // Use standard pixel-lighting blending: first pass is opaque, further passes additive
 +
    Blend AppSrcAdd AppDstAdd
 +
   
 +
    // This pass is always drawn.
 +
    // It draws base texture multipled by per-vertex colors, multiplied by material's color
 +
    Pass {
 +
        Tags {"LightMode" = "Always"} // always draw this pass
 +
        Lighting Off
 +
        BindChannels {
 +
            Bind "Vertex", vertex
 +
            Bind "TexCoord", texcoord
 +
            Bind "Color", color
 +
        }
 +
        SetTexture [_MainTex] {
 +
            combine primary * texture // multiply vertex color by texture
 +
        }
 +
        SetTexture [_MainTex] {
 +
            constantColor [_Color]
 +
            combine previous * constant // ...and multiply by material's color
 +
        }
 +
    }
 +
 +
    // This pass is drawn when there are vertex-lit lights. This is just standard
 +
    // lighting*texture*2 pass, that adds onto baked lighting pass
 +
    Pass {
 +
        Tags {"LightMode" = "Vertex"} // draw this pass when there are vertex-lit lights
 +
        // setup vertex lighting
 +
        Material {
 +
            Diffuse [_Color]
 +
            Shininess [_Shininess]
 +
            Specular [_SpecColor]
 +
        }
 +
        Lighting On
 +
        SeperateSpecular On
 +
        ColorMask RGB
 +
 +
        SetTexture [_MainTex] { combine texture * primary DOUBLE }
 +
    }
 +
 +
    // "Paste" all passes named "PPL" from Bumped Specular shader.
 +
    // They happen to be the ones that implement per-pixel lighting.
 +
    UsePass "Bumped Specular/PPL"
 +
}
 +
 +
Fallback "VertexLit"
 +
}
 +
</shaderlab>

Revision as of 19:27, 19 October 2009


Author: Aras Pranckevicius

Description

Similar to builtin Lightmapped/Bumped Specular, but this uses lighting baked into vertex colors instead of a separate lightmap texture. Any additional Unity lights add on top of baked lighting.

Should work on dual texture graphics cards (NVIDIA TNT2, ATI Rage 128 and up).

ShaderLab - BakedVertexColorBumpSpec2.shader

<shaderlab>Shader "Baked Vertex Lighting/Bumped Specular" { Properties {

   _Color ("Main Color", Color) = (1,1,1,1)
   _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
   _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
   _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
   _BumpMap ("Bump (RGB)", 2D) = "bump" {}

}

SubShader {

   // Use standard pixel-lighting blending: first pass is opaque, further passes additive
   Blend AppSrcAdd AppDstAdd
   
   // This pass is always drawn.
   // It draws base texture multipled by per-vertex colors, multiplied by material's color
   Pass {
       Tags {"LightMode" = "Always"} // always draw this pass
       Lighting Off
       BindChannels {
           Bind "Vertex", vertex
           Bind "TexCoord", texcoord
           Bind "Color", color
       } 
       SetTexture [_MainTex] {
           combine primary * texture // multiply vertex color by texture
       } 
       SetTexture [_MainTex] {
           constantColor [_Color]
           combine previous * constant // ...and multiply by material's color
       } 
   }
   // This pass is drawn when there are vertex-lit lights. This is just standard
   // lighting*texture*2 pass, that adds onto baked lighting pass
   Pass {
       Tags {"LightMode" = "Vertex"} // draw this pass when there are vertex-lit lights
       // setup vertex lighting
       Material {
           Diffuse [_Color]
           Shininess [_Shininess]
           Specular [_SpecColor]
       }
       Lighting On
       SeperateSpecular On
       ColorMask RGB

       SetTexture [_MainTex] { combine texture * primary DOUBLE }
   }
   // "Paste" all passes named "PPL" from Bumped Specular shader.
   // They happen to be the ones that implement per-pixel lighting.
   UsePass "Bumped Specular/PPL"

}

Fallback "VertexLit" } </shaderlab>

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox