TEST-STRCMP4CODES

From SimsWiki
Revision as of 03:22, 7 September 2007 by Niol (Talk | contribs)

Jump to: navigation, search

EP3-OFB 0xCD7FE87A 0x1C0532FA 0xB00AEAC0 0xFF7D973E

  1. rug


  1. Rugs

seti rugLayer -2 setb forceFF false setb hasShapeColor false

define RugMaterialFF()

  material
     shader -layer $rugLayer         
        if ($hasShapeColor)         
           pass -fixedFunction -modifiedEachFrameHint
        else
           pass -fixedFunction
        endif
        
           create LightingStates() 
           create AttenuatedMatCoef(1)                       
                   
                             
           ffDepthOffset 2            
           
           alphaTest true 127
           alphaTestFunction acceptIfGreater
           depthTest true -enableDepthWrite false                        
           
           colorScalar (0.8, 0.8, 0.8, 1)
           
           if ($hasShapeColor)
              tsEdithShapeColor $currentMaterialName
              
              stage
                 texture $rugTexture
                 ffTextureCoordsSource 0
                 # add the lightmap lighting to any direct lights.

# the light map has been prescaled by 0.5 textureBlend multiply(texture colorScalar) select(texture)

              end
              
           else
                                                     
              stage
                 texture "floorLightMap_${page}"
                 ffTextureCoordsSource 1
                 # add the lightmap lighting to any direct lights.

# the light map has been prescaled by 0.5 textureBlend multiply(texture colorScalar) select(texture)

              end
                                                            
              stage
                 texture $rugTexture
                 textureAddressing clamp clamp
                 ffTextureCoordsSource 0					

textureBlend multiplyScale2(texture outRegister) select(texture)

              end #end stage               
           endif            
                       
        end #pass      
     end #end shader   
  end #end material 

enddef

setv3 matdiffuse (0.8, 0.8, 0.8)

define RugMaterialGen()

  material      
     create DetermineHardwareSupport()         
     
     #trace "$currentMaterialName : $forceFF"
     
     if (not $hasShapeColor and ($useHWShader1Path or $useHWShader2Path))
        create RugMaterialHW()
     else
        create RugMaterialFF()
        # ultimate fallback pass? no light map, one stage. 

shader -layer $rugLayer validateRenderShaderContext -vertexFormat position 0 required validateRenderShaderContext -vertexFormat normal 0 required validateRenderShaderContext -vertexFormat texcoord 0 required

pass -fixedFunction create LightingStates() create AttenuatedMatCoef(1)

ffDepthOffset 2

              alphaTest true 127
              alphaTestFunction acceptIfGreater
              depthTest true -enableDepthWrite false                        

stage texture $rugTexture textureAddressing clamp clamp ffTextureCoordsSource 0 textureBlend multiplyScale2(texture diffuse) select(outRegister) end end end

     endif
  end # material 

enddef

define RugMaterialHW()

  shader -layer $rugLayer
     validateRenderShaderContext -vertexFormat position 0 required
     validateRenderShaderContext -vertexFormat texcoord 0 required         
     
     pass
        alphaTest true 127
        alphaTestFunction acceptIfGreater

depthTest true -enableDepthWrite false depthTestFunction acceptIfLess

        shaderProgram -target vertexProgram -method compile -version 1_1
           bindConstants 0 -bindingID geomToCamera -constantCount 3
           bindConstants 3 -bindingID cameraToClipWithDepthOffset -constantCount 4 -data(2, 2, 2, 2) 
           
           shaderSource
              float4x3 geomToCameraMatrix  : register(c0);                  
              float4x4 cameraToClipWithDOMatrix : register(c3);
              
              struct cVertexIn
              {
                 float3 mPosition : POSITION0;   
                 float2 mTC0 : TEXCOORD0;                  
                 float2 mTC1 : TEXCOORD1;
              };
              
              struct cVertexOut
              {
                 float4 mClipPosition : POSITION;                     
                 float2 mTC0 : TEXCOORD0;
                 float2 mTC1 : TEXCOORD1;
              };
              
              cVertexOut VertexMain(cVertexIn vertexIn)
              {                 
                 cVertexOut result;                                                                        
                 float3 pos = mul(float4(vertexIn.mPosition, 1), geomToCameraMatrix);
                 result.mClipPosition = mul(float4(pos, 1), cameraToClipWithDOMatrix);                     
                 result.mTC0 = vertexIn.mTC0;
                 result.mTC1 = vertexIn.mTC1;
                 return result;         
              }
              
           endShaderSource
        end   
        shaderProgram -target pixelProgram -method assemble
           bindConstants 0 -bindingID immediateData -data($matdiffuse, 1)
           
           shaderSource
              ps_1_1
              def c2, 1,1,1,1
              tex t0 ; base
              tex t1 ; lightmap
              
              mul r0, t0, t1  ; base floor * light map                              
              mul_x2 r0.rgb, r0, c0 ; scale at the end to prevent precision/LDR errors
              mov r0.a, t0.a               
           endShaderSource
        end # end shader program
                    
        sampler 0
           texture $rugTexture
           textureAddressing clamp clamp
        end
        
        sampler 1

texture "floorLightMap_${page}" end

     end
  end   

enddef

materialDefinition RugMaterial

  addParam rugTexture rug
  addParam page 0
  addParam stdMatDiffCoef (0.8, 0.8, 0.8)
  addParam stdMatSpecPower 0
  addParam stdMatEmissiveCoef 0,0,0
  addParam stdMatSpecCoef 0,0,0
  setDefinition RugMaterialGen

end

materialDefinition RugMaterialEdithColor

  addParam rugTexture rug
  addParam page 0
  addParam stdMatDiffCoef (0.8, 0.8, 0.8)
  addParam stdMatSpecPower 0
  addParam stdMatEmissiveCoef 0,0,0
  addParam stdMatSpecCoef 0,0,0
  addParam hasShapeColor true
  setDefinition RugMaterialGen

end

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox