วันอาทิตย์ที่ 25 กุมภาพันธ์ พ.ศ. 2561

Graphics Rules.sgr ไฟล์ graphic rule ที่ใช้ ไม่มีpink glitch และ 1920x1080

 

 New file here 1920x1080

 

#############################################################################
#
# Logging settings
#

set logGroup           "ConfigurationManager"
set logLevelWarning    warning
set logLevelInfo       info
set logLevelDebug      debug

log $logGroup $logLevelInfo "Parsing configuration script"


#############################################################################
#
# Constants
#

seti Off 0
seti On  1

seti Low    1
seti Medium 2
seti High   3

seti MediumButDefaultLow 4

seti memoryLevelHigh    512
seti memoryLevelMedium  384
seti memoryLevelLow     256
seti memoryLevelUnknown 0

if ( match("${osVersion}","*NT 6.0*") )
    seti cpuLevelHigh        3000
    seti cpuLevelMedium      2600
    seti cpuLevelLow         2000
    log $logGroup $logLevelInfo "Setting cpu level for Vista."
else
    seti cpuLevelHigh        2800
    seti cpuLevelMedium      2200
    seti cpuLevelLow         1450
    log $logGroup $logLevelInfo "Setting cpu level for non-Vista."
endif

seti cpuLevelUnsupported 0


#############################################################################
#
# Identify gfx device
#

# set some config variables based on a card table and vendor specific rules
# sets isCardFound, cardVendor, and cardName
include "Video Cards.sgr"

# Fallback on the card name text supplied by the card itself.
# Assumes that at least the cardVendor has been matched, since
# vendor name is not contained in some vendor card names.
# Note that specific vendors are overridden to a default card.
#  For ATI    -> Radeon 9800 Pro
#  For NVIDIA -> NVIDIA 4800 TI SE
if (not $isCardFound)
   set cardName $cardNameText
endif


# GraphicsRulesMaker Tweak: Force memory size
seti textureMemory 8192

#############################################################################
#
# Configuration override controlled by command line option -cardConfig.
#
if (varExists(cardConfig))
   # test unsupported cards using sw rendering
   if ($cardConfig = 1)
      log $logGroup $logLevelInfo "Testing with all devices unsupported."
      set  cardVendor    TestingAllUnsupported
      set  cardName      TestingAllUnsupported

   elseif (($cardConfig = 2) and ($deviceNumber = 0))
      log $logGroup $logLevelInfo "Testing with the first device unsupported."
      set  cardVendor    TestingFirstUnsupported
      set  cardName      TestingFirstUnsupported

   elseif (($cardConfig = 3) and ($deviceNumber != 0))
      log $logGroup $logLevelInfo "Testing with the all devices except first unsupported."
      set  cardVendor    TestingAllButFirstUnsupported
      set  cardName      TestingAllButFirstUnsupported

   elseif (($cardConfig = 100) and ($deviceNumber = 0))
      log $logGroup $logLevelInfo "Testing first device as swvp only part."
      boolProp forceSoftwareVP true
   endif
endif



#############################################################################
#
# Determine if gfx device is supported, force software rendering if not
#

setb useSoftwareRasterizer false

if (match("${cardVendor}", "ATI"))
   if (match("${cardName}", "*Mach*") or match("${cardName}", "*Rage*"))
      setb useSoftwareRasterizer true
   endif

elseif (match("${cardVendor}", "NVidia"))
   if (match("${cardName}", "NV 1") or match("${cardName}", "NV 2") or match("${cardName}", "*Riva*") or match("${cardName}", "*TNT*"))
      setb useSoftwareRasterizer true
   endif

elseif (match("${cardVendor}", "Intel"))
   if (match("${cardName}", "*810*") or match("${cardName}", "*815*") or match("${cardName}", "*740*") or match("${cardName}", "*752*"))
      setb useSoftwareRasterizer true
   endif

elseif (match("${cardVendor}", "S3"))
   if (not match("${cardName}", "*GammaChrome*") and not match("${cardName}", "*DeltaChrome*"))
      setb useSoftwareRasterizer true
   endif

else
   # unsupported/unknown vendor
   setb useSoftwareRasterizer true

endif

if ($useSoftwareRasterizer)
   log $logGroup $logLevelWarning "Unsupported video card.  Forcing software rendering on this device"
else
   log $logGroup $logLevelInfo "Supported video card."
endif

if (not $useSoftwareRasterizer)
   # failed to obtain device texture memory size, force to 32MB
   if ($textureMemory = 0)
      seti textureMemory       32
      setb textureMemorySizeOK false
   endif

   if ($textureMemory < 28)
      log $logGroup $logLevelWarning "Insufficient video memory.  Forcing software rendering on this device"

      # require a card with at least 32MB
      setb useSoftwareRasterizer true
   endif
endif

if ($useSoftwareRasterizer)
   # ignore texture memory reported by gfx device, this is not hardware texture memory
   seti textureMemory 32
endif

if (not $useSoftwareRasterizer)
   log $logGroup $logLevelInfo "Hardware rendering is enabled"
endif



#############################################################################
#
# Apply gfx device specific workarounds
#
# Available device props:
#  forceSoftwareVP
#  forceSoftwareDevice
#  queriesOK
#  windowedModeFormatConversionOK
#  enumerateMultisampleLevels
#  skipValidateDevice
#  enableDriverMemoryManager
#  softwareDeviceLocalVideoMemorySize
#  deviceLocalVideoMemorySizeDefault
#  disableVSyncSupport
#  substituteFlipForDiscardSwapEffect
#  minTextureDimensionForBalance
#
# Additional props:
#  vs2LoopsFunctional

setb textureMemorySizeOK        true
setb supportsDirtyRect          true
setb supportsTurboRect          true
setb supportsSpecialEventCamera true
setb forceLowSettings           false
setb forceLowResolution         false
setb defaultLowResolution         false
setb forceMediumMaterialDetail  false
setb isIntegratedChipset              false
setb forceMediumShadows          false
setb forceMediumObjectDetail     false
boolProp useRenderTextures       false
uintProp antialiasingSupport             1

boolProp dontMergeNHFlora       true


if (not $useSoftwareRasterizer)

   # never trust the driver to manage its own memory
   boolProp enableDriverMemoryManager  false

   boolProp vs2LoopsFunctional         false
   boolProp presentWorkaround          false
   boolProp enumerateMultisampleLevels true

   # not enough texture memory for antialiasing
   if ($textureMemory < 127)
      boolProp enumerateMultisampleLevels false
   endif

   if (match("${cardVendor}", "NVIDIA"))
      # on NVidia cards, create a dummy texture on device creation to prevent BSODs
      boolProp createNVidiaWorkaroundTexture true

      if ($appControlledAA)
         # nvidia drivers handle offscreen aa
         uintProp antialiasingSupport    3
      else
         # remove this when the texture manager balancing is fixed.
         boolProp disableTexMemEstimateAdjustment true

         # turn off dirty rects
         uintProp antialiasingSupport    1
         setb supportsDirtyRect          false
      endif

      if (match("${cardName}", "*GeForce2*Integrated*") or match("${cardName}", "*GeForce?2*Integrated*") or match("${cardName}", "*GeForce4*Integrated*") or match("${cardName}", "*GeForce?4*Integrated*") or match("${cardName}", "*GeForce2 Quadro2 Pro*"))
         boolProp causticsEnabled            false
         boolProp enumerateMultisampleLevels false

         setb forceLowSettings   true
         setb forceLowResolution true
      endif

      # the 6200 Turbo Cache peformed very poorly in CATLAB runs for EP2
      if (match("${cardName}", "*6200 TC*") or match("${cardName}", "*6100*"))
         setb forceLowSettings   true
         setb defaultLowResolution true
      endif

      # need to get around the problem of z fighting in GeForce4 cards
      if (match("${cardName}", "*GeForce4*"))
         boolProp raiseLightSnowFF true
      endif

      # disable shaders by default for NV3x generation, only enable for high end cards
      if ($maxVertexProgramVersionHWMajor = 2)
         boolProp useShaders false

         if (match("${cardName}", "GeForceFX*") or match("${cardName}", "*GeForce?FX*"))
            if (match("${cardName}", "*57?0*") or match("${cardName}", "*58?0*") or match("${cardName}", "*59?0*"))
               boolProp useShaders true
               boolProp causticsEnabled false

               log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x"
            endif
            if (match("${cardName}", "*NV35*") or match("${cardName}", "*NV36*") or match("${cardName}", "*NV38*") or match("${cardName}", "*NV39*"))
               boolProp useShaders true

               log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x"
            endif

            # 5700 cards sometimes have problems with bump mapping so setting default to medium
            if (match("${cardName}", "*5700*"))
               log $logGroup $logLevelInfo "Forcing Medium Material detail on 5700"
               setb forceMediumMaterialDetail true
            endif

            if (match("${cardName}", "*5700LE*"))
               log $logGroup $logLevelInfo "Forcing low settings on 5700LE and 6100"
               setb forceLowSettings    true
               boolProp useShaders false
            endif

         endif

         if (match("${cardName}", "QuadroFX*") or match("${cardName}", "*Quadro?FX*"))
            if (match("${cardName}", "*3000*") or match("${cardName}", "*1?00*"))
               boolProp useShaders true

               log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x Quadro"
            endif

            if (match("${cardName}", "*2000*") or match("${cardName}", "*1000*") or match("${cardName}", "*1300*"))
               boolProp causticsEnabled false

               log $logGroup $logLevelInfo "Disabling caustics as these cause cards cause problems with shadows"
            endif
         endif

         # caps read vs 3.0, but dx9b is returning vs 2.0, once 9c is used this fix can be removed
         if (match("${cardName}", "*GeForce*"))
            if (match("${cardName}", "*68?0*") or match("${cardName}", "*GTX*"))
               boolProp useShaders true

               log $logGroup $logLevelInfo "Enabling shaders for high-end NV40 Parts on Dx9b"
            endif
         endif
      endif

      if ($maxVertexProgramVersionHWMajor = 0)
         boolProp skipValidateDevice true

         log $logGroup $logLevelInfo "Enabling D3DERR_CONFLICTINGRENDERSTATE validation workaround"
      endif

   elseif (match("${cardVendor}", "ATI"))
      # loops support broken in 6458. Fixed in catalyst 4.9 (6476) but we require 4.10 to be safe.
      if ($driverBuild >= 6476)
         boolProp vs2LoopsFunctional true
      endif

      # workaround for forced aa crash as of 6458.  Fixed in catalyst 4.9 (6476) but we require 4.10 to be safe.
      # TODO: this is not yet enabled, pending testing
      #if ($driverBuild < 6476)
         boolProp useRenderTextures true
      #endif


      # avoid a race condition with color copies and ui
      boolProp presentWorkaround  true

      if (match("${cardName}", "*Radeon?VE*") or match("${cardName}", "*7?00*") or match("${cardName}", "*R100*") or match("${cardName}", "*IGP 3?0*") or match("${cardName}", "*9100 IGP*"))
         log $logGroup $logLevelInfo "Forcing turbo rects off"
         setb supportsTurboRect   false

         boolProp simpleTerrain              true
         boolProp causticsEnabled            false
         boolProp enumerateMultisampleLevels false

         setb forceLowSettings    true

         if (match("${cardName}", "*9100 IGP*"))
            log $logGroup $logLevelInfo "Forcing low resolution"
            setb defaultLowResolution true
         endif

         if (match("${cardName}", "*Radeon?VE*") or $driverBuild < 6414)
            log $logGroup $logLevelInfo "Forcing swvp"
            boolProp forceSoftwareVP true
         endif
      endif

      if (match("${cardName}", "*X1300*") or match("${cardName}", "*X300*") or match("${cardName}", "*XPRESS 200*"))
         log $logGroup $logLevelInfo "Forcing medium settings or lower"
         boolProp useShaders false
         setb forceLowSettings    true
      endif

      boolProp usePS30 false

      if ($maxVertexProgramVersionHWMajor < 2)
         # Radeon 8500 and greater have problems switching between FF and VS?
         log $logGroup $logLevelInfo "Forcing shaders of for ATI DX8"

         boolProp useShaders false
      endif

      if (match("${cardName}", "*8500*"))
         #avoid z fighting with light snow
         boolProp raiseLightSnowFF true
         setb defaultLowResolution true
      endif

      if (match("${cardName}", "*9600 SE *"))
         setb forceMediumMaterialDetail  true
         setb forceMediumShadows         true
         setb forceMediumObjectDetail    true
      endif

      if (match("${cardName}", "*Mobility*"))
         setb isIntegratedChipset true
      endif

      # X800 based cards exhibit rendering corruption if turbo rect is enabled
      if (match("${cardName}", "*X800*") or match("${cardName}", "*R420*"))
         setb supportsTurboRect false

         log $logGroup $logLevelInfo "Forcing turbo rects off"
      endif


      if (match("${cardName}", "*92?0*"))
         log $logGroup $logLevelInfo "Forcing shadow detail on 9250 and 9200"
         setb forceMediumShadows true
      endif

   elseif (match("${cardVendor}", "S3"))
      if (match("${cardName}", "*GammaChrome*") or match("${osVersion}","*NT 6.0*") )
         boolProp useShaders false
         log $logGroup $logLevelInfo "Forcing Gamma Chrome to use fixed function shaders"
      endif

      # EP6 CATlab reports gray screen during all cinematics
      if (match("${cardName}", "*S27*"))
         setOption SpecialEventCamera $Off
      endif


  elseif (match("${cardVendor}", "Intel"))

      if (match("${cardName}", "*X3000*"))
         boolProp disableVSyncSupport        true    # work around flickering UI
      else
         boolProp simpleTerrain              true
         boolProp enumerateMultisampleLevels false
         boolProp disableVSyncSupport        true    # work around flickering UI
         boolProp useShaders                 false   # (EP2 change) mostly for performance, but driver issues showed up in v14.14
      endif

      # the Intel minspec driver doesn't misreport available texture memory, so it's not
      # necessary to adjust the texture memory estimate it returns. This may also fix
      # a Windows "device failure" message that occurs sometimes on this device.
      boolProp disableTexMemEstimateAdjustment true

      # assuming Intel parts are UMA, drop the texture memory to 32 if not much system memory
      if ($memory <= $memoryLevelLow)
         if ($textureMemory > 32)
            seti textureMemory 32
         endif
      endif

      if (match("${cardName}", "*845*") or match("${cardName}", "*865*") or match("${cardName}", "*830*") or match("${cardName}", "*855*"))
         boolProp causticsEnabled false

         setb forceLowSettings   true
         setb forceLowResolution true
      endif

      # the 915 sets the caps bit that indicates it can do texture projection,
      # but does it incorrectly in the pixel stage. Here we override the texture
      # projection cap we get from the device.
      if (match("${cardName}", "*915*"))
        boolProp disableTextureProjection true
      endif
   endif

   intProp deviceLocalVideoMemorySizeDefault ($textureMemory * 1024 * 1024)

else
   setb forceLowSettings   true
   setb forceLowResolution true

   # force sw, swvp, and no aa
   boolProp forceSoftwareDevice        true
   boolProp forceSoftwareVP            true
   boolProp enumerateMultisampleLevels false
   boolProp simpleTerrain              true
   boolProp causticsEnabled            false

   intProp softwareDeviceLocalVideoMemorySize ($textureMemory * 1024 * 1024)

endif

# since we don't do bumpmapping on less ps2.0-capable hardware, eliminate tangents
# from the vertex data
# also, the presence of per-vertex tangents in the vertex data stream causes
# "exploded" polygons on the Radeon 9000, even if the data is ignored by the shader
if ($maxPixelProgramVersionMajor < 2)
   boolProp skipTangentsInVertexData true
endif


#############################################################################
#
# Print system info
#

if ($deviceNumber = 0)
logSystemInfo "=== Application info ==="
logSystemInfo "Name:            ${appName}"
logSystemInfo "Version:         ${version}"
logSystemInfo "Build:           ${buildType}"

logSystemInfo "=== Machine info ==="
logSystemInfo "OS version:      ${osVersion}"
logSystemInfo "CPU:             ${cpuSpeed}Mhz, Name:${CPU}, FPU:${FPU}, MMX:${MMX}"
logSystemInfo "Memory:          ${memory}MB"
logSystemInfo "Free memory:     ${freeMemory}MB"
logSystemInfo "User:            ${userName}"
logSystemInfo "Computer:        ${computerName}"

logSystemInfo "=== Sound device info ==="
logSystemInfo "Name:            ${soundCardName}"
logSystemInfo "Driver:          ${soundDriverName}"
endif

logSystemInfo "=== Graphics device info ==="
logSystemInfo "Number:          ${deviceNumber}"
logSystemInfo "Name (driver):   ${cardNameText}"
if ($isCardFound)
logSystemInfo "Name (database): ${cardName}"
else
logSystemInfo "Name (database): ${cardName} <<NOT FOUND IN DATABASE!>>"
endif
if ($isIntegratedChipset)
logSystemInfo "                 (Integrated Chipset)"
endif
logSystemInfo "Vendor:          ${cardVendor}"
logSystemInfo "Chipset:         ${cardChipset}"
logSystemInfo "Driver:          ${driverName}, Version: ${driverVersion}"
logSystemInfo "Driver version:  ${driverBuild}"
logSystemInfo "Monitor:         ${monitorName}"
logSystemInfo "Monitor aspect:  ${monitorAspect}, ${monitorAspectString}"
logSystemInfo "Screen mode:     ${screenWidth}x${screenHeight}x${screenBPP}BPP,${screenRefresh}Hz"
if ($textureMemorySizeOK)
logSystemInfo "Texture memory:  ${textureMemory}MB"
else
logSystemInfo "Texture memory:  ${textureMemory}MB <<OVERRIDE>>"
endif
logSystemInfo "HW T&L:          Fixed function:${fixedFunctionHWTnL} Programmable:${maxVertexProgramVersionHWMajor}.${maxVertexProgramVersionHWMinor}"
logSystemInfo "Pixel program:   ${maxPixelProgramVersionMajor}.${maxPixelProgramVersionMinor}"
logSystemInfo "Texture stages:  ${textureStages}"
logSystemInfo "AppControlledAA: ${appControlledAA}"


#############################################################################
#
# UI Options

log $logGroup $logLevelDebug "Begin parsing option definitions"

option MaterialDetail
   setting $Low
      boolProp bumpMapping false
      intProp  imageDataSizeReductionOnLoad 2

   setting $Medium
      boolProp bumpMapping false
      intProp  imageDataSizeReductionOnLoad 1

   setting $High
      boolProp bumpMapping true
      intProp  imageDataSizeReductionOnLoad 0
end


option ObjectDetail
   setting $Medium
      boolProp reduceBoneWeights true
      boolProp useLODs           true
      intProp  lodOverride       35

   setting $High
      boolProp reduceBoneWeights false
      boolProp useLODs           false
      intProp  lodOverride       0
end

option ObjectHiding
   setting $Off
      intProp renderInsideVisibleObjects 0

   setting $On
      intProp renderInsideVisibleObjects 1
end

option SnowOnGround
   setting $Off
      boolProp showSnowOnGround false

   setting $On
      boolProp showSnowOnGround true
end

option Shadows
   setting $Low
      boolProp simShadows       false
      boolProp objectShadows    false
      boolProp guob             false
      boolProp heightMapShadows false

   setting $Medium
      boolProp simShadows       false
      boolProp objectShadows    false
      boolProp guob             true
      boolProp heightMapShadows true

   setting $High
      # GraphicsRulesMaker Tweak: Always disable Sim shadows
      boolProp simShadows       false
      boolProp objectShadows    true
      boolProp guob             true
      boolProp heightMapShadows true
end


option OpaqueUI
    setting $Off
       boolProp renderOpaqueUI false

    setting $On
       boolProp renderOpaqueUI true
end


option Reflection
   setting $Off
      boolProp    reflectionWithExtraViewer  false
      boolProp    nhoodWaterReflection       false

   setting $On
      boolProp    reflectionWithExtraViewer  true
      boolProp    nhoodWaterReflection       true
end

option Ceiling
   setting $Off
      boolProp    includeCeilings  false

   setting $On
      boolProp    includeCeilings  true
end

option EffectsQuality
   setting $Low
      boolProp  useEffects            true
      floatProp particleDensity       1
      floatProp particleScale         1
      intProp   maxParticlesTarget    2000
      intProp   particleLODOffset     0    # subtracted from the zoom.
      intProp   effectPriorityLevel   1
      boolProp  enableOceanReflection false

   setting $Medium
      boolProp  useEffects            true
      floatProp particleDensity       1
      floatProp particleScale         1
      intProp   maxParticlesTarget    5000
      intProp   particleLODOffset     0    # subtracted from the zoom.
      intProp   effectPriorityLevel   2
      boolProp  enableOceanReflection false

   setting $High
      boolProp  useEffects            true
      floatProp particleDensity       1
      floatProp particleScale         1
      intProp   maxParticlesTarget    10000
      intProp   particleLODOffset     0    # subtracted from the zoom.
      intProp   effectPriorityLevel   3
      boolProp  enableOceanReflection true
end


option LightingQuality
   setting $Low
      boolProp lightingEnabled           true
      boolProp portalLighting            false
      boolProp floorAndWallNormalMapping false
      boolProp specHighlights            false

   setting $Medium
      boolProp lightingEnabled           true
      boolProp portalLighting            true
      boolProp floorAndWallNormalMapping false
      boolProp specHighlights            true

   setting $High
      boolProp lightingEnabled           true
      boolProp portalLighting            true
      boolProp floorAndWallNormalMapping true
      boolProp specHighlights            true
end


option SoundQuality
   setting $Low
      intProp AudioPerformance 0

   setting $Medium
      intProp AudioPerformance 1

   setting $High
      intProp AudioPerformance 2
end


#
# Options without ui access.
#
option DirtyRect
   setting $High
      # no dirty rects
      intProp dynamicRenderStrategy 0

   setting $Medium
      # 4 buffer mode
      intProp dynamicRenderStrategy 2

   setting $Low
      # 2 buffer mode
      intProp dynamicRenderStrategy 1
end


option FullscreenFadeEffect
   setting $Off
      boolProp enableSnapshot false

   setting $On
      boolProp enableSnapshot true
end


option Turbo
   setting $High
      boolProp useTurboRect true

   setting $Medium
      boolProp useTurboRect true

   setting $Low
      boolProp useTurboRect false

end


option SimulatorControls
   setting $High
      intProp maxNumOfVisitingSims   8

   setting $Medium
      intProp maxNumOfVisitingSims   6

   setting $Low
      intProp maxNumOfVisitingSims   2
end


option LightingOptimizations
   setting $High
      boolProp optimizedDiffusion        true
      boolProp incrementalLighting       true
      boolProp lerpLights                true
      boolProp useDirtyTiles             true
end


option AnimationSamplingLevel
   setting $Low
      # sample nearest animation frame
      boolProp animationFrameSampling true

   setting $Medium
      # sample nearest two animation frames and slerp
      boolProp animationFrameSampling false
end


option LivePIP
   setting $Off
      boolProp livePIP        false
      boolProp livePIPDefault false

   setting $On
      boolProp livePIPDefault true
        # do not override user's choice if the setting is ON
end


option SpecialEventCamera
   setting $Off
      boolProp chooseCameraSpecialEventEnabled false
      boolProp CameraSpecialEventEnabled       false

   setting $On
      boolProp chooseCameraSpecialEventEnabled true
        # do not override user's choice if the setting is ON


end


option ScreenModeResolution
   setting $Low
      uintProp maxResWidth      1280
      uintProp maxResHeight     1024
      uintProp defaultResWidth  1024
      uintProp defaultResHeight 768

   setting $MediumButDefaultLow
      uintProp maxResWidth      1280
      uintProp maxResHeight     1024
      uintProp defaultResWidth  800
      uintProp defaultResHeight 600

   setting $Medium
      uintProp maxResWidth      1280
      uintProp maxResHeight     1024
      uintProp defaultResWidth  1024
      uintProp defaultResHeight 768

   setting $High
      # GraphicsRulesMaker Tweak: Custom maximum resolution
      uintProp maxResWidth      1440
      uintProp maxResHeight     900
      uintProp defaultResWidth      1024
      uintProp defaultResHeight     768
end

option SubjectTracking
   setting $Low
        floatProp centerTrackingDeadZoneMagnitude 70

   setting $Medium
        floatProp centerTrackingDeadZoneMagnitude 30

   setting $High
        floatProp centerTrackingDeadZoneMagnitude 30
end

option EnableLotImpostersInLot
        setting $On
                boolProp enableLotImpostersInLot true
        setting $Off
                boolProp enableLotImpostersInLot false
end

option EnableNeighborhoodOccupantsInLot
        setting $On
                boolProp enableNeighborhoodOccupantsInLot true
        setting $Off
                boolProp enableNeighborhoodOccupantsInLot false
end

option LotSkirtSizeIncrease
        setting 0
                uintProp lotSkirtSizeIncrease 5
        setting 1
                uintProp lotSkirtSizeIncrease 9
        setting 2
                uintProp lotSkirtSizeIncrease 18
        setting 3
                uintProp lotSkirtSizeIncrease 36
end

log $logGroup $logLevelDebug "Finished parsing option definitions"


#############################################################################
#
# Hardware Rendering
#

# This cannot be defined as a local variable, the if clause is still executed when
#   sw render path is taken and an exception generated that fails the parsing.  Be
#   careful with the use of local variables.
setb usingHighDetail false

if (not $useSoftwareRasterizer)

   # set a base level of options based on the card rating
   if (($memory >= $memoryLevelHigh) and ($cpuSpeed >= $cpuLevelHigh) and ($maxVertexProgramVersionHWMajor >= 1) and not $forceLowSettings and not $isIntegratedChipset)
      log $logGroup $logLevelInfo "Selecting High base level"

      setOption OpaqueUI              $Off
      setOption LivePIP               $On
      setOption Reflection            $On
      setOption Ceiling               $On
      setOption EffectsQuality        $High
      setOption LightingQuality       $High
      setOption Shadows               $High
      setOption MaterialDetail        $High
      setOption ObjectDetail          $High
      setOption ObjectHiding          $Off
      setOption SubjectTracking       $High
      setOption EnableLotImpostersInLot          $On
                setOption EnableNeighborhoodOccupantsInLot $On
                setOption LotSkirtSizeIncrease             1
                setb usingHighDetail true #use this to test if current level is set to high

   elseif (($memory >= $memoryLevelMedium) and ($cpuSpeed >= $cpuLevelMedium) and ($maxVertexProgramVersionHWMajor >= 1) and not $forceLowSettings)
      log $logGroup $logLevelInfo "Selecting Medium base level"

      setOption OpaqueUI              $Off
      setOption LivePIP               $On
      setOption Reflection            $Off
      setOption Ceiling                   $Off
      setOption EffectsQuality        $Medium
      setOption LightingQuality       $Medium
      setOption Shadows               $Medium
      setOption MaterialDetail        $Medium
      setOption ObjectDetail          $High
      setOption ObjectHiding          $On
      setOption SubjectTracking       $Medium
      setOption EnableLotImpostersInLot          $On
                setOption EnableNeighborhoodOccupantsInLot $On
                setOption LotSkirtSizeIncrease             0

   else
      log $logGroup $logLevelInfo "Selecting Low base level"
      # NOTE: don't set forceLowSettings here, because this will force low simulator settings
      # if all you have is a low end video card

      setOption OpaqueUI              $Off
      setOption LivePIP               $Off
      setOption Reflection            $Off
      setOption Ceiling               $Off
      setOption EffectsQuality        $Low
      setOption LightingQuality       $Low
      setOption Shadows               $Low
      setOption MaterialDetail        $Low
      setOption ObjectDetail          $Medium
      setOption ObjectHiding          $On
      setOption SubjectTracking       $Low
      setOption EnableLotImpostersInLot          $Off
                setOption EnableNeighborhoodOccupantsInLot $Off
                setOption LotSkirtSizeIncrease             0
   endif

   setOption LightingOptimizations $High
   setOption SnowOnGround          $On

   # adjust simulator based on cpu speed
   # adjust the sound quality based on cpu speed (this may be overridden below for low-end systems)
   # adjust animation sampling based on cpu speed
   if ($cpuSpeed >= $cpuLevelHigh and not $forceLowSettings)
      setOption SimulatorControls      $High
      setOption SoundQuality           $High
      setOption AnimationSamplingLevel $Medium
   elseif ($cpuSpeed >= $cpuLevelMedium and not $forceLowSettings)
      setOption SimulatorControls      $Medium
      setOption SoundQuality           $Medium
      setOption AnimationSamplingLevel $Medium
   else
      setOption SimulatorControls      $Low
      setOption SoundQuality           $Low
      setOption AnimationSamplingLevel $Low
   endif

   # turn off fullscreen fade
   setOption FullscreenFadeEffect    $Off
   if ($textureMemory >= 128 and not $isIntegratedChipset)
      setOption FullscreenFadeEffect $On
   endif

   # screen res defaults
   if (($maxVertexProgramVersionHWMajor >= 1) and ($textureMemory >= 128) and not $forceLowResolution)
      setOption ScreenModeResolution $High
   elseif ($textureMemory >= 64 and not $forceLowResolution)
      if (($memory <= $memoryLevelLow) and ($cpuSpeed <= $cpuLevelLow))
         setOption ScreenModeResolution $MediumButDefaultLow
      else
         setOption ScreenModeResolution $Medium
      endif
   else
      setOption ScreenModeResolution $Low
   endif

   if ($defaultLowResolution)
        setOption ScreenModeResolution $MediumButDefaultLow
   endif

   # special event cameras for cinematics
   if (($maxPixelProgramVersionMajor >= 1) and ($supportsSpecialEventCamera))
      setOption SpecialEventCamera $On
   else
      setOption SpecialEventCamera $Off
   endif

   # set dirty rect mode
   if ($supportsDirtyRect)
      setOption DirtyRect $Medium
   else
      setOption DirtyRect $High
   endif

   # set turbo mode
   if ($supportsTurboRect)
      setOption Turbo $Medium
   else
      setOption Turbo $Low
   endif

   if ($forceMediumMaterialDetail and ($memory >= $memoryLevelHigh) and ($cpuSpeed >= $cpuLevelHigh) and not $forceLowSettings)
      log $logGroup $logLevelWarning "Setting Material Detail"
      setOption MaterialDetail $Medium
   endif

   if ($usingHighDetail and not $forceLowSettings)
      if ($forceMediumShadows)
         setOption Shadows $Medium
      endif

      if ($forceMediumObjectDetail)
         setOption ObjectDetail $Medium
      endif
   endif

endif


#############################################################################
#
# Software rendering
#

# set the options for the software rasterizer
if ($useSoftwareRasterizer)
   setOption LightingOptimizations $High

   setOption DirtyRect             $Medium
   setOption Turbo                 $Medium
   setOption OpaqueUI              $Off
   setOption LivePIP               $Off
   setOption SpecialEventCamera    $Off

   setOption Reflection            $Off
   setOption Ceiling               $Off
   setOption EffectsQuality        $Low
   setOption LightingQuality       $Low
   setOption Shadows               $Low
   setOption MaterialDetail        $Low
   setOption ObjectDetail          $Medium
   setOption ObjectHiding          $On

   # adjust simulator based on cpu speed
   if ($cpuSpeed >= $cpuLevelHigh)
      setOption SimulatorControls  $Medium # one lower than hw
   else
      setOption SimulatorControls  $Low
   endif

   setOption SoundQuality           $Low
   setOption FullscreenFadeEffect   $Off
   setOption AnimationSamplingLevel $Low
   setOption ScreenModeResolution   $Low
   setOption SubjectTracking        $Low
   setOption EnableLotImpostersInLot          $Off
   setOption EnableNeighborhoodOccupantsInLot $Off
        setOption LotSkirtSizeIncrease             0
        setOption SnowOnGround          $On

endif


#############################################################################
# save the selected configuration for this device.

boolProp activeDeviceUseSoftwareRasterizer $useSoftwareRasterizer

#############################################################################
# tell the caller that we completely finished parsing the script
intProp configParserErrorCode 0

uintProp hwMajorPSVersion $maxPixelProgramVersionMajor

log $logGroup $logLevelInfo "Finished Config File"

1 ความคิดเห็น:

ย้อมผม

ผมสั้นไม่เกินบ่า > 3 กล่องขึ้นไป