;===========================
; Vertex/Fragment templates
;===========================
vf_standard
{
  ; Most-often used shader for static objects
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    file=standard_f.cg
  }
}
;-------------------------------------------------
vf_standard_transparent
{
  ; Shader for transparent (blended) materials
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    file=standard_transparent_f.cg
  }
}
;-------------------------------------------------
vf_skinned
{
  ; Most-often used shader for static objects
  vertex_shader 
  {
    file=standard_skinned_v.cg
  }
  fragment_shader
  {
    file=standard_skinned_f.cg
  }
}
;-------------------------------------------------
vf_animate
{
  ; Animation test (top moves around)
  vertex_shader 
  {
    file=animate_test_v.cg
  }
  fragment_shader
  {
    file=standard_f.cg
  }
}
;-------------------------------------------------
vf_vertexcolor
{
  ; Carlswood uses vertex coloring a lot in the grass. 
  ; Other tracks may use 'standard_v.cg' and 'standard_f.cg' instead.
  vertex_shader 
  {
    file=standard_vc_v.cg
  }
  fragment_shader
  {
    file=standard_vc_f.cg
  }
}
;-------------------------------------------------
vf_animate
{
  ; Animation test (top moves around)
  vertex_shader 
  {
    file=animate_test_v.cg
  }
  fragment_shader
  {
    file=standard_f.cg
  }
}
;-------------------------------------------------
vf_road
{
  ; The road uses specularity but burned through the red channel to get a coarse gloss map.
  ; Add 'mode=linear' for layer1.
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    ; file=standard_detail_f.cg
    ; Burn specularity through alpha
    ; file=standard_burn_a_f.cg
  }
}
;-------------------------------------------------
vf_sky
{
  vertex_shader
  {
    ;file=sky_daynight_v.cg
    file=sky_v.cg
  }
  fragment_shader
  {
    ;file=sky_daynight_f.cg
    file=sky_f.cg
  }
}
;-------------------------------------------------
vf_bump
{
  vertex_shader
  {
    file=standard_bump_v.cg
  }
  fragment_shader
  {
    file=standard_bump_f.cg
  }
}
;-------------------------------------------------
vf_tree
{
  ; Tree fake their normals pointing up
  vertex_shader
  {
    file=standard_xtree_v.cg
  }
  fragment_shader
  {
    file=standard_tree_f.cg
  }
}
;-------------------------------------------
vf_reflect
{
  ; Just reflection
  vertex_shader
  {
    file=dyn_standard_reflect_v.cg
  }
  fragment_shader
  {
    file=dyn_standard_reflect_f.cg
  }
}
;-------------------------------------------
vf_reflect_bump
{
  ; Texture+bumpmap+reflection map
  vertex_shader
  {
    file=dyn_standard_bump_reflect_v.cg
    ;file=dyn_standard_reflect_v.cg
  }
  fragment_shader
  {
    file=dyn_standard_bump_reflect_f.cg
    ;file=dyn_standard_reflect_f.cg
  }
}
;-------------------------------------------
vf_mix1w
{
  ; Single texture, world mapped
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    file=standard_mix1w_f.cg
  }
}
;-------------------------------------------
vf_mix2
{
  ; 2 textures, both world mapped
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    file=standard_mix2_f.cg
  }
}
;-------------------------------------------
vf_mix2w
{
  ; 2 textures with world mapping for the 2nd texture
  vertex_shader 
  {
    file=standard_v.cg
  }
  fragment_shader
  {
    file=standard_mix2w_f.cg
  }
}
;=================================================
;                  Shaders
;=================================================
shader_Newtree~vf_tree
{
  cull=none
  layer0
  {
    map=textures/tree_01.dds
    alpha_to_coverage=1
    alphafunc=gequal 8
    depthwrite=1
  }
}
;-------------------------------------------------
shader_Newcurbs~vf_bump
{
  diffuse=1 1 1
  ;ambient=0 0 0
  specular=0.5 0.5 0.5
  shininess=30
  tangents=1
  layer0
  {
    map=textures/sidewalk_border_01.dds
  }
  layer1
  {
    map=textures/sidewalk_border_01_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newconcrete~vf_reflect_bump
{
  reflect=0.01
  diffuse=.35 .35 .35
  ; ambient=0 0 0
  specular=.1 .1 .1
  shininess=128
  tangents=1
  layer0
  {
    map=textures/sidewalk.dds
  }
  layer1
  {
    map=textures/sidewalk_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newcrossing_90~vf_reflect_bump
{
  reflect=0.01
  diffuse=.35 .35 .35
  ; ambient=0 0 0
  specular=.1 .1 .1
  shininess=128
  tangents=1
  layer0
  {
    map=textures/road_crossing_90_degree.dds
  }
  layer1
  {
    map=textures/road_crossing_90_degree_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newroad~vf_reflect_bump
{
  reflect=0.01
  diffuse=.5 .5 .5
  ; ambient=0 0 0
  specular=.1 .1 .1
  shininess=128
  tangents=1
  layer0
  {
    map=textures/road.dds
  }
  layer1
  {
    map=textures/road_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newroad_passage~vf_reflect_bump
{
  reflect=0.01
  diffuse=.5 .5 .5
  ; ambient=0 0 0
  specular=.1 .1 .1
  shininess=128
  tangents=1
  layer0
  {
    map=textures/road_passage.dds
  }
  layer1
  {
    map=textures/road_passage_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newfacade_1~vf_standard
{
  layer0
  {
	map=textures/facades_8_128x512px_04.dds
  }
}
;-------------------------------------------------
shader_Newfacade_2~vf_standard
{
  layer0
  {
	map=textures/facades_8_128x512px_02.dds
  }
}
;-------------------------------------------------
shader_Newfacade_3~vf_standard
{
  layer0
  {
	map=textures/facades_8_128x512px_01.dds
  }
}
;-------------------------------------------------
shader_Newfacade_4~vf_standard
{
  layer0
  {
	map=textures/facades_8_64x256px_04.dds
  }
}
;-------------------------------------------------
shader_Newfacade_5~vf_standard
{
  layer0
  {
	map=textures/facades_8_128x512px_03.dds
  }
}
;-------------------------------------------------
shader_Newterrrain_roof~vf_standard
{
  layer0
  {
	map=textures/green_red.dds
  }
}
;-------------------------------------------------
shader_Newskydome~vf_sky
{
  sky=1
  ; fog=1
  cull=none
  layer0
  {
    map=textures/skydome_01.dds
    depthfunc=always
  }
}
;-------------------------------------------------
shader_Newterrain~vf_mix2
{
  ; Texture scaling for all mixed textures (layer1 onwards)
  scale=0.075
  layer0
  {
    map=textures/alpental_gravel1_small_dif.dds
	scale=0.001
  }
  layer1
  {
    ;map=textures/cliff_basalt_frozen.dds
    map=textures/alpental_grnd1_med.dds
	scale=0.001
  }
  layer2
  {
    map=textures/control_4.dds
	;mode=linear
	scale=0.001
  }
  control
  {
	a=0.5
  }
}
;-------------------------------------------------
shader_Newsand~vf_mix2
{
  ; Texture scaling for all mixed textures (layer1 onwards)
  scale=0.075
  layer0
  {
    map=textures/ac_sanddet_dif003a.dds
  }
  layer1
  {
    map=textures/alp_grass2_mid.dds
  }
  layer2
  {
    map=textures/control_4.dds
	scale=0.001
  }
  control
  {
	a=0.5
  }
}
;-------------------------------------------------
shader_Newgrass~vf_mix2
{
  ; Texture scaling for all mixed textures (layer1 onwards)
  scale=0.075
  layer0
  {
    map=textures/alpental_grnd1_med.dds
  }
  layer1
  {
    map=textures/alp_grass1_mid.dds
  }
  layer2
  {
    map=textures/control_4.dds
	scale=0.001
  }
  control
  {
	a=0.5
  }
}
;-------------------------------------------------
shader_Newgravel~vf_mix2
{
  ; Texture scaling for all mixed textures (layer1 onwards)
  scale=0.075
  layer0
  {
    map=textures/alp_grass2_mid.dds
  }
  layer1
  {
    map=textures/alpental_gravel1_small_dif.dds
  }
  layer2
  {
    map=textures/control_4.dds
	scale=0.001
  }
  control
  {
	a=0.5
  }
}
;-------------------------------------------------
shader_Newads_wall_1~vf_standard
{
  layer0
  {
    map=textures/ads_1.dds
  }
}
;-------------------------------------------------
shader_Newads_wall_2~vf_standard
{
  layer0
  {
    map=textures/ads_2.dds
  }
}
;-------------------------------------------------
shader_Newwall_barriers~vf_standard
{
  layer0
  {
    map=textures/walls_01.dds
  }
}
;-------------------------------------------------
shader_cone~vf_bump
{
  diffuse=1 1 1
  ;ambient=1 1 1
  specular=0.5 0.5 0.5
  emission=5 5 5
  shininess=30
  tangents=1
  layer0
  {
    map=textures/cone.dds
  }
  layer1
  {
    map=textures/cone_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newcranes~vf_bump
{
  diffuse=1 1 1
  ;ambient=1 1 1
  specular=0.5 0.5 0.5
  emission=5 5 5
  shininess=30
  tangents=1
  layer0
  {
    map=textures/crane.dds
  }
  layer1
  {
    map=textures/crane_normals.dds
	mode=linear
  }
}
;-------------------------------------------------
shader_Newrocks~vf_bump
{
  diffuse=1 1 1
  ;ambient=1 1 1
  specular=0.5 0.5 0.5
  emission=5 5 5
  shininess=30
  tangents=1
  layer0
  {
    map=textures/rocks_pack_01.dds
  }
  layer1
  {
    map=textures/rocks_pack_01_normals.dds
	mode=linear
  }
}
;-------------------------------------------------