// NOTE: Doesn't support OpenGL1
MaterialDef Terrain Lighting {

    MaterialParameters {

        // use tri-planar mapping
        Boolean useTriPlanarMapping

        // Use ward specular instead of phong
        Boolean WardIso

        // Are we rendering TerrainGrid
        Boolean isTerrainGrid

        // Ambient color
        Color Ambient

        // Diffuse color
        Color Diffuse

        // Specular color
        Color Specular

        // Specular power/shininess
        Float Shininess : 1

        // Texture map #0
        Texture2D DiffuseMap
        Float DiffuseMap_0_scale
        Texture2D NormalMap

        // Texture map #1
        Texture2D DiffuseMap_1
        Float DiffuseMap_1_scale
        Texture2D NormalMap_1

        // Texture map #2
        Texture2D DiffuseMap_2
        Float DiffuseMap_2_scale
        Texture2D NormalMap_2

        // Texture map #3
        Texture2D DiffuseMap_3
        Float DiffuseMap_3_scale
        Texture2D NormalMap_3

        // Texture map #4
        Texture2D DiffuseMap_4
        Float DiffuseMap_4_scale
        Texture2D NormalMap_4

        // Texture map #5
        Texture2D DiffuseMap_5
        Float DiffuseMap_5_scale
        Texture2D NormalMap_5

        // Texture map #6
        Texture2D DiffuseMap_6
        Float DiffuseMap_6_scale
        Texture2D NormalMap_6

        // Texture map #7
        Texture2D DiffuseMap_7
        Float DiffuseMap_7_scale
        Texture2D NormalMap_7

        // Texture map #8
        Texture2D DiffuseMap_8
        Float DiffuseMap_8_scale
        Texture2D NormalMap_8

        // Texture map #9
        Texture2D DiffuseMap_9
        Float DiffuseMap_9_scale
        Texture2D NormalMap_9

        // Texture map #10
        Texture2D DiffuseMap_10
        Float DiffuseMap_10_scale
        Texture2D NormalMap_10

        // Texture map #11
        Texture2D DiffuseMap_11
        Float DiffuseMap_11_scale
        Texture2D NormalMap_11


        // Specular/gloss map
        Texture2D SpecularMap


        // Texture that specifies alpha values
        Texture2D AlphaMap
        Texture2D AlphaMap_1
        Texture2D AlphaMap_2

        // Texture of the glowing parts of the material
        Texture2D GlowMap

        // The glow color of the object
        Color GlowColor
    }

    Technique {

        LightMode MultiPass

        VertexShader GLSL100:   Common/MatDefs/Terrain/TerrainLighting.vert
        FragmentShader GLSL100: Common/MatDefs/Terrain/TerrainLighting.frag

        WorldParameters {
            WorldViewProjectionMatrix
            NormalMatrix
            WorldViewMatrix
            ViewMatrix
        }

        Defines {
            TRI_PLANAR_MAPPING : useTriPlanarMapping
            TERRAIN_GRID : isTerrainGrid
            WARDISO   : WardIso

            DIFFUSEMAP : DiffuseMap
            DIFFUSEMAP_1 : DiffuseMap_1
            DIFFUSEMAP_2 : DiffuseMap_2
            DIFFUSEMAP_3 : DiffuseMap_3
            DIFFUSEMAP_4 : DiffuseMap_4
            DIFFUSEMAP_5 : DiffuseMap_5
            DIFFUSEMAP_6 : DiffuseMap_6
            DIFFUSEMAP_7 : DiffuseMap_7
            DIFFUSEMAP_8 : DiffuseMap_8
            DIFFUSEMAP_9 : DiffuseMap_9
            DIFFUSEMAP_10 : DiffuseMap_10
            DIFFUSEMAP_11 : DiffuseMap_11
            NORMALMAP : NormalMap
            NORMALMAP_1 : NormalMap_1
            NORMALMAP_2 : NormalMap_2
            NORMALMAP_3 : NormalMap_3
            NORMALMAP_4 : NormalMap_4
            NORMALMAP_5 : NormalMap_5
            NORMALMAP_6 : NormalMap_6
            NORMALMAP_7 : NormalMap_7
            NORMALMAP_8 : NormalMap_8
            NORMALMAP_9 : NormalMap_9
            NORMALMAP_10 : NormalMap_10
            NORMALMAP_11 : NormalMap_11
            SPECULARMAP : SpecularMap
            ALPHAMAP : AlphaMap
            ALPHAMAP_1 : AlphaMap_1
            ALPHAMAP_2 : AlphaMap_2
            DIFFUSEMAP_0_SCALE : DiffuseMap_0_scale
            DIFFUSEMAP_1_SCALE : DiffuseMap_1_scale
            DIFFUSEMAP_2_SCALE : DiffuseMap_2_scale
            DIFFUSEMAP_3_SCALE : DiffuseMap_3_scale
            DIFFUSEMAP_4_SCALE : DiffuseMap_4_scale
            DIFFUSEMAP_5_SCALE : DiffuseMap_5_scale
            DIFFUSEMAP_6_SCALE : DiffuseMap_6_scale
            DIFFUSEMAP_7_SCALE : DiffuseMap_7_scale
            DIFFUSEMAP_8_SCALE : DiffuseMap_8_scale
            DIFFUSEMAP_9_SCALE : DiffuseMap_9_scale
            DIFFUSEMAP_10_SCALE : DiffuseMap_10_scale
            DIFFUSEMAP_11_SCALE : DiffuseMap_11_scale
        }
    }

    Technique PreShadow {

        VertexShader GLSL100 :   Common/MatDefs/Shadow/PreShadow.vert
        FragmentShader GLSL100 : Common/MatDefs/Shadow/PreShadow.frag

        WorldParameters {
            WorldViewProjectionMatrix
            WorldViewMatrix
        }

        Defines {
            DIFFUSEMAP_ALPHA : DiffuseMap
        }

        RenderState {
            FaceCull Off
            DepthTest On
            DepthWrite On
            PolyOffset 5 0
            ColorWrite Off
        }

    }

  Technique PreNormalPass {

        VertexShader GLSL100 :   Common/MatDefs/SSAO/normal.vert
        FragmentShader GLSL100 : Common/MatDefs/SSAO/normal.frag

        WorldParameters {
            WorldViewProjectionMatrix
            WorldViewMatrix
            NormalMatrix
        }

        Defines {
            DIFFUSEMAP_ALPHA : DiffuseMap
        }

        RenderState {

        }

    }

    Technique GBuf {

        VertexShader GLSL100:   Common/MatDefs/Light/GBuf.vert
        FragmentShader GLSL100: Common/MatDefs/Light/GBuf.frag

        WorldParameters {
            WorldViewProjectionMatrix
            WorldMatrix
        }

        Defines {
            VERTEX_COLOR : UseVertexColor
            MATERIAL_COLORS : UseMaterialColors
            V_TANGENT : VTangent
            MINNAERT  : Minnaert
            WARDISO   : WardIso

            DIFFUSEMAP : DiffuseMap
            NORMALMAP : NormalMap
            SPECULARMAP : SpecularMap
            PARALLAXMAP : ParallaxMap
        }
    }

    Technique FixedFunc {
        LightMode FixedPipeline
    }

    Technique Glow {

        VertexShader GLSL100:   Common/MatDefs/Misc/SimpleTextured.vert
        FragmentShader GLSL100: Common/MatDefs/Light/Glow.frag

        WorldParameters {
            WorldViewProjectionMatrix
        }

        Defines {
            HAS_GLOWMAP : GlowMap
            HAS_GLOWCOLOR : GlowColor
        }
    }

}