// Bump map with Parallax offset vertex program, support for this is required 
vertex_program Examples/OffsetMappingVP cg 
{ 
   source OffsetMapping.cg 
   entry_point main_vp 
   profiles vs_1_1 arbvp1 
} 

// Bump map with parallax fragment program 
fragment_program Examples/OffsetMappingFP cg
{ 
   source OffsetMapping.cg
   entry_point main_fp
   profiles ps_2_0 arbfp1
} 

// Bump map with parallax fragment program 
fragment_program Examples/OffsetMappingPS asm 
{ 
   source OffsetMapping_specular.asm 
   // sorry, only for ps_1_4 and above:) 
   syntax ps_1_4 
} 


material Examples/OffsetMapping/Specular 
{ 

  // This is the preferred technique which uses both vertex and 
   // fragment programs, supports coloured lights 
   technique 
   { 
      // do the lighting  and bump mapping with parallax pass 
      // NB we don't do decal texture here because this is repeated per light 
      pass 
      { 
       
         // Vertex program reference 
         vertex_program_ref Examples/OffsetMappingVP 
         { 
            param_named_auto lightPosition light_position_object_space 0 
            param_named_auto eyePosition camera_position_object_space 
            param_named_auto worldViewProj worldviewproj_matrix 
         } 

         // Fragment program 
         fragment_program_ref Examples/OffsetMappingFP
         { 
            param_named_auto lightDiffuse light_diffuse_colour 0 
            param_named_auto lightSpecular light_specular_colour 0 
            // Parallax Height scale and bias 
            param_named scaleBias float4 0.04 -0.02 1 0 
         } 
          
         // Normal + height(alpha) map 
         texture_unit 
         { 
            texture rockwall_NH.tga
            tex_coord_set 0 
         } 

         // Base diffuse texture map 
         texture_unit 
         { 
            texture rockwall.tga
            tex_coord_set 1 
         } 
      } 
   } 


   // This is the preferred technique which uses both vertex and 
   // fragment programs, supports coloured lights 
   technique 
   { 
      // do the lighting  and bump mapping with parallax pass 
      // NB we don't do decal texture here because this is repeated per light 
      pass 
      { 
       
         // Vertex program reference 
         vertex_program_ref Examples/OffsetMappingVP 
         { 
            param_named_auto lightPosition light_position_object_space 0 
            param_named_auto eyePosition camera_position_object_space 
            param_named_auto worldViewProj worldviewproj_matrix 
         } 

         // Fragment program 
         fragment_program_ref Examples/OffsetMappingPS 
         { 
            param_indexed_auto 0 light_diffuse_colour 0 
            param_indexed_auto 1 light_specular_colour 0 
            // Parallax Height scale and bias 
            param_indexed 2 float4 0.04 -0.02 1 0 
         } 
          
         // Normal + height(alpha) map 
         texture_unit 
         { 
            texture rockwall_NH.tga
            tex_coord_set 0 
         } 

         // Base diffuse texture map 
         texture_unit 
         { 
            texture rockwall.tga
            tex_coord_set 1 
         } 
      } 
   } 
   
   // Simple no-shader fallback
   technique 
   { 
      pass 
      { 
         // Base diffuse texture map 
         texture_unit 
         { 
            texture rockwall.tga
         } 
	  }
   }

}
