Skip to content

Instantly share code, notes, and snippets.

@nelsonjchen
Created September 22, 2019 06:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nelsonjchen/3677b34b064b924d3b17ec4b17890ff3 to your computer and use it in GitHub Desktop.
Save nelsonjchen/3677b34b064b924d3b17ec4b17890ff3 to your computer and use it in GitHub Desktop.
#############################################################################
#
# 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 4095
#############################################################################
#
# 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"))
# GraphicsRulesMaker Tweak: High Quality on Intel Graphics
# This tweak keeps the following settings (original value is as it was set in the original script):
# boolProp simpleTerrain (original: true)
# boolProp enumerateMultisampleLevels (original: false)
# boolProp disableVSyncSupport (original: true)
# boolProp useShaders (original: false)
# 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
boolProp simShadows true
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 800
uintProp maxResHeight 600
uintProp defaultResWidth 800
uintProp defaultResHeight 600
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 1920
uintProp maxResHeight 1080
# GraphicsRulesMaker Tweak: Custom default resolution
uintProp defaultResWidth 1920
uintProp defaultResHeight 1080
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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment