From Unify Community Wiki
Revision as of 19:27, 19 October 2009 by NCarter (Talk | contribs)

Jump to: navigation, search

Author: Aras Pranckevicius


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