ShaderLotskirt

From SimsWiki
Revision as of 13:15, 22 April 2007 by Niol (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

EP0-TS2
0xCD7FE87A
0x1C0532FA
0x0C50FBBF
0xFF439C10
# lotskirt

#
# Shaders for lot skirt
#
#


seti  lotSkirtLayer -2


# ==============================================================================

define LotSkirtMaterialDefinition()

   setb hasColor false
   seti totalLights 0

   material
      setc stdMatDiffCoef $terrainMatDiffCoef
      
      shader -layer ($lotSkirtLayer * 8)
         validateRenderShaderContext -vertexFormat position      0 required
         validateRenderShaderContext -vertexFormat normal        0 required
         validateRenderShaderContext -vertexFormat texcoord      0 required

        # create DetermineHardwareSupport()
      
         #if ($useFixedFunctionPath)
      
            # not all lots seem to have this data, causing validation errors, making this a dynamic predicate solves this problem.
            setb  hasColor (hasVertexFormat(color,0))
            if ($hasColor)
               validateRenderShaderContext -vertexFormat      color   0 required
            endif
            
            
            pass -fixedFunction
               create LightingStates()
   
               create AttenuatedMatCoef(1.0)
               alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)
               fillmode $stdMatFillMode
                  
               stage
                  texture $surfaceTexture
                  textureAddressing tile tile
                  textureBlend multiply(texture diffuse) select(diffuse)
               end 
            end
         #<
         else

            create SetupCommonHWShaderVariablesAndPredicates()
   
            if ($hasColor)
               vertexFormatPred color         0 true
            endif
            
            
            pass
               create NonStandardLighting()
               fillmode $stdMatFillMode
   
               alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)
   
               shaderProgram -target vertexProgram -method link
                  create BindsForHardwareVS1Transforms(false false)
                  create BindsForLighting($kFullLighting)
                  
                  # override diffuse, since DX8 path divs by 2.
                  
                                 
                  if ($totalLights)
                     bindConstants 14 -bindingID immediateData -data (2,2,2,1)
                     shaderFragment TransformRigidForLighting1_1
                     create DX8DiffusePassLightFragments(true  false 0 $totalLights $distantLightCount $pointLightCount $spotLightCount 1_1)
                     shaderFragment CopyVertexAlphaToDiffuse1_1
                     
                     stage
                        texture $surfaceTexture
                        textureAddressing tile tile
                        textureBlend multiply(texture diffuse) select(diffuse)
                     end 
                  else
   
                     shaderFragment TransformPositionRigidNoLighting1_1
                     shaderFragment Copy2DTexcoords1_1
                     shaderFragment AmbientLightingVertexColorMaterial1_1
                     stage
                        texture $surfaceTexture
                        textureAddressing tile tile
                        textureBlend multiply(texture diffuse) select(diffuse)
                     end 
                  endif
                  
               end
               
               
               
            end #end pass
         endif  # if fixed function
         #>
      end #end shader
   end #end material
enddef



define LotSkirtRoadMaterialDefinition()
   
   setb hasColor false
   seti totalLights 0

   material
      shader -layer ($lotSkirtLayer * 8)
         validateRenderShaderContext -vertexFormat position      0 required
         validateRenderShaderContext -vertexFormat normal        0 required
         validateRenderShaderContext -vertexFormat texcoord      0 required

      
         #create DetermineHardwareSupport()
      
         #if ($useFixedFunctionPath)

            setb  hasColor (hasVertexFormat(color,0))
            
            if ($hasColor)
                validateRenderShaderContext -vertexFormat  color         0 required
            endif
            
            pass -fixedFunction
               create LightingStates()
               #create LightingStatesNoStdLights()
               create AttenuatedMatCoef(1.0)
               alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)
               fillmode $stdMatFillMode
                  
               stage
                  texture $surfaceTexture
                  textureAddressing clamp clamp
                  textureBlend multiply(texture diffuse) multiply(texture diffuse)
               end 
            end
         #< else

            create SetupCommonHWShaderVariablesAndPredicates()
   
            if ($hasColor)
               vertexFormatPred color         0 true
            endif
            

            pass
               create NonStandardLighting()

               fillmode $stdMatFillMode

               alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)

               shaderProgram -target vertexProgram -method link
                  create BindsForHardwareVS1Transforms(false false)
                  create BindsForLighting($kFullLighting)
                  
                  # override diffuse, since DX8 path divs by 2.
                  
                  shaderFragment TransformRigidForLighting1_1

                  
                  if ($totalLights)
                     bindConstants 14 -bindingID immediateData -data (2,2,2,1)

                     shaderFragment TransformRigidForLighting1_1
                     create DX8DiffusePassLightFragments(true  false 0 $totalLights $distantLightCount $pointLightCount $spotLightCount 1_1)
                     shaderFragment CopyVertexAlphaToDiffuse1_1
                     stage
                        texture $surfaceTexture
                        textureAddressing tile tile
                        textureBlend multiply(texture diffuse) multiply(texture diffuse)
                     end 
                  else
                     
                     # eyeballed this value to sorta make the sidewalks match.
                     # grass is still dark, road matches ok.
                     
                     bindConstants 14 -bindingID immediateData -data (0.8,0.82,0.88,1)

                     shaderFragment TransformPositionRigidNoLighting1_1
                     shaderFragment Copy2DTexcoords1_1
                     shaderFragment AmbientLightingVertexColorMaterial1_1
                     
                     stage
                        texture $surfaceTexture
                        textureAddressing tile tile
                        textureBlend multiply(texture diffuse) multiply(texture diffuse)
                     end 
                  endif
               
               end
            
            
            end #end pass
         endif       
                
         #>
      end
   end
enddef

define LotSkirtRoadMaterialInstance(materialName textureName)
   materialDefinition &materialName
      setDefinition LotSkirtRoadMaterialDefinition
      addParam surfaceTexture &textureName
   end
enddef

# ==============================================================================
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Desert_00005700 lotskirtroad_desert_00005704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Desert_00020700 lotskirtroad_desert_00020704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Desert_00000f00 lotskirtroad_desert_00000f04)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Desert_00000300 lotskirtroad_desert_00000304)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Desert_00004b00 lotskirtroad_desert_00004b04)

create LotSkirtRoadMaterialInstance(lotSkirtRoad_Temperate_00005700 lotskirtroad_temperate_00005704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Temperate_00020700 lotskirtroad_temperate_00020704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Temperate_00000f00 lotskirtroad_temperate_00000f04)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Temperate_00000300 lotskirtroad_temperate_00000304)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_Temperate_00004b00 lotskirtroad_temperate_00004b04)

create LotSkirtRoadMaterialInstance(lotSkirtRoad_European_00005700 lotskirtroad_european_00005704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_European_00020700 lotskirtroad_european_00020704)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_European_00000f00 lotskirtroad_european_00000f04)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_European_00000300 lotskirtroad_european_00000304)
create LotSkirtRoadMaterialInstance(lotSkirtRoad_European_00004b00 lotskirtroad_european_00004b04)

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox