Merge remote-tracking branch 'upstream/development' into Atom/rbarrand/MaterialVersionUpdate
commit
a3d84b5098
@ -1,18 +1,5 @@
|
|||||||
<settings>
|
<settings>
|
||||||
<r_PostProcessEffects value="1"/>
|
|
||||||
<r_HDREyeAdaptationSpeed value="100000000"/>
|
|
||||||
<r_MotionBlur value="0"/>
|
|
||||||
<e_ScreenShotQuality value="0"/>
|
|
||||||
<e_ViewDistRatio value="100000000"/>
|
|
||||||
<r_DisplayInfo value="0"/>
|
<r_DisplayInfo value="0"/>
|
||||||
<e_StreamCgfPoolSize value="128" />
|
<e_StreamCgfPoolSize value="128" />
|
||||||
<e_ViewDistRatioVegetation value="100"/>
|
|
||||||
<e_Lods value="0"/>
|
|
||||||
<e_Vegetation value="0"/>
|
<e_Vegetation value="0"/>
|
||||||
<e_TerrainOcclusionCulling value="0"/>
|
|
||||||
<e_OcclusionVolumes value="0"/>
|
|
||||||
<e_shadows value="0"/>
|
|
||||||
<e_portals value="3"/>
|
|
||||||
<e_fog value="0"/>
|
|
||||||
<r_hdrdebug value="0"/>
|
|
||||||
</settings>
|
</settings>
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Diffuse_lowQ
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /mipmaps=0 /preset=AlbedoWithGenericAlpha /reduce=-1
|
|
||||||
@ -1,15 +1,5 @@
|
|||||||
ConsoleHide
|
ConsoleHide
|
||||||
g_godMode=1
|
|
||||||
g_infiniteammo=1
|
|
||||||
r_displayinfo=1
|
r_displayinfo=1
|
||||||
s_profiling=1
|
s_profiling=1
|
||||||
sys_maxfps=0
|
sys_maxfps=0
|
||||||
e_ObjectLayersActivation=0
|
|
||||||
e_ObjectLayersActivationPhysics=0
|
|
||||||
|
|
||||||
demo_file=autotest
|
|
||||||
demo_num_runs=2
|
|
||||||
demo_quit=1
|
|
||||||
demo_savestats=1
|
|
||||||
demo_profile=-1
|
|
||||||
demo
|
demo
|
||||||
|
|||||||
@ -1,12 +1,5 @@
|
|||||||
ConsoleHide
|
ConsoleHide
|
||||||
g_godMode=1
|
|
||||||
g_infiniteammo=1
|
|
||||||
r_displayinfo=1
|
r_displayinfo=1
|
||||||
s_profiling=1
|
s_profiling=1
|
||||||
sys_maxfps=0
|
sys_maxfps=0
|
||||||
demo_file=playthru
|
|
||||||
demo_num_runs=2
|
|
||||||
demo_quit=1
|
|
||||||
demo_savestats=1
|
|
||||||
demo_profile=-1
|
|
||||||
demo
|
demo
|
||||||
@ -1,8 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
mfx_Timeout = 0.01
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,160 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
ca_AttachmentCullingRation=360
|
|
||||||
es_DebrisLifetimeScale=1
|
|
||||||
e_CoverageBufferReproj=6
|
|
||||||
e_DecalsAllowGameDecals=1
|
|
||||||
e_DecalsLifeTimeScale=2
|
|
||||||
e_DecalsOverlapping=1
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LightQuality=3
|
|
||||||
e_LodMin=0
|
|
||||||
e_LodRatio=20
|
|
||||||
e_MaxViewDistSpecLerp=1
|
|
||||||
e_MergedMeshesInstanceDist=1.0
|
|
||||||
e_MergedMeshesPool=8192
|
|
||||||
e_ObjQuality=3
|
|
||||||
e_OcclusionCullingViewDistRatio=1
|
|
||||||
e_ProcVegetation=1
|
|
||||||
e_StatObjBufferRenderTasks=1
|
|
||||||
e_StreamCgf=0
|
|
||||||
e_TerrainLodRatio=1
|
|
||||||
e_TerrainOcclusionCullingMaxDist=200
|
|
||||||
e_Tessellation=0
|
|
||||||
e_VegetationMinSize=0
|
|
||||||
e_ViewDistMin=10
|
|
||||||
e_ViewDistRatio=100
|
|
||||||
e_ViewDistRatioCustom=100
|
|
||||||
e_ViewDistRatioDetail=100
|
|
||||||
e_ViewDistRatioLights=50
|
|
||||||
e_ViewDistRatioVegetation=100
|
|
||||||
r_DrawNearZRange=0.12
|
|
||||||
r_FlaresTessellationRatio=1
|
|
||||||
r_SilhouettePOM=0
|
|
||||||
r_usezpass=2
|
|
||||||
|
|
||||||
[1]
|
|
||||||
ca_AttachmentCullingRation=145
|
|
||||||
es_DebrisLifetimeScale=0.6
|
|
||||||
e_DecalsLifeTimeScale=1
|
|
||||||
e_Dissolve=0
|
|
||||||
e_LightQuality=1
|
|
||||||
e_LodRatio=10
|
|
||||||
e_MaxViewDistSpecLerp=0.5
|
|
||||||
e_ObjQuality=1
|
|
||||||
e_TerrainOcclusionCullingMaxDist=130
|
|
||||||
e_VegetationMinSize=0.5
|
|
||||||
e_ViewDistRatioCustom=60
|
|
||||||
e_ViewDistRatioDetail=25
|
|
||||||
e_ViewDistRatioLights=25
|
|
||||||
e_ViewDistRatioVegetation=21
|
|
||||||
r_FlaresTessellationRatio=0.25
|
|
||||||
r_usezpass=1
|
|
||||||
e_ProcVegetation=0
|
|
||||||
e_ViewDistRatio=50
|
|
||||||
|
|
||||||
[2]
|
|
||||||
ca_AttachmentCullingRation=145
|
|
||||||
es_DebrisLifetimeScale=0.6
|
|
||||||
e_DecalsLifeTimeScale=1
|
|
||||||
e_Dissolve=0
|
|
||||||
e_LightQuality=2
|
|
||||||
e_LodRatio=10
|
|
||||||
e_MaxViewDistSpecLerp=0.5
|
|
||||||
e_ObjQuality=2
|
|
||||||
e_TerrainOcclusionCullingMaxDist=130
|
|
||||||
e_VegetationMinSize=0.5
|
|
||||||
e_ViewDistRatioCustom=60
|
|
||||||
e_ViewDistRatioDetail=25
|
|
||||||
e_ViewDistRatioLights=25
|
|
||||||
e_ViewDistRatioVegetation=50
|
|
||||||
r_FlaresTessellationRatio=0.25
|
|
||||||
r_usezpass=1
|
|
||||||
e_ProcVegetation=1
|
|
||||||
e_ViewDistRatio=50
|
|
||||||
|
|
||||||
[3]
|
|
||||||
ca_AttachmentCullingRation=145
|
|
||||||
es_DebrisLifetimeScale=0.6
|
|
||||||
e_DecalsLifeTimeScale=1
|
|
||||||
e_Dissolve=0
|
|
||||||
e_LightQuality=3
|
|
||||||
e_LodRatio=10
|
|
||||||
e_MaxViewDistSpecLerp=0.5
|
|
||||||
e_ObjQuality=3
|
|
||||||
e_TerrainOcclusionCullingMaxDist=130
|
|
||||||
e_VegetationMinSize=0.5
|
|
||||||
e_ViewDistRatioCustom=60
|
|
||||||
e_ViewDistRatioDetail=25
|
|
||||||
e_ViewDistRatioLights=25
|
|
||||||
e_ViewDistRatioVegetation=50
|
|
||||||
r_FlaresTessellationRatio=0.25
|
|
||||||
r_usezpass=1
|
|
||||||
e_ProcVegetation=1
|
|
||||||
e_ViewDistRatio=75
|
|
||||||
|
|
||||||
[4]
|
|
||||||
ca_AttachmentCullingRation=145
|
|
||||||
es_DebrisLifetimeScale=0.6
|
|
||||||
e_DecalsLifeTimeScale=1
|
|
||||||
e_Dissolve=0
|
|
||||||
e_LightQuality=4
|
|
||||||
e_LodRatio=10
|
|
||||||
e_MaxViewDistSpecLerp=0.5
|
|
||||||
e_ObjQuality=4
|
|
||||||
e_TerrainOcclusionCullingMaxDist=130
|
|
||||||
e_VegetationMinSize=0.5
|
|
||||||
e_ViewDistRatioCustom=60
|
|
||||||
e_ViewDistRatioDetail=25
|
|
||||||
e_ViewDistRatioLights=25
|
|
||||||
e_ViewDistRatioVegetation=50
|
|
||||||
r_FlaresTessellationRatio=0.25
|
|
||||||
r_usezpass=1
|
|
||||||
e_ProcVegetation=1
|
|
||||||
e_ViewDistRatio=75
|
|
||||||
|
|
||||||
[5]
|
|
||||||
ca_AttachmentCullingRation=145
|
|
||||||
es_DebrisLifetimeScale=0.6
|
|
||||||
e_DecalsLifeTimeScale=1
|
|
||||||
e_LightQuality=1
|
|
||||||
e_LodRatio=10
|
|
||||||
e_MaxViewDistSpecLerp=0.5
|
|
||||||
e_ObjQuality=1
|
|
||||||
e_TerrainOcclusionCullingMaxDist=130
|
|
||||||
e_VegetationMinSize=0.5
|
|
||||||
e_ViewDistRatio=50
|
|
||||||
e_ViewDistRatioCustom=60
|
|
||||||
e_ViewDistRatioDetail=25
|
|
||||||
e_ViewDistRatioLights=25
|
|
||||||
e_ViewDistRatioVegetation=50
|
|
||||||
r_FlaresTessellationRatio=0.25
|
|
||||||
|
|
||||||
[6]
|
|
||||||
ca_AttachmentCullingRation=300
|
|
||||||
es_DebrisLifetimeScale=0.8
|
|
||||||
e_LightQuality=2
|
|
||||||
e_LodRatio=15
|
|
||||||
e_ObjQuality=2
|
|
||||||
e_ViewDistRatio=75
|
|
||||||
e_ViewDistRatioDetail=35
|
|
||||||
e_ViewDistRatioVegetation=75
|
|
||||||
|
|
||||||
[8]
|
|
||||||
ca_AttachmentCullingRation=400
|
|
||||||
e_LightQuality=4
|
|
||||||
e_LodRatio=40
|
|
||||||
e_MergedMeshesInstanceDist=2.0
|
|
||||||
e_MergedMeshesPool=16384
|
|
||||||
e_ObjQuality=4
|
|
||||||
e_TerrainLodRatio=0.5
|
|
||||||
e_Tessellation=1
|
|
||||||
e_ViewDistRatio=125
|
|
||||||
e_ViewDistRatioCustom=125
|
|
||||||
e_ViewDistRatioDetail=125
|
|
||||||
e_ViewDistRatioLights=75
|
|
||||||
e_ViewDistRatioVegetation=125
|
|
||||||
r_DrawNearZRange = 0.08
|
|
||||||
r_SilhouettePOM=1
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_ParticlesGI=1
|
|
||||||
e_ParticlesPreload=0
|
|
||||||
e_ParticlesMaxScreenFill=128
|
|
||||||
e_ParticlesMinDrawPixels=1
|
|
||||||
e_ParticlesMotionBlur=0
|
|
||||||
e_ParticlesObjectCollisions=2
|
|
||||||
e_ParticlesQuality=3
|
|
||||||
e_ParticlesSortQuality=0
|
|
||||||
e_ParticlesPoolSize=16384
|
|
||||||
r_ParticlesHalfRes=0
|
|
||||||
r_ParticlesTessellation=1
|
|
||||||
r_ParticlesInstanceVertices=1
|
|
||||||
r_ParticlesGpuMaxEmitCount=10000
|
|
||||||
|
|
||||||
[1]
|
|
||||||
e_ParticlesGI=0
|
|
||||||
e_ParticlesPreload=1
|
|
||||||
e_ParticlesMaxScreenFill=16
|
|
||||||
e_ParticlesMinDrawPixels=2
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=2
|
|
||||||
e_ParticlesPoolSize=4096
|
|
||||||
r_ParticlesHalfRes=1
|
|
||||||
r_ParticlesTessellation=0
|
|
||||||
r_ParticlesInstanceVertices=0
|
|
||||||
r_ParticlesGpuMaxEmitCount=10
|
|
||||||
|
|
||||||
|
|
||||||
[2]
|
|
||||||
e_ParticlesGI=0
|
|
||||||
e_ParticlesPreload=1
|
|
||||||
e_ParticlesMaxScreenFill=16
|
|
||||||
e_ParticlesMinDrawPixels=2
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=2
|
|
||||||
e_ParticlesPoolSize=4096
|
|
||||||
r_ParticlesHalfRes=1
|
|
||||||
r_ParticlesTessellation=0
|
|
||||||
r_ParticlesInstanceVertices=0
|
|
||||||
r_ParticlesGpuMaxEmitCount=100
|
|
||||||
|
|
||||||
|
|
||||||
[3]
|
|
||||||
e_ParticlesGI=0
|
|
||||||
e_ParticlesPreload=1
|
|
||||||
e_ParticlesMaxScreenFill=16
|
|
||||||
e_ParticlesMinDrawPixels=2
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=2
|
|
||||||
e_ParticlesPoolSize=4096
|
|
||||||
r_ParticlesHalfRes=1
|
|
||||||
r_ParticlesTessellation=0
|
|
||||||
r_ParticlesInstanceVertices=0
|
|
||||||
r_ParticlesGpuMaxEmitCount=500
|
|
||||||
|
|
||||||
|
|
||||||
[4]
|
|
||||||
e_ParticlesGI=0
|
|
||||||
e_ParticlesPreload=1
|
|
||||||
e_ParticlesMaxScreenFill=16
|
|
||||||
e_ParticlesMinDrawPixels=2
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=2
|
|
||||||
e_ParticlesPoolSize=4096
|
|
||||||
r_ParticlesHalfRes=1
|
|
||||||
r_ParticlesTessellation=0
|
|
||||||
r_ParticlesInstanceVertices=0
|
|
||||||
r_ParticlesGpuMaxEmitCount=1000
|
|
||||||
|
|
||||||
|
|
||||||
[5]
|
|
||||||
e_ParticlesMaxScreenFill=32
|
|
||||||
e_ParticlesMinDrawPixels=1.5
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=1
|
|
||||||
r_ParticlesHalfRes=1
|
|
||||||
r_ParticlesTessellation=0
|
|
||||||
r_ParticlesGpuMaxEmitCount=3000
|
|
||||||
|
|
||||||
[6]
|
|
||||||
e_ParticlesMaxScreenFill=64
|
|
||||||
e_ParticlesObjectCollisions=1
|
|
||||||
e_ParticlesQuality=2
|
|
||||||
r_ParticlesGpuMaxEmitCount=5000
|
|
||||||
|
|
||||||
[8]
|
|
||||||
e_ParticlesMaxScreenFill=160
|
|
||||||
e_ParticlesMotionBlur=1
|
|
||||||
e_ParticlesQuality=4
|
|
||||||
r_ParticlesGpuMaxEmitCount=1048576
|
|
||||||
@ -1,100 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
es_MaxPhysDist=100
|
|
||||||
es_MaxPhysDistInvisible=25
|
|
||||||
e_CullVegActivation=50
|
|
||||||
e_FoliageWindActivationDist=25
|
|
||||||
e_PhysMinCellSize=4
|
|
||||||
e_PhysOceanCell=0.5
|
|
||||||
e_PhysProxyTriLimit=10000
|
|
||||||
g_breakage_mem_limit=0
|
|
||||||
g_breakage_particles_limit=160
|
|
||||||
g_no_secondary_breaking=0
|
|
||||||
g_tree_cut_reuse_dist=0
|
|
||||||
p_gravity_z=-13
|
|
||||||
p_max_entity_cells=300000
|
|
||||||
p_max_MC_iters=6000
|
|
||||||
p_max_object_splashes=3
|
|
||||||
p_max_substeps=5
|
|
||||||
p_max_substeps_large_group=5
|
|
||||||
p_num_bodies_large_group=100
|
|
||||||
p_splash_dist0=7
|
|
||||||
p_splash_dist1=30
|
|
||||||
p_splash_force0=10
|
|
||||||
p_splash_force1=100
|
|
||||||
p_splash_vel0=4.5
|
|
||||||
p_splash_vel1=10
|
|
||||||
v_vehicle_quality=4
|
|
||||||
|
|
||||||
[1]
|
|
||||||
es_MaxPhysDistInvisible=15
|
|
||||||
e_CullVegActivation=30
|
|
||||||
e_FoliageWindActivationDist=10
|
|
||||||
e_PhysMinCellSize=16
|
|
||||||
e_PhysOceanCell=1
|
|
||||||
g_breakage_mem_limit=2000
|
|
||||||
g_breakage_particles_limit=40
|
|
||||||
g_no_secondary_breaking=1
|
|
||||||
g_tree_cut_reuse_dist=1
|
|
||||||
p_max_entity_cells=75000
|
|
||||||
p_max_MC_iters=2000
|
|
||||||
p_max_substeps=2
|
|
||||||
|
|
||||||
[2]
|
|
||||||
es_MaxPhysDistInvisible=15
|
|
||||||
e_CullVegActivation=30
|
|
||||||
e_FoliageWindActivationDist=10
|
|
||||||
e_PhysMinCellSize=16
|
|
||||||
e_PhysOceanCell=1
|
|
||||||
g_breakage_mem_limit=2000
|
|
||||||
g_breakage_particles_limit=40
|
|
||||||
g_no_secondary_breaking=1
|
|
||||||
g_tree_cut_reuse_dist=1
|
|
||||||
p_max_entity_cells=75000
|
|
||||||
p_max_MC_iters=2000
|
|
||||||
p_max_substeps=2
|
|
||||||
|
|
||||||
[3]
|
|
||||||
es_MaxPhysDistInvisible=15
|
|
||||||
e_CullVegActivation=30
|
|
||||||
e_FoliageWindActivationDist=10
|
|
||||||
e_PhysMinCellSize=16
|
|
||||||
e_PhysOceanCell=1
|
|
||||||
g_breakage_mem_limit=2000
|
|
||||||
g_breakage_particles_limit=40
|
|
||||||
g_no_secondary_breaking=1
|
|
||||||
g_tree_cut_reuse_dist=1
|
|
||||||
p_max_entity_cells=75000
|
|
||||||
p_max_MC_iters=2000
|
|
||||||
p_max_substeps=2
|
|
||||||
|
|
||||||
[4]
|
|
||||||
es_MaxPhysDistInvisible=15
|
|
||||||
e_CullVegActivation=30
|
|
||||||
e_FoliageWindActivationDist=10
|
|
||||||
e_PhysMinCellSize=16
|
|
||||||
e_PhysOceanCell=1
|
|
||||||
g_breakage_mem_limit=2000
|
|
||||||
g_breakage_particles_limit=40
|
|
||||||
g_no_secondary_breaking=1
|
|
||||||
g_tree_cut_reuse_dist=1
|
|
||||||
p_max_entity_cells=75000
|
|
||||||
p_max_MC_iters=2000
|
|
||||||
p_max_substeps=2
|
|
||||||
|
|
||||||
[5]
|
|
||||||
es_MaxPhysDist=50
|
|
||||||
es_MaxPhysDistInvisible=15
|
|
||||||
e_CullVegActivation=30
|
|
||||||
e_FoliageWindActivationDist=10
|
|
||||||
e_PhysOceanCell=1
|
|
||||||
g_breakage_particles_limit=80
|
|
||||||
g_tree_cut_reuse_dist=0.35
|
|
||||||
p_max_MC_iters=4000
|
|
||||||
p_max_substeps=2
|
|
||||||
|
|
||||||
[6]
|
|
||||||
|
|
||||||
[8]
|
|
||||||
@ -1,114 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
r_PostProcessEffects=1
|
|
||||||
q_ShaderHDR=2
|
|
||||||
q_ShaderPostProcess=2
|
|
||||||
r_ChromaticAberration=0
|
|
||||||
r_ColorGradingChartsCache=0
|
|
||||||
r_DepthOfField=2
|
|
||||||
r_Flares=1
|
|
||||||
r_HDRBloomQuality=2
|
|
||||||
r_MotionBlur=2
|
|
||||||
r_MotionBlurMaxViewDist=100000
|
|
||||||
r_MotionBlurQuality=1
|
|
||||||
r_MotionBlurShutterSpeed=125
|
|
||||||
r_Rain=2
|
|
||||||
r_RainMaxViewDist_Deferred=150
|
|
||||||
r_Sharpening=0
|
|
||||||
r_Snow=2
|
|
||||||
r_SunShafts=2
|
|
||||||
r_TranspDepthFixup=1
|
|
||||||
r_ToneMapTechnique=0
|
|
||||||
r_ToneMapExposureType=0
|
|
||||||
r_HDRBloom=1
|
|
||||||
r_ColorGrading=1
|
|
||||||
r_ColorSpace=0
|
|
||||||
|
|
||||||
[1]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=1
|
|
||||||
r_ColorGrading=0
|
|
||||||
r_DepthOfField=0
|
|
||||||
r_Flares=0
|
|
||||||
r_HDRBloom=0
|
|
||||||
r_HDRBloomQuality=0
|
|
||||||
r_MotionBlur=0
|
|
||||||
r_MotionBlurMaxViewDist=16
|
|
||||||
r_MotionBlurQuality=0
|
|
||||||
r_Rain=1
|
|
||||||
r_RainMaxViewDist_Deferred=40
|
|
||||||
r_Snow=1
|
|
||||||
r_SunShafts=0
|
|
||||||
r_TranspDepthFixup=0
|
|
||||||
r_ToneMapTechnique=3
|
|
||||||
r_ToneMapExposureType=1
|
|
||||||
r_ColorSpace=2
|
|
||||||
|
|
||||||
|
|
||||||
[2]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=1
|
|
||||||
r_ColorGradingChartsCache=4
|
|
||||||
r_DepthOfField=1
|
|
||||||
r_Flares=0
|
|
||||||
r_HDRBloomQuality=0
|
|
||||||
r_MotionBlur=0
|
|
||||||
r_MotionBlurMaxViewDist=16
|
|
||||||
r_MotionBlurQuality=0
|
|
||||||
r_Rain=1
|
|
||||||
r_RainMaxViewDist_Deferred=40
|
|
||||||
r_Snow=1
|
|
||||||
r_SunShafts=1
|
|
||||||
r_TranspDepthFixup=0
|
|
||||||
|
|
||||||
|
|
||||||
[3]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=2
|
|
||||||
r_ColorGradingChartsCache=4
|
|
||||||
r_DepthOfField=1
|
|
||||||
r_HDRBloomQuality=1
|
|
||||||
r_MotionBlur=0
|
|
||||||
r_MotionBlurMaxViewDist=16
|
|
||||||
r_MotionBlurQuality=0
|
|
||||||
r_Rain=1
|
|
||||||
r_RainMaxViewDist_Deferred=40
|
|
||||||
r_Snow=1
|
|
||||||
r_SunShafts=1
|
|
||||||
r_TranspDepthFixup=0
|
|
||||||
|
|
||||||
[4]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=2
|
|
||||||
r_ColorGradingChartsCache=4
|
|
||||||
r_DepthOfField=1
|
|
||||||
r_HDRBloomQuality=1
|
|
||||||
r_MotionBlur=0
|
|
||||||
r_MotionBlurMaxViewDist=16
|
|
||||||
r_MotionBlurQuality=0
|
|
||||||
r_Rain=1
|
|
||||||
r_RainMaxViewDist_Deferred=40
|
|
||||||
r_Snow=1
|
|
||||||
r_SunShafts=1
|
|
||||||
r_TranspDepthFixup=0
|
|
||||||
|
|
||||||
[5]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=1
|
|
||||||
r_ColorGradingChartsCache=4
|
|
||||||
r_MotionBlurMaxViewDist=16
|
|
||||||
r_MotionBlurQuality=0
|
|
||||||
r_RainMaxViewDist_Deferred=40
|
|
||||||
r_TranspDepthFixup=0
|
|
||||||
|
|
||||||
[6]
|
|
||||||
q_ShaderHDR=1
|
|
||||||
q_ShaderPostProcess=1
|
|
||||||
r_RainMaxViewDist_Deferred=100
|
|
||||||
|
|
||||||
[8]
|
|
||||||
q_ShaderHDR=3
|
|
||||||
q_ShaderPostProcess=3
|
|
||||||
r_MotionBlurQuality=2
|
|
||||||
@ -1,98 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
q_ShaderGeneral=2
|
|
||||||
q_ShaderMetal=2
|
|
||||||
q_ShaderGlass=2
|
|
||||||
q_ShaderVegetation=2
|
|
||||||
q_ShaderIce=2
|
|
||||||
q_ShaderTerrain=2
|
|
||||||
q_ShaderShadow=2
|
|
||||||
q_ShaderFX=2
|
|
||||||
q_ShaderSky=2
|
|
||||||
q_Renderer=2
|
|
||||||
|
|
||||||
[1]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=1
|
|
||||||
|
|
||||||
[2]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=1
|
|
||||||
|
|
||||||
[3]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=2
|
|
||||||
|
|
||||||
[4]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=2
|
|
||||||
|
|
||||||
[5]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=1
|
|
||||||
|
|
||||||
[6]
|
|
||||||
q_ShaderGeneral=1
|
|
||||||
q_ShaderMetal=1
|
|
||||||
q_ShaderGlass=1
|
|
||||||
q_ShaderVegetation=1
|
|
||||||
q_ShaderIce=1
|
|
||||||
q_ShaderTerrain=1
|
|
||||||
q_ShaderShadow=1
|
|
||||||
q_ShaderFX=1
|
|
||||||
q_ShaderSky=1
|
|
||||||
q_Renderer=1
|
|
||||||
|
|
||||||
[8]
|
|
||||||
q_ShaderGeneral=3
|
|
||||||
q_ShaderMetal=3
|
|
||||||
q_ShaderGlass=3
|
|
||||||
q_ShaderVegetation=3
|
|
||||||
q_ShaderIce=3
|
|
||||||
q_ShaderTerrain=3
|
|
||||||
q_ShaderShadow=3
|
|
||||||
q_ShaderFX=3
|
|
||||||
q_ShaderSky=3
|
|
||||||
q_Renderer=3
|
|
||||||
@ -1,120 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_CacheNearestCubePicking=1
|
|
||||||
e_DynamicLightsMaxEntityLights=16
|
|
||||||
e_GI=1
|
|
||||||
e_LightVolumes=1
|
|
||||||
e_SkyUpdateRate=1
|
|
||||||
e_TerrainAo=0
|
|
||||||
e_VegetationUseTerrainColor=1
|
|
||||||
r_DeferredShadingDepthBoundsTest=1
|
|
||||||
r_DeferredShadingTiled=2
|
|
||||||
r_DeferredShadingTiledHairQuality=1
|
|
||||||
r_deferredShadingFilterGBuffer=0
|
|
||||||
r_DeferredShadingSSS=1
|
|
||||||
r_AntialiasingMode=3
|
|
||||||
r_DetailDistance=8
|
|
||||||
r_EnvTexUpdateInterval=0.05
|
|
||||||
r_Refraction=1
|
|
||||||
r_RefractionPartialResolves=2
|
|
||||||
r_ssdo=1
|
|
||||||
r_ssdoHalfRes=2
|
|
||||||
r_ssdoColorBleeding=1
|
|
||||||
r_SSReflections=1
|
|
||||||
r_SSReflHalfRes=1
|
|
||||||
r_VisAreaClipLightsPerPixel=1
|
|
||||||
sys_spec_Quality=7
|
|
||||||
|
|
||||||
[1]
|
|
||||||
e_DynamicLightsMaxEntityLights=2
|
|
||||||
e_GI=0
|
|
||||||
e_SkyUpdateRate=0.5
|
|
||||||
e_VegetationUseTerrainColor=0
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_DeferredShadingTiledHairQuality=0
|
|
||||||
r_DeferredShadingSSS=0
|
|
||||||
r_AntialiasingMode=0
|
|
||||||
r_DetailDistance=4
|
|
||||||
r_EnvTexUpdateInterval=0.075
|
|
||||||
r_Refraction=0
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
r_ssdo=0
|
|
||||||
r_ssdoHalfRes=1
|
|
||||||
r_ssdoColorBleeding=0
|
|
||||||
r_SSReflections=0
|
|
||||||
sys_spec_Quality=1
|
|
||||||
|
|
||||||
[2]
|
|
||||||
e_DynamicLightsMaxEntityLights=2
|
|
||||||
e_GI=0
|
|
||||||
e_SkyUpdateRate=0.5
|
|
||||||
e_VegetationUseTerrainColor=0
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_DeferredShadingTiledHairQuality=0
|
|
||||||
r_DeferredShadingSSS=0
|
|
||||||
r_AntialiasingMode=0
|
|
||||||
r_DetailDistance=4
|
|
||||||
r_EnvTexUpdateInterval=0.075
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
r_ssdo=0
|
|
||||||
r_ssdoHalfRes=1
|
|
||||||
r_ssdoColorBleeding=0
|
|
||||||
r_SSReflections=0
|
|
||||||
sys_spec_Quality=2
|
|
||||||
|
|
||||||
[3]
|
|
||||||
e_DynamicLightsMaxEntityLights=2
|
|
||||||
e_GI=0
|
|
||||||
e_SkyUpdateRate=0.5
|
|
||||||
e_VegetationUseTerrainColor=0
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_DeferredShadingTiledHairQuality=0
|
|
||||||
r_DeferredShadingSSS=0
|
|
||||||
r_AntialiasingMode=0
|
|
||||||
r_DetailDistance=4
|
|
||||||
r_EnvTexUpdateInterval=0.075
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
r_ssdo=0
|
|
||||||
r_ssdoColorBleeding=0
|
|
||||||
r_SSReflections=0
|
|
||||||
sys_spec_Quality=3
|
|
||||||
|
|
||||||
[4]
|
|
||||||
e_DynamicLightsMaxEntityLights=2
|
|
||||||
e_GI=0
|
|
||||||
e_SkyUpdateRate=0.5
|
|
||||||
e_VegetationUseTerrainColor=0
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_DeferredShadingTiledHairQuality=0
|
|
||||||
r_DeferredShadingSSS=0
|
|
||||||
r_AntialiasingMode=0
|
|
||||||
r_DetailDistance=4
|
|
||||||
r_EnvTexUpdateInterval=0.075
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
r_ssdo=1
|
|
||||||
r_ssdoHalfRes=1
|
|
||||||
r_ssdoColorBleeding=0
|
|
||||||
r_SSReflections=0
|
|
||||||
sys_spec_Quality=4
|
|
||||||
|
|
||||||
[5]
|
|
||||||
e_DynamicLightsMaxEntityLights=7
|
|
||||||
e_GI=0
|
|
||||||
e_SkyUpdateRate=0.5
|
|
||||||
r_DetailDistance=4
|
|
||||||
r_EnvTexUpdateInterval=0.075
|
|
||||||
r_SSReflections=0
|
|
||||||
r_DeferredShadingTiledHairQuality=0
|
|
||||||
r_DeferredShadingSSS=0
|
|
||||||
sys_spec_Quality=5
|
|
||||||
|
|
||||||
[6]
|
|
||||||
e_DynamicLightsMaxEntityLights=11
|
|
||||||
sys_spec_Quality=6
|
|
||||||
|
|
||||||
[8]
|
|
||||||
r_DeferredShadingTiledHairQuality=2
|
|
||||||
r_SSReflHalfRes=0
|
|
||||||
sys_spec_Quality=8
|
|
||||||
@ -1,116 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_GsmLodsNum=5
|
|
||||||
e_GsmRange=3
|
|
||||||
e_ParticlesShadows=1
|
|
||||||
e_Shadows=1
|
|
||||||
e_ShadowsBlendCascades=1
|
|
||||||
e_ShadowsClouds=1
|
|
||||||
e_ShadowsCastViewDistRatio=1
|
|
||||||
e_ShadowsLodBiasFixed=0
|
|
||||||
e_ShadowsMaxTexRes=1024
|
|
||||||
e_ShadowsOnAlphaBlend=0
|
|
||||||
e_ShadowsPoolSize=4096
|
|
||||||
e_ShadowsResScale=4
|
|
||||||
e_ShadowsTessellateCascades=1
|
|
||||||
e_ShadowsTessellateDLights=0
|
|
||||||
e_ShadowsUpdateViewDistRatio=256
|
|
||||||
r_DrawNearShadows=1
|
|
||||||
r_FogShadows=2
|
|
||||||
r_FogShadowsWater=0
|
|
||||||
r_ShadowJittering=2.5
|
|
||||||
r_ShadowPoolMaxFrames=30
|
|
||||||
r_ShadowPoolMaxTimeslicedUpdatesPerFrame=100
|
|
||||||
r_ShadowsPCFiltering=1
|
|
||||||
r_ShadowsCache=4
|
|
||||||
r_ShadowsCacheFormat=1
|
|
||||||
r_ShadowsCacheResolutions=6324,4214
|
|
||||||
r_ShadowsUseClipVolume=1
|
|
||||||
e_ObjShadowCastSpec=3
|
|
||||||
|
|
||||||
[1]
|
|
||||||
e_GsmLodsNum=3
|
|
||||||
e_ParticlesShadows=0
|
|
||||||
e_ShadowsBlendCascades=0
|
|
||||||
e_ShadowsCastViewDistRatio=0.8
|
|
||||||
e_ShadowsLodBiasFixed=1
|
|
||||||
e_ShadowsMaxTexRes=512
|
|
||||||
r_DrawNearShadows=0
|
|
||||||
r_FogShadows=0
|
|
||||||
r_ShadowJittering=0
|
|
||||||
r_ShadowsCacheFormat=0
|
|
||||||
r_ShadowsCacheResolutions=3162,2107
|
|
||||||
e_ObjShadowCastSpec=1
|
|
||||||
e_ShadowsPoolSize=1024
|
|
||||||
|
|
||||||
[2]
|
|
||||||
e_GsmLodsNum=4
|
|
||||||
e_ParticlesShadows=0
|
|
||||||
e_ShadowsBlendCascades=0
|
|
||||||
e_ShadowsCastViewDistRatio=0.8
|
|
||||||
e_ShadowsLodBiasFixed=1
|
|
||||||
e_ShadowsMaxTexRes=512
|
|
||||||
r_DrawNearShadows=0
|
|
||||||
r_FogShadows=0
|
|
||||||
r_ShadowJittering=0
|
|
||||||
r_ShadowsCacheFormat=0
|
|
||||||
r_ShadowsCacheResolutions=3162,2107
|
|
||||||
e_ObjShadowCastSpec=1
|
|
||||||
e_ShadowsPoolSize=1024
|
|
||||||
|
|
||||||
[3]
|
|
||||||
e_GsmLodsNum=4
|
|
||||||
e_ParticlesShadows=0
|
|
||||||
e_ShadowsBlendCascades=0
|
|
||||||
e_ShadowsCastViewDistRatio=0.8
|
|
||||||
e_ShadowsLodBiasFixed=1
|
|
||||||
e_ShadowsMaxTexRes=512
|
|
||||||
r_DrawNearShadows=0
|
|
||||||
r_FogShadows=0
|
|
||||||
r_ShadowJittering=0
|
|
||||||
r_ShadowsCacheFormat=0
|
|
||||||
r_ShadowsCacheResolutions=3162,2107
|
|
||||||
e_ObjShadowCastSpec=1
|
|
||||||
e_ShadowsPoolSize=1024
|
|
||||||
|
|
||||||
[4]
|
|
||||||
e_GsmLodsNum=4
|
|
||||||
e_ParticlesShadows=0
|
|
||||||
e_ShadowsBlendCascades=0
|
|
||||||
e_ShadowsCastViewDistRatio=0.8
|
|
||||||
e_ShadowsLodBiasFixed=1
|
|
||||||
e_ShadowsMaxTexRes=512
|
|
||||||
r_DrawNearShadows=0
|
|
||||||
r_FogShadows=0
|
|
||||||
r_ShadowJittering=0
|
|
||||||
r_ShadowsCacheFormat=0
|
|
||||||
r_ShadowsCacheResolutions=3162,2107
|
|
||||||
e_ObjShadowCastSpec=1
|
|
||||||
e_ShadowsPoolSize=1024
|
|
||||||
|
|
||||||
[5]
|
|
||||||
e_GsmLodsNum=4
|
|
||||||
e_ParticlesShadows=0
|
|
||||||
e_ShadowsBlendCascades=0
|
|
||||||
e_ShadowsCastViewDistRatio=0.8
|
|
||||||
e_ShadowsLodBiasFixed=1
|
|
||||||
e_ShadowsMaxTexRes=512
|
|
||||||
r_FogShadows=0
|
|
||||||
r_ShadowJittering=1
|
|
||||||
e_ObjShadowCastSpec=1
|
|
||||||
r_ShadowsCacheResolutions=3162,2107
|
|
||||||
|
|
||||||
[6]
|
|
||||||
r_ShadowJittering=1
|
|
||||||
e_ObjShadowCastSpec=2
|
|
||||||
|
|
||||||
[8]
|
|
||||||
r_FogShadows=1
|
|
||||||
r_FogShadowsWater=1
|
|
||||||
r_ShadowPoolMaxFrames=0
|
|
||||||
r_ShadowPoolMaxTimeslicedUpdatesPerFrame=100
|
|
||||||
e_ObjShadowCastSpec=4
|
|
||||||
r_ShadowsCache=5
|
|
||||||
r_ShadowsCacheResolutions=4214
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
[1]
|
|
||||||
|
|
||||||
[2]
|
|
||||||
|
|
||||||
[3]
|
|
||||||
|
|
||||||
[4]
|
|
||||||
|
|
||||||
[5]
|
|
||||||
|
|
||||||
[6]
|
|
||||||
|
|
||||||
[8]
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_TerrainTextureStreamingPoolItemsNum=64
|
|
||||||
r_DynTexAtlasCloudsMaxSize=32
|
|
||||||
r_DynTexAtlasSpritesMaxSize=32
|
|
||||||
r_DynTexMaxSize=80
|
|
||||||
r_EnvCMResolution=2
|
|
||||||
r_EnvTexResolution=3
|
|
||||||
r_ImposterRatio=1
|
|
||||||
r_TexAtlasSize=2048
|
|
||||||
r_TexMaxAnisotropy=4
|
|
||||||
r_TexMinAnisotropy=4
|
|
||||||
r_TexNoAnisoAlphaTest=0
|
|
||||||
|
|
||||||
[1]
|
|
||||||
e_TerrainTextureStreamingPoolItemsNum=16
|
|
||||||
r_DynTexAtlasCloudsMaxSize=8
|
|
||||||
r_DynTexAtlasSpritesMaxSize=8
|
|
||||||
r_DynTexMaxSize=20
|
|
||||||
r_EnvCMResolution=0
|
|
||||||
r_EnvTexResolution=1
|
|
||||||
r_ImposterRatio=2
|
|
||||||
r_TexAtlasSize=512
|
|
||||||
r_TexMaxAnisotropy=2
|
|
||||||
r_TexMinAnisotropy=2
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[2]
|
|
||||||
e_TerrainTextureStreamingPoolItemsNum=16
|
|
||||||
r_DynTexAtlasCloudsMaxSize=8
|
|
||||||
r_DynTexAtlasSpritesMaxSize=8
|
|
||||||
r_DynTexMaxSize=20
|
|
||||||
r_EnvCMResolution=0
|
|
||||||
r_EnvTexResolution=1
|
|
||||||
r_ImposterRatio=2
|
|
||||||
r_TexAtlasSize=512
|
|
||||||
r_TexMaxAnisotropy=2
|
|
||||||
r_TexMinAnisotropy=2
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[3]
|
|
||||||
e_TerrainTextureStreamingPoolItemsNum=16
|
|
||||||
r_DynTexAtlasCloudsMaxSize=8
|
|
||||||
r_DynTexAtlasSpritesMaxSize=8
|
|
||||||
r_DynTexMaxSize=20
|
|
||||||
r_EnvCMResolution=0
|
|
||||||
r_EnvTexResolution=1
|
|
||||||
r_ImposterRatio=2
|
|
||||||
r_TexAtlasSize=512
|
|
||||||
r_TexMaxAnisotropy=2
|
|
||||||
r_TexMinAnisotropy=2
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[4]
|
|
||||||
e_TerrainTextureStreamingPoolItemsNum=16
|
|
||||||
r_DynTexAtlasCloudsMaxSize=8
|
|
||||||
r_DynTexAtlasSpritesMaxSize=8
|
|
||||||
r_DynTexMaxSize=20
|
|
||||||
r_EnvCMResolution=0
|
|
||||||
r_EnvTexResolution=1
|
|
||||||
r_ImposterRatio=2
|
|
||||||
r_TexAtlasSize=512
|
|
||||||
r_TexMaxAnisotropy=2
|
|
||||||
r_TexMinAnisotropy=2
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[5]
|
|
||||||
r_DynTexAtlasCloudsMaxSize=24
|
|
||||||
r_DynTexAtlasSpritesMaxSize=16
|
|
||||||
r_DynTexMaxSize=50
|
|
||||||
r_EnvCMResolution=0
|
|
||||||
r_EnvTexResolution=1
|
|
||||||
r_ImposterRatio=2
|
|
||||||
r_TexAtlasSize=512
|
|
||||||
r_TexMaxAnisotropy=2
|
|
||||||
r_TexMinAnisotropy=2
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[6]
|
|
||||||
r_DynTexAtlasCloudsMaxSize=24
|
|
||||||
r_DynTexAtlasSpritesMaxSize=16
|
|
||||||
r_DynTexMaxSize=60
|
|
||||||
r_EnvCMResolution=1
|
|
||||||
r_EnvTexResolution=2
|
|
||||||
r_ImposterRatio=1.5
|
|
||||||
r_TexMaxAnisotropy=8
|
|
||||||
r_TexMinAnisotropy=8
|
|
||||||
r_TexNoAnisoAlphaTest=1
|
|
||||||
|
|
||||||
[8]
|
|
||||||
r_TexMaxAnisotropy=16
|
|
||||||
r_TexMinAnisotropy=16
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
[default]
|
|
||||||
; dummy default for this CVarGroup (will be auto initialized during streaming system init or overridden by user via system.cfg)
|
|
||||||
= 0
|
|
||||||
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
r_TexturesStreaming=1
|
|
||||||
r_TexturesStreamingMipBias=0
|
|
||||||
r_TexturesstreamingMinUsableMips=8
|
|
||||||
r_TexturesStreamingSkipMips=2
|
|
||||||
r_TexturesStreamPoolSize=256
|
|
||||||
|
|
||||||
[1]
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
r_TexturesStreaming=0
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=384
|
|
||||||
|
|
||||||
[2]
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
r_TexturesStreaming=0
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=384
|
|
||||||
|
|
||||||
[3]
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
r_TexturesStreaming=0
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=384
|
|
||||||
|
|
||||||
[4]
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
r_TexturesStreaming=0
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=384
|
|
||||||
|
|
||||||
[5]
|
|
||||||
; VRAM 1.0 GB
|
|
||||||
|
|
||||||
[6]
|
|
||||||
; VRAM 1.5 GB
|
|
||||||
r_TexturesStreamingSkipMips=1
|
|
||||||
r_TexturesStreamPoolSize=512
|
|
||||||
|
|
||||||
[7]
|
|
||||||
; VRAM 2.0 GB
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=640
|
|
||||||
|
|
||||||
[8]
|
|
||||||
; VRAM 3.0 GB
|
|
||||||
r_TexturesStreamingSkipMips=0
|
|
||||||
r_TexturesStreamPoolSize=1536
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_Clouds=1
|
|
||||||
r_Beams=1
|
|
||||||
|
|
||||||
[1]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[2]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[3]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[4]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[5]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[6]
|
|
||||||
r_Beams=0
|
|
||||||
|
|
||||||
[8]
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
[default]
|
|
||||||
; default of this CVarGroup
|
|
||||||
= 7
|
|
||||||
|
|
||||||
e_WaterOceanFFT=1
|
|
||||||
e_WaterTessellationAmount=10
|
|
||||||
e_WaterTessellationSwathWidth=10
|
|
||||||
q_ShaderWater=2
|
|
||||||
r_WaterCaustics=1
|
|
||||||
r_WaterReflections=1
|
|
||||||
r_WaterReflectionsQuality=4
|
|
||||||
r_WaterReflectionsMinVisiblePixelsUpdate=0.05
|
|
||||||
r_WaterTessellationHW=0
|
|
||||||
r_WaterUpdateDistance=0.2
|
|
||||||
r_WaterUpdateFactor=0.0
|
|
||||||
r_WaterVolumeCaustics=0
|
|
||||||
r_WaterVolumeCausticsDensity=256
|
|
||||||
r_WaterVolumeCausticsMaxDist=35
|
|
||||||
r_WaterVolumeCausticsRes=1024
|
|
||||||
r_WaterVolumeCausticsSnapFactor=1
|
|
||||||
|
|
||||||
[1]
|
|
||||||
e_WaterTessellationAmount=20
|
|
||||||
q_ShaderWater=1
|
|
||||||
r_WaterReflectionsQuality=0
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.1
|
|
||||||
r_WaterVolumeCausticsDensity=64
|
|
||||||
r_WaterVolumeCausticsMaxDist=20
|
|
||||||
r_WaterVolumeCausticsRes=384
|
|
||||||
|
|
||||||
[2]
|
|
||||||
e_WaterTessellationAmount=20
|
|
||||||
q_ShaderWater=1
|
|
||||||
r_WaterReflectionsQuality=0
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.1
|
|
||||||
r_WaterVolumeCausticsDensity=64
|
|
||||||
r_WaterVolumeCausticsMaxDist=20
|
|
||||||
r_WaterVolumeCausticsRes=384
|
|
||||||
|
|
||||||
[3]
|
|
||||||
e_WaterTessellationAmount=20
|
|
||||||
q_ShaderWater=1
|
|
||||||
r_WaterReflectionsQuality=0
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.05
|
|
||||||
r_WaterVolumeCausticsDensity=64
|
|
||||||
r_WaterVolumeCausticsMaxDist=20
|
|
||||||
r_WaterVolumeCausticsRes=384
|
|
||||||
|
|
||||||
[4]
|
|
||||||
e_WaterTessellationAmount=20
|
|
||||||
q_ShaderWater=1
|
|
||||||
r_WaterReflectionsQuality=4
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.01
|
|
||||||
r_WaterVolumeCausticsDensity=64
|
|
||||||
r_WaterVolumeCausticsMaxDist=20
|
|
||||||
r_WaterVolumeCausticsRes=384
|
|
||||||
|
|
||||||
[5]
|
|
||||||
e_WaterTessellationAmount=20
|
|
||||||
q_ShaderWater=1
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.1
|
|
||||||
r_WaterVolumeCausticsDensity=64
|
|
||||||
r_WaterVolumeCausticsMaxDist=20
|
|
||||||
r_WaterVolumeCausticsRes=384
|
|
||||||
|
|
||||||
[6]
|
|
||||||
r_WaterUpdateDistance=1
|
|
||||||
r_WaterUpdateFactor=0.05
|
|
||||||
r_WaterVolumeCausticsDensity=128
|
|
||||||
r_WaterVolumeCausticsMaxDist=25
|
|
||||||
r_WaterVolumeCausticsRes=512
|
|
||||||
|
|
||||||
[8]
|
|
||||||
e_WaterTessellationAmount=85
|
|
||||||
r_WaterTessellationHW=1
|
|
||||||
r_WaterVolumeCaustics=1
|
|
||||||
@ -1,4 +1 @@
|
|||||||
ai_DebugDraw = 1
|
ai_DebugDraw = 1
|
||||||
ai_DebugDrawNavigation = 1
|
|
||||||
ai_DrawPath all
|
|
||||||
ai_debugMNMAgentType MediumSizedCharacters
|
|
||||||
@ -1,6 +1,3 @@
|
|||||||
; disable async shader activation as it crashes when r_shadersAllowCompilation=1
|
|
||||||
r_shadersAsyncActivation=0
|
|
||||||
|
|
||||||
; enable shader compiliation for r_measureOverdraw 4
|
; enable shader compiliation for r_measureOverdraw 4
|
||||||
r_shadersAllowCompilation=1
|
r_shadersAllowCompilation=1
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,3 @@
|
|||||||
demo_restart_level = 2
|
|
||||||
g_godMode=1
|
|
||||||
g_infiniteammo=1
|
|
||||||
r_displayinfo=1
|
r_displayinfo=1
|
||||||
demo_file = autotest
|
|
||||||
demo_ai = 1
|
|
||||||
demo_num_runs = 4
|
|
||||||
demo_quit = 1
|
|
||||||
hud_startPaused=0
|
|
||||||
sys_maxfps=0
|
sys_maxfps=0
|
||||||
e_ObjectLayersActivation=0
|
|
||||||
sys_flash = 0
|
|
||||||
r_vsync = 0
|
r_vsync = 0
|
||||||
|
|||||||
@ -1,13 +1,3 @@
|
|||||||
demo_restart_level = 1
|
|
||||||
g_godMode = 1
|
|
||||||
g_infiniteammo = 1
|
|
||||||
r_displayinfo = 2
|
r_displayinfo = 2
|
||||||
demo_file = timedemo_short
|
|
||||||
demo_ai = 0
|
|
||||||
demo_num_runs = 2
|
|
||||||
demo_quit = 1
|
|
||||||
-- hud_startPaused = 0
|
|
||||||
sys_maxfps = -1
|
sys_maxfps = -1
|
||||||
-- e_ObjectLayersActivation = 0
|
|
||||||
-- sys_flash = 0
|
|
||||||
r_vsync = 0
|
r_vsync = 0
|
||||||
@ -1,6 +0,0 @@
|
|||||||
r_ColorGradingChartsCache = 0
|
|
||||||
r_waterupdateFactor = 0
|
|
||||||
r_PostProcessHUD3DCache = 0
|
|
||||||
e_gsmcache = 0
|
|
||||||
r_ConditionalRendering = 0
|
|
||||||
e_gicache = 0
|
|
||||||
@ -1,77 +0,0 @@
|
|||||||
ag_turnSpeedParamScale=0.0
|
|
||||||
aim_assistFalloffDistance=200
|
|
||||||
aim_assistInputForFullFollow_Ironsight=0.20
|
|
||||||
aim_assistMaxDistance=255
|
|
||||||
aim_assistMaxDistance_ironsight=255
|
|
||||||
aim_assistMinTurnScale=0.5
|
|
||||||
aim_assistMinTurnScale_ironsight=0.5
|
|
||||||
aim_assistSlowDisableDistance=255
|
|
||||||
aim_assistSlowFalloffStartDistance=200
|
|
||||||
aim_assistSlowThresholdOuter=2.5
|
|
||||||
aim_assiststrength=0.7
|
|
||||||
aim_assiststrength_ironsight=0.75
|
|
||||||
br_breakmaxworldsize=511
|
|
||||||
cl_sensitivityControllerMP=0.6
|
|
||||||
cl_shallowWaterSpeedMulPlayer=1.0
|
|
||||||
controller_multiplier_x=3
|
|
||||||
controller_multiplier_z=4
|
|
||||||
g_actorViewDistRatio=255
|
|
||||||
|
|
||||||
-- This forces broken trees to have spherical inertia, which makes them harder to rotate around their vertical axis.
|
|
||||||
g_breakageMinAxisInertia=1.0
|
|
||||||
g_glassAutoShatterMinArea=0.5
|
|
||||||
|
|
||||||
g_distanceForceNoIk=35
|
|
||||||
g_fpDbaManagementEnable=0
|
|
||||||
g_godMode=0
|
|
||||||
g_highlightingMaxDistanceToHighlightSquared=625
|
|
||||||
g_hitDeathReactions_streaming=2
|
|
||||||
g_mp_as_DefendersMaxHealth=150
|
|
||||||
g_multiplayerDefault=1
|
|
||||||
|
|
||||||
-- Overriden in GameSDK\Difficulty\*.cfg
|
|
||||||
g_playerLowHealthThreshold=20
|
|
||||||
g_playerMidHealthThreshold=60
|
|
||||||
|
|
||||||
g_spawn_vistable_numLineTestsPerFrame=3
|
|
||||||
g_telemetryConfig="MP"
|
|
||||||
g_telemetrySampleRateBandwidth=3
|
|
||||||
g_telemetrySampleRateMemory=2
|
|
||||||
g_telemetrySampleRatePerformance=1
|
|
||||||
g_VTOLInsideBoundsScaleX=0.6
|
|
||||||
g_VTOLInsideBoundsScaleY=1
|
|
||||||
net_breakage_sync_entities=0
|
|
||||||
net_enable_tfrc=0
|
|
||||||
net_log=1
|
|
||||||
|
|
||||||
-- Make consoles match the PC gravity
|
|
||||||
p_gravity_z="-13"
|
|
||||||
|
|
||||||
-- Sanity check for physics RepositionEntity
|
|
||||||
p_max_entity_cells=10000
|
|
||||||
|
|
||||||
pl_impulseEnabled=1
|
|
||||||
pl_jump_maxTimerValue=0.0
|
|
||||||
pl_jump_quickPressThresh=0.12
|
|
||||||
pl_melee.angle_limit_from_behind=70
|
|
||||||
pl_melee.impulses_enable=1
|
|
||||||
pl_melee.melee_snap_angle_limit=45
|
|
||||||
pl_melee.melee_snap_end_position_range=1.5
|
|
||||||
pl_melee.melee_snap_move_speed_multiplier=10
|
|
||||||
pl_melee.melee_snap_target_select_range=3.5
|
|
||||||
pl_melee.mp_knockback_strength_hor=2
|
|
||||||
pl_melee.mp_melee_system=1
|
|
||||||
pl_melee.mp_victim_screenfx_blendout_duration=0.25
|
|
||||||
pl_melee.mp_victim_screenfx_duration=0.1
|
|
||||||
pl_nanovision_timetodrain=8
|
|
||||||
pl_nanovision_timetorecharge=16
|
|
||||||
pl_pickAndThrow.chargedThrowAutoAimConeSize=10
|
|
||||||
pl_pickAndThrow.complexMelee_snap_angle_limit=25
|
|
||||||
pl_sliding_control_mp.deceleration_speed=4
|
|
||||||
pl_sliding_control_mp.max_downhill_acceleration=15
|
|
||||||
pl_sliding_control_mp.min_speed=4
|
|
||||||
pl_sliding_control_mp.min_speed_threshold=5
|
|
||||||
pl_stealthKill_aimVsSpineLerp=0.65
|
|
||||||
pl_stealthKill_useExtendedRange=1
|
|
||||||
p_splash_vel0=0.5
|
|
||||||
sv_bandwidth=2147483647
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
e_GI=0
|
|
||||||
r_DeferredShadingIndexedAmbient=0
|
|
||||||
e_ParticlesObjectCollisions=0
|
|
||||||
g_distanceForceNoLegRaycasts=0.00001
|
|
||||||
g_telemetryDisplaySessionId=1
|
|
||||||
g_breakageNoDebrisCollisions=1
|
|
||||||
|
|
||||||
; Breakage throttling
|
|
||||||
; These are explained in ActionGame.cpp
|
|
||||||
;
|
|
||||||
g_glassAutoShatterOnExplosions=1
|
|
||||||
g_glassNoDecals=1
|
|
||||||
g_glassMaxPanesToBreakPerFrame=2
|
|
||||||
g_breakageTreeMax=100
|
|
||||||
g_breakageTreeInc=101
|
|
||||||
g_breakageTreeDec=25
|
|
||||||
g_breakageTreeIncGlass=51
|
|
||||||
|
|
||||||
sys_PakInMemoryPakSizeLimit=25
|
|
||||||
|
|
||||||
r_TexturesStreamPoolSecondarySize=35
|
|
||||||
r_MotionBlur=1
|
|
||||||
|
|
||||||
e_CoverageBufferReproj=2
|
|
||||||
|
|
||||||
osm_enabled = 1
|
|
||||||
|
|
||||||
g_waterHitOnly = 1
|
|
||||||
p_max_object_splashes=1
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
ai_CompatibilityMode=crysis2
|
|
||||||
ai_BurstWhileMovingDestinationRange=9999.0
|
|
||||||
|
|
||||||
g_telemetryConfig=SP
|
|
||||||
|
|
||||||
net_inactivitytimeout=3600
|
|
||||||
net_inactivitytimeoutDevmode=3600
|
|
||||||
|
|
||||||
pl_movement.nonCombat_heavy_weapon_speed_scale=1.0
|
|
||||||
|
|
||||||
-- BLM - Don't override game rules. The template project only has DummyRules.
|
|
||||||
-- Furthermore, multiplayer.cfg doesn't set sv_gamerules, so the inconsistency
|
|
||||||
-- is likely to create bugs.
|
|
||||||
--sv_gamerules=SinglePlayer
|
|
||||||
ca_StreamCHR=1
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
r_UseZPass = 1
|
|
||||||
r_GeomInstancing = 1
|
|
||||||
|
|
||||||
e_Fog = 1
|
|
||||||
e_Clouds = 1
|
|
||||||
e_Decals = 1
|
|
||||||
e_TerrainDetailMaterials = 1
|
|
||||||
e_Dissolve = 1
|
|
||||||
e_TerrainAo = 1
|
|
||||||
|
|
||||||
r_WaterReflections = 1
|
|
||||||
|
|
||||||
e_Shadows = 1
|
|
||||||
e_VegetationBending = 1
|
|
||||||
|
|
||||||
r_PostProcessEffects = 1
|
|
||||||
r_Flares = 1
|
|
||||||
r_Beams = 1
|
|
||||||
r_Glow = 1
|
|
||||||
|
|
||||||
r_DetailTextures = 1
|
|
||||||
|
|
||||||
r_refraction = 1
|
|
||||||
r_sunshafts = 1
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
r_UseZPass = 0
|
|
||||||
r_GeomInstancing = 0
|
|
||||||
|
|
||||||
e_Fog = 0
|
|
||||||
e_Clouds = 0
|
|
||||||
e_Decals = 0
|
|
||||||
e_TerrainDetailMaterials = 0
|
|
||||||
e_Dissolve = 0
|
|
||||||
e_TerrainAo = 0
|
|
||||||
|
|
||||||
r_WaterReflections = 0
|
|
||||||
|
|
||||||
e_Shadows = 0
|
|
||||||
e_VegetationBending = 0
|
|
||||||
|
|
||||||
r_PostProcessEffects = 0
|
|
||||||
r_Flares = 0
|
|
||||||
r_Beams = 0
|
|
||||||
r_Glow = 0
|
|
||||||
|
|
||||||
r_DetailTextures = 0
|
|
||||||
|
|
||||||
r_refraction = 0
|
|
||||||
r_sunshafts = 0
|
|
||||||
@ -1,76 +1,8 @@
|
|||||||
sys_spec_Full=2
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=0
|
r_vsync=0
|
||||||
|
|
||||||
-- Disable gmem for this device because it causes a crash
|
|
||||||
r_EnableGMEMPath=0
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
sys_job_system_max_worker=2
|
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
|
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
-- This allows the generation of reflections for the ocean water. Without it, the water looks really dark.
|
|
||||||
e_recursion=1
|
|
||||||
e_CheckOcclusion=1
|
|
||||||
|
|
||||||
r_Fur=0
|
|
||||||
az_Asset_EnableAsyncMeshLoading=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=33554432
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_objectdetail
|
|
||||||
------------------------
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LodRatio=5
|
|
||||||
e_ViewDistRatioDetail=19
|
|
||||||
e_ViewDistRatioVegetation=21
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_HDRBloom=0
|
|
||||||
r_SunShafts=0
|
|
||||||
r_ToneMapTechnique=3
|
|
||||||
r_ToneMapExposureType=1
|
|
||||||
r_ColorSpace=2
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_VisAreaClipLightsPerPixel=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_textureresolution
|
|
||||||
------------------------
|
|
||||||
r_TexturesstreamingMinUsableMips=7
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,65 +1,7 @@
|
|||||||
sys_spec_Full=3
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=0
|
r_vsync=0
|
||||||
|
|
||||||
-- Enable framebufferfetch(256bpp) or pls if applicable
|
|
||||||
r_EnableGMEMPath=2
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale already occurs
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
sys_job_system_max_worker=2
|
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
|
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
e_CheckOcclusion=1
|
|
||||||
|
|
||||||
r_Fur=0
|
|
||||||
az_Asset_EnableAsyncMeshLoading=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=33554432
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_objectdetail
|
|
||||||
------------------------
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LodRatio=5
|
|
||||||
e_ViewDistRatioDetail=19
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_VisAreaClipLightsPerPixel=0
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
r_ClearGMEMGBuffer=1
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,76 +1,7 @@
|
|||||||
sys_spec_Full=1
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=0
|
r_vsync=0
|
||||||
|
|
||||||
-- Enable framebufferfetch(256bpp) or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale already occurs
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
sys_job_system_max_worker=2
|
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
|
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
-- This allows the generation of reflections for the ocean water. Without it, the water looks really dark.
|
|
||||||
e_recursion=0
|
|
||||||
e_CheckOcclusion=1
|
|
||||||
|
|
||||||
r_Fur=0
|
|
||||||
|
|
||||||
-- Water occlusion queries crash in some OpenGL ES 3.0 devices
|
|
||||||
e_HwOcclusionCullingWater = 0
|
|
||||||
az_Asset_EnableAsyncMeshLoading=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=33554432
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_objectdetail
|
|
||||||
------------------------
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LodRatio=5
|
|
||||||
e_ViewDistRatioDetail=19
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_VisAreaClipLightsPerPixel=0
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_textureresolution
|
|
||||||
------------------------
|
|
||||||
r_TexturesstreamingMinUsableMips=6
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
r_ClearGMEMGBuffer=1
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,81 +1,7 @@
|
|||||||
sys_spec_Full=2
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=0
|
r_vsync=0
|
||||||
|
|
||||||
-- Enable framebufferfetch(256bpp) or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale already occurs
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
sys_job_system_max_worker=2
|
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
|
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
-- This allows the generation of reflections for the ocean water. Without it, the water looks really dark.
|
|
||||||
e_recursion=1
|
|
||||||
e_CheckOcclusion=1
|
|
||||||
|
|
||||||
r_Fur=0
|
|
||||||
az_Asset_EnableAsyncMeshLoading=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=33554432
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_objectdetail
|
|
||||||
------------------------
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LodRatio=5
|
|
||||||
e_ViewDistRatioDetail=19
|
|
||||||
e_ViewDistRatioVegetation=21
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_HDRBloom=0
|
|
||||||
r_SunShafts=0
|
|
||||||
r_ToneMapExposureType=1
|
|
||||||
r_ColorSpace=2
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_VisAreaClipLightsPerPixel=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_textureresolution
|
|
||||||
------------------------
|
|
||||||
r_TexturesstreamingMinUsableMips=7
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
r_ClearGMEMGBuffer=1
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,60 +1,5 @@
|
|||||||
sys_spec_Full=4
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=0
|
r_vsync=0
|
||||||
|
|
||||||
-- Enable framebufferfetch(256bpp) or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale already occurs
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
sys_job_system_max_worker=2
|
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
|
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
e_CheckOcclusion=1
|
|
||||||
|
|
||||||
r_Fur=0
|
|
||||||
az_Asset_EnableAsyncMeshLoading=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=33554432
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_objectdetail
|
|
||||||
------------------------
|
|
||||||
e_Dissolve=2
|
|
||||||
e_LodRatio=5
|
|
||||||
e_ViewDistRatioDetail=19
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_VisAreaClipLightsPerPixel=0
|
|
||||||
|
|
||||||
r_ClearGMEMGBuffer=1
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,100 +1,10 @@
|
|||||||
sys_spec_Full=3
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=1
|
r_vsync=1
|
||||||
|
|
||||||
-- Enable framebufferfetch or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Job System
|
|
||||||
------------------------
|
|
||||||
sys_job_system_enable=0
|
|
||||||
sys_job_system_max_worker=1
|
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
-- Streaming
|
-- Streaming
|
||||||
------------------------
|
------------------------
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- General Rendering
|
|
||||||
------------------------
|
|
||||||
r_Flush=0
|
|
||||||
-- Enabling this will clear the GMEM buffer before the z-pass
|
|
||||||
r_ClearGMEMGBuffer=2
|
|
||||||
r_Fur=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- VisArea / Portals
|
|
||||||
------------------------
|
|
||||||
e_PortalsBlend=0
|
|
||||||
r_GMEMVisAreasBlendWeight=0.5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_AutoPrecacheCgf=2
|
|
||||||
e_AutoPrecacheTerrainAndProcVeget=1
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=2048
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=32
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_water
|
|
||||||
------------------------
|
|
||||||
e_WaterOcean=2
|
|
||||||
e_WaterVolumes=2
|
|
||||||
e_WaterOceanBottom=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- batching
|
|
||||||
------------------------
|
|
||||||
r_Batching = 1
|
|
||||||
r_BatchType = 0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- geom instancing
|
|
||||||
------------------------
|
|
||||||
r_GeomInstancing=1
|
|
||||||
r_GeomInstancingThreshold=5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Geometry Cache
|
|
||||||
------------------------
|
|
||||||
e_GeomCaches=0
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,103 +1,10 @@
|
|||||||
sys_spec_Full=1
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=1
|
r_vsync=1
|
||||||
|
|
||||||
-- Enable framebufferfetch or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Job System
|
|
||||||
------------------------
|
|
||||||
sys_job_system_enable=0
|
|
||||||
sys_job_system_max_worker=1
|
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
-- Streaming
|
-- Streaming
|
||||||
------------------------
|
------------------------
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- General Rendering
|
|
||||||
------------------------
|
|
||||||
r_Flush=0
|
|
||||||
-- Enabling this will clear the GMEM buffer before the z-pass
|
|
||||||
r_ClearGMEMGBuffer=2
|
|
||||||
r_Fur=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- VisArea / Portals
|
|
||||||
------------------------
|
|
||||||
e_PortalsBlend=0
|
|
||||||
r_GMEMVisAreasBlendWeight=0.5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_AutoPrecacheCgf=2
|
|
||||||
e_AutoPrecacheTerrainAndProcVeget=1
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=32
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_water
|
|
||||||
------------------------
|
|
||||||
e_WaterOcean=2
|
|
||||||
e_WaterVolumes=2
|
|
||||||
e_WaterOceanBottom=0
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- batching
|
|
||||||
------------------------
|
|
||||||
r_Batching = 1
|
|
||||||
r_BatchType = 0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- geom instancing
|
|
||||||
------------------------
|
|
||||||
r_GeomInstancing=1
|
|
||||||
r_GeomInstancingThreshold=5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Geometry Cache
|
|
||||||
------------------------
|
|
||||||
e_GeomCaches=0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,101 +1,10 @@
|
|||||||
sys_spec_Full=2
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=1
|
r_vsync=1
|
||||||
|
|
||||||
-- Enable framebufferfetch or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Job System
|
|
||||||
------------------------
|
|
||||||
sys_job_system_enable=0
|
|
||||||
sys_job_system_max_worker=1
|
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
-- Streaming
|
-- Streaming
|
||||||
------------------------
|
------------------------
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- General Rendering
|
|
||||||
------------------------
|
|
||||||
r_Flush=0
|
|
||||||
-- Enabling this will clear the GMEM buffer before the z-pass
|
|
||||||
r_ClearGMEMGBuffer=2
|
|
||||||
r_Fur=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- VisArea / Portals
|
|
||||||
------------------------
|
|
||||||
e_PortalsBlend=0
|
|
||||||
r_GMEMVisAreasBlendWeight=0.5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_AutoPrecacheCgf=2
|
|
||||||
e_AutoPrecacheTerrainAndProcVeget=1
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=1024
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=32
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_water
|
|
||||||
------------------------
|
|
||||||
e_WaterOcean=2
|
|
||||||
e_WaterVolumes=2
|
|
||||||
e_WaterOceanBottom=0
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- batching
|
|
||||||
------------------------
|
|
||||||
r_Batching = 1
|
|
||||||
r_BatchType = 0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- geom instancing
|
|
||||||
------------------------
|
|
||||||
r_GeomInstancing=1
|
|
||||||
r_GeomInstancingThreshold=5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Geometry Cache
|
|
||||||
------------------------
|
|
||||||
e_GeomCaches=0
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,102 +1,10 @@
|
|||||||
sys_spec_Full=4
|
|
||||||
|
|
||||||
-- Cap frame rate at 30fps
|
-- Cap frame rate at 30fps
|
||||||
sys_maxfps=30
|
sys_maxfps=30
|
||||||
r_vsync=1
|
r_vsync=1
|
||||||
|
|
||||||
-- Enable framebufferfetch or pls if applicable
|
|
||||||
r_EnableGMEMPath=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Job System
|
|
||||||
------------------------
|
|
||||||
sys_job_system_enable=0
|
|
||||||
sys_job_system_max_worker=1
|
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
-- Streaming
|
-- Streaming
|
||||||
------------------------
|
------------------------
|
||||||
sys_streaming_in_blocks=1
|
sys_streaming_in_blocks=1
|
||||||
sys_streaming_memory_budget=512
|
sys_streaming_memory_budget=512
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- General Rendering
|
|
||||||
------------------------
|
|
||||||
r_Flush=0
|
|
||||||
-- Enabling this will clear the GMEM buffer before the z-pass
|
|
||||||
r_ClearGMEMGBuffer=2
|
|
||||||
r_Fur=0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- VisArea / Portals
|
|
||||||
------------------------
|
|
||||||
e_PortalsBlend=0
|
|
||||||
r_GMEMVisAreasBlendWeight=0.5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Misc. memory buffers
|
|
||||||
------------------------
|
|
||||||
e_AutoPrecacheCgf=2
|
|
||||||
e_AutoPrecacheTerrainAndProcVeget=1
|
|
||||||
e_GeomCacheBufferSize=0
|
|
||||||
e_CheckOcclusionQueueSize=512
|
|
||||||
e_CheckOcclusionOutputQueueSize=2048
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Animation
|
|
||||||
------------------------
|
|
||||||
ca_MemoryDefragPoolSize=32
|
|
||||||
ca_StreamCHR=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_water
|
|
||||||
------------------------
|
|
||||||
e_WaterOcean=2
|
|
||||||
e_WaterVolumes=2
|
|
||||||
e_WaterOceanBottom=0
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- batching
|
|
||||||
------------------------
|
|
||||||
r_Batching = 1
|
|
||||||
r_BatchType = 0
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- geom instancing
|
|
||||||
------------------------
|
|
||||||
r_GeomInstancing=1
|
|
||||||
r_GeomInstancingThreshold=5
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Geometry Cache
|
|
||||||
------------------------
|
|
||||||
e_GeomCaches=0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
|
|
||||||
-- Sort ligths since we have limited space in the shadowmap pool texture
|
|
||||||
r_DeferredShadingSortLights = 3
|
|
||||||
|
|
||||||
--Use an optimized pixel format for the lighting rendertargets during the lighting pass.
|
|
||||||
r_DeferredShadingLBuffersFmt = 2
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
|
|
||||||
sys_spec_Full=7
|
|
||||||
r_ShadersMETAL=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_SunShafts=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
e_GI = 0
|
|
||||||
|
|
||||||
|
|
||||||
r_Fur=2
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
|
|
||||||
sys_spec_Full=5
|
|
||||||
r_ShadersMETAL=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_SunShafts=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
e_GI=0
|
|
||||||
|
|
||||||
r_Fur=2
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
|
|
||||||
sys_spec_Full=6
|
|
||||||
r_ShadersMETAL=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_SunShafts=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
e_GI = 0
|
|
||||||
|
|
||||||
r_Fur=2
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
|
|
||||||
sys_spec_Full=8
|
|
||||||
r_ShadersMETAL=1
|
|
||||||
|
|
||||||
-- Default of 3 allocates all shaders (potentially >150 MB)
|
|
||||||
-- 1 is most memory efficient but definitely causes hitches when converting HLSL
|
|
||||||
-- shaders. Recommend 1 during dev, and 3 with optimized caches for release.
|
|
||||||
r_ShadersPreactivate=1
|
|
||||||
|
|
||||||
-- Skip the native upscale as a second upscale occurs on Metal Present
|
|
||||||
r_SkipNativeUpscale=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_postprocessing
|
|
||||||
------------------------
|
|
||||||
r_SunShafts=1
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- sys_spec_shading
|
|
||||||
------------------------
|
|
||||||
r_DeferredShadingTiled=0
|
|
||||||
r_RefractionPartialResolves=0
|
|
||||||
e_GI = 0
|
|
||||||
|
|
||||||
r_Fur=2
|
|
||||||
|
|
||||||
|
|
||||||
------------------------
|
|
||||||
-- Upscaling
|
|
||||||
------------------------
|
|
||||||
--0 point, 1 bilinear, 2 bicubic, 3 lanczos
|
|
||||||
r_UpscalingQuality=1
|
|
||||||
|
|
||||||
-- Due to performance issues with incremental cached shadow map updates, enable this to prevent us from culling every object in the world vs each cached shadow map each frame.
|
|
||||||
-- If no objects are present in the level this will eliminate the need to clear the massive cached textures each frame.
|
|
||||||
-- Set to 2 to allow distance-based updates along with script-based updates for the cached shadow maps
|
|
||||||
e_ShadowsCacheRequireManualUpdate = 2
|
|
||||||
@ -1 +0,0 @@
|
|||||||
sys_spec_Full = 7
|
|
||||||
@ -1 +0,0 @@
|
|||||||
sys_spec_Full = 5
|
|
||||||
@ -1 +0,0 @@
|
|||||||
sys_spec_Full = 6
|
|
||||||
@ -1 +0,0 @@
|
|||||||
sys_spec_Full = 8
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /dns=1 /preset=Uncompressed
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /mipmaps=0 /preset=Albedo /reduce=-1 /ser=1
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=AlbedoWithGenericAlpha /reduce="android:2,ios:2,mac:0,pc:0,provo:0"
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/autooptimizefile=0 /preset=Albedo /reduce="android:3,ios:3,mac:0,pc:0,provo:0"
|
|
||||||
@ -0,0 +1,184 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
#
|
||||||
|
#
|
||||||
|
import os, traceback, binascii, sys, json, pathlib
|
||||||
|
import azlmbr.math
|
||||||
|
import azlmbr.bus
|
||||||
|
|
||||||
|
#
|
||||||
|
# SceneAPI Processor
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
def log_exception_traceback():
|
||||||
|
exc_type, exc_value, exc_tb = sys.exc_info()
|
||||||
|
data = traceback.format_exception(exc_type, exc_value, exc_tb)
|
||||||
|
print(str(data))
|
||||||
|
|
||||||
|
def get_mesh_node_names(sceneGraph):
|
||||||
|
import azlmbr.scene as sceneApi
|
||||||
|
import azlmbr.scene.graph
|
||||||
|
from scene_api import scene_data as sceneData
|
||||||
|
|
||||||
|
meshDataList = []
|
||||||
|
node = sceneGraph.get_root()
|
||||||
|
children = []
|
||||||
|
paths = []
|
||||||
|
|
||||||
|
while node.IsValid():
|
||||||
|
# store children to process after siblings
|
||||||
|
if sceneGraph.has_node_child(node):
|
||||||
|
children.append(sceneGraph.get_node_child(node))
|
||||||
|
|
||||||
|
nodeName = sceneData.SceneGraphName(sceneGraph.get_node_name(node))
|
||||||
|
paths.append(nodeName.get_path())
|
||||||
|
|
||||||
|
# store any node that has mesh data content
|
||||||
|
nodeContent = sceneGraph.get_node_content(node)
|
||||||
|
if nodeContent.CastWithTypeName('MeshData'):
|
||||||
|
if sceneGraph.is_node_end_point(node) is False:
|
||||||
|
if (len(nodeName.get_path())):
|
||||||
|
meshDataList.append(sceneData.SceneGraphName(sceneGraph.get_node_name(node)))
|
||||||
|
|
||||||
|
# advance to next node
|
||||||
|
if sceneGraph.has_node_sibling(node):
|
||||||
|
node = sceneGraph.get_node_sibling(node)
|
||||||
|
elif children:
|
||||||
|
node = children.pop()
|
||||||
|
else:
|
||||||
|
node = azlmbr.scene.graph.NodeIndex()
|
||||||
|
|
||||||
|
return meshDataList, paths
|
||||||
|
|
||||||
|
def update_manifest(scene):
|
||||||
|
import json
|
||||||
|
import uuid, os
|
||||||
|
import azlmbr.scene as sceneApi
|
||||||
|
import azlmbr.scene.graph
|
||||||
|
from scene_api import scene_data as sceneData
|
||||||
|
|
||||||
|
graph = sceneData.SceneGraph(scene.graph)
|
||||||
|
# Get a list of all the mesh nodes, as well as all the nodes
|
||||||
|
mesh_name_list, all_node_paths = get_mesh_node_names(graph)
|
||||||
|
scene_manifest = sceneData.SceneManifest()
|
||||||
|
|
||||||
|
clean_filename = scene.sourceFilename.replace('.', '_')
|
||||||
|
|
||||||
|
# Compute the filename of the scene file
|
||||||
|
source_basepath = scene.watchFolder
|
||||||
|
source_relative_path = os.path.dirname(os.path.relpath(clean_filename, source_basepath))
|
||||||
|
source_filename_only = os.path.basename(clean_filename)
|
||||||
|
|
||||||
|
created_entities = []
|
||||||
|
previous_entity_id = azlmbr.entity.InvalidEntityId
|
||||||
|
|
||||||
|
# Loop every mesh node in the scene
|
||||||
|
for activeMeshIndex in range(len(mesh_name_list)):
|
||||||
|
mesh_name = mesh_name_list[activeMeshIndex]
|
||||||
|
mesh_path = mesh_name.get_path()
|
||||||
|
# Create a unique mesh group name using the filename + node name
|
||||||
|
mesh_group_name = '{}_{}'.format(source_filename_only, mesh_name.get_name())
|
||||||
|
# Remove forbidden filename characters from the name since this will become a file on disk later
|
||||||
|
mesh_group_name = "".join(char for char in mesh_group_name if char not in "|<>:\"/?*\\")
|
||||||
|
# Add the MeshGroup to the manifest and give it a unique ID
|
||||||
|
mesh_group = scene_manifest.add_mesh_group(mesh_group_name)
|
||||||
|
mesh_group['id'] = '{' + str(uuid.uuid5(uuid.NAMESPACE_DNS, source_filename_only + mesh_path)) + '}'
|
||||||
|
# Set our current node as the only node that is included in this MeshGroup
|
||||||
|
scene_manifest.mesh_group_select_node(mesh_group, mesh_path)
|
||||||
|
|
||||||
|
# Explicitly remove all other nodes to prevent implicit inclusions
|
||||||
|
for node in all_node_paths:
|
||||||
|
if node != mesh_path:
|
||||||
|
scene_manifest.mesh_group_unselect_node(mesh_group, node)
|
||||||
|
|
||||||
|
# Create an editor entity
|
||||||
|
entity_id = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "CreateEditorReadyEntity", mesh_group_name)
|
||||||
|
# Add an EditorMeshComponent to the entity
|
||||||
|
editor_mesh_component = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "GetOrAddComponentByTypeName", entity_id, "AZ::Render::EditorMeshComponent")
|
||||||
|
# Set the ModelAsset assetHint to the relative path of the input asset + the name of the MeshGroup we just created + the azmodel extension
|
||||||
|
# The MeshGroup we created will be output as a product in the asset's path named mesh_group_name.azmodel
|
||||||
|
# The assetHint will be converted to an AssetId later during prefab loading
|
||||||
|
json_update = json.dumps({
|
||||||
|
"Controller": { "Configuration": { "ModelAsset": {
|
||||||
|
"assetHint": os.path.join(source_relative_path, mesh_group_name) + ".azmodel" }}}
|
||||||
|
});
|
||||||
|
# Apply the JSON above to the component we created
|
||||||
|
result = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "UpdateComponentForEntity", entity_id, editor_mesh_component, json_update)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise RuntimeError("UpdateComponentForEntity failed for Mesh component")
|
||||||
|
|
||||||
|
# Get the transform component
|
||||||
|
transform_component = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "GetOrAddComponentByTypeName", entity_id, "27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0")
|
||||||
|
|
||||||
|
# Set this entity to be a child of the last entity we created
|
||||||
|
# This is just an example of how to do parenting and isn't necessarily useful to parent everything like this
|
||||||
|
if previous_entity_id is not None:
|
||||||
|
transform_json = json.dumps({
|
||||||
|
"Parent Entity" : previous_entity_id.to_json()
|
||||||
|
});
|
||||||
|
|
||||||
|
# Apply the JSON update
|
||||||
|
result = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "UpdateComponentForEntity", entity_id, transform_component, transform_json)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise RuntimeError("UpdateComponentForEntity failed for Transform component")
|
||||||
|
|
||||||
|
# Update the last entity id for next time
|
||||||
|
previous_entity_id = entity_id
|
||||||
|
|
||||||
|
# Keep track of the entity we set up, we'll add them all to the prefab we're creating later
|
||||||
|
created_entities.append(entity_id)
|
||||||
|
|
||||||
|
# Create a prefab with all our entities
|
||||||
|
prefab_filename = source_filename_only + ".prefab"
|
||||||
|
created_template_id = azlmbr.prefab.PrefabSystemScriptingBus(azlmbr.bus.Broadcast, "CreatePrefab", created_entities, prefab_filename)
|
||||||
|
|
||||||
|
if created_template_id == azlmbr.prefab.InvalidTemplateId:
|
||||||
|
raise RuntimeError("CreatePrefab {} failed".format(prefab_filename))
|
||||||
|
|
||||||
|
# Convert the prefab to a JSON string
|
||||||
|
output = azlmbr.prefab.PrefabLoaderScriptingBus(azlmbr.bus.Broadcast, "SaveTemplateToString", created_template_id)
|
||||||
|
|
||||||
|
if output.IsSuccess():
|
||||||
|
jsonString = output.GetValue()
|
||||||
|
uuid = azlmbr.math.Uuid_CreateRandom().ToString()
|
||||||
|
jsonResult = json.loads(jsonString)
|
||||||
|
# Add a PrefabGroup to the manifest and store the JSON on it
|
||||||
|
scene_manifest.add_prefab_group(source_filename_only, uuid, jsonResult)
|
||||||
|
else:
|
||||||
|
raise RuntimeError("SaveTemplateToString failed for template id {}, prefab {}".format(created_template_id, prefab_filename))
|
||||||
|
|
||||||
|
# Convert the manifest to a JSON string and return it
|
||||||
|
new_manifest = scene_manifest.export()
|
||||||
|
|
||||||
|
return new_manifest
|
||||||
|
|
||||||
|
sceneJobHandler = None
|
||||||
|
|
||||||
|
def on_update_manifest(args):
|
||||||
|
try:
|
||||||
|
scene = args[0]
|
||||||
|
return update_manifest(scene)
|
||||||
|
except RuntimeError as err:
|
||||||
|
print (f'ERROR - {err}')
|
||||||
|
log_exception_traceback()
|
||||||
|
except:
|
||||||
|
log_exception_traceback()
|
||||||
|
|
||||||
|
global sceneJobHandler
|
||||||
|
sceneJobHandler = None
|
||||||
|
|
||||||
|
# try to create SceneAPI handler for processing
|
||||||
|
try:
|
||||||
|
import azlmbr.scene as sceneApi
|
||||||
|
if (sceneJobHandler == None):
|
||||||
|
sceneJobHandler = sceneApi.ScriptBuildingNotificationBusHandler()
|
||||||
|
sceneJobHandler.connect()
|
||||||
|
sceneJobHandler.add_callback('OnUpdateManifest', on_update_manifest)
|
||||||
|
except:
|
||||||
|
sceneJobHandler = None
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
import ly_test_tools.environment.file_system as file_system
|
||||||
|
from ly_test_tools.o3de.editor_test import EditorSharedTest, EditorTestSuite
|
||||||
|
from ly_test_tools.image.screenshot_compare_qssim import qssim as compare_screenshots
|
||||||
|
from .atom_utils.atom_component_helper import create_screenshots_archive, golden_images_directory
|
||||||
|
|
||||||
|
DEFAULT_SUBFOLDER_PATH = 'user/PythonTests/Automated/Screenshots'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.xfail(reason="Optimized tests are experimental, we will enable xfail and monitor them temporarily.")
|
||||||
|
@pytest.mark.parametrize("project", ["AutomatedTesting"])
|
||||||
|
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||||
|
class TestAutomation(EditorTestSuite):
|
||||||
|
# Remove -autotest_mode from global_extra_cmdline_args since we need rendering for these tests.
|
||||||
|
global_extra_cmdline_args = ["-BatchMode"] # Default is ["-BatchMode", "-autotest_mode"]
|
||||||
|
|
||||||
|
@pytest.mark.test_case_id("C34603773")
|
||||||
|
class AtomGPU_BasicLevelSetup_SetsUpLevel(EditorSharedTest):
|
||||||
|
use_null_renderer = False # Default is True
|
||||||
|
screenshot_name = "AtomBasicLevelSetup.ppm"
|
||||||
|
test_screenshots = [] # Gets set by setup()
|
||||||
|
screenshot_directory = "" # Gets set by setup()
|
||||||
|
|
||||||
|
# Clear existing test screenshots before starting test.
|
||||||
|
def setup(self, workspace):
|
||||||
|
screenshot_directory = os.path.join(workspace.paths.project(), DEFAULT_SUBFOLDER_PATH)
|
||||||
|
test_screenshots = [os.path.join(screenshot_directory, self.screenshot_name)]
|
||||||
|
file_system.delete(test_screenshots, True, True)
|
||||||
|
|
||||||
|
from Atom.tests import hydra_AtomGPU_BasicLevelSetup as test_module
|
||||||
|
|
||||||
|
golden_images = [os.path.join(golden_images_directory(), screenshot_name)]
|
||||||
|
for test_screenshot, golden_screenshot in zip(test_screenshots, golden_images):
|
||||||
|
compare_screenshots(test_screenshot, golden_screenshot)
|
||||||
|
create_screenshots_archive(screenshot_directory)
|
||||||
@ -0,0 +1,205 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
material_creation = (
|
||||||
|
"Material Entity successfully created",
|
||||||
|
"Material Entity failed to be created")
|
||||||
|
material_component = (
|
||||||
|
"Entity has a Material component",
|
||||||
|
"Entity failed to find Material component")
|
||||||
|
material_disabled = (
|
||||||
|
"Material component disabled",
|
||||||
|
"Material component was not disabled.")
|
||||||
|
actor_component = (
|
||||||
|
"Entity has an Actor component",
|
||||||
|
"Entity did not have an Actor component")
|
||||||
|
actor_undo = (
|
||||||
|
"Entity Actor component gone",
|
||||||
|
"Entity Actor component add failed to undo")
|
||||||
|
mesh_component = (
|
||||||
|
"Entity has a Mesh component",
|
||||||
|
"Entity did not have a Mesh component")
|
||||||
|
material_enabled = (
|
||||||
|
"Material component enabled",
|
||||||
|
"Material component was not enabled.")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_Material_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the Material component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a Material entity with no components.
|
||||||
|
2) Add a Material component to Material entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Verify Material component not enabled.
|
||||||
|
6) Add Actor component since it is required by the Material component.
|
||||||
|
7) Verify Material component is enabled.
|
||||||
|
8) UNDO add Actor component
|
||||||
|
9) Verify Material component not enabled.
|
||||||
|
10) Add Mesh component since it is required by the Material component.
|
||||||
|
11) Verify Material component is enabled.
|
||||||
|
12) Enter/Exit game mode.
|
||||||
|
13) Test IsHidden.
|
||||||
|
14) Test IsVisible.
|
||||||
|
15) Delete Material entity.
|
||||||
|
16) UNDO deletion.
|
||||||
|
17) REDO deletion.
|
||||||
|
18) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
TestHelper.init_idle()
|
||||||
|
TestHelper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a Material entity with no components.
|
||||||
|
material_name = "Material"
|
||||||
|
material_entity = EditorEntity.create_editor_entity(material_name)
|
||||||
|
Report.critical_result(Tests.material_creation, material_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a Material component to Material entity.
|
||||||
|
material_component = material_entity.add_component(material_name)
|
||||||
|
Report.critical_result(
|
||||||
|
Tests.material_component,
|
||||||
|
material_entity.has_component(material_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not material_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, material_entity.exists())
|
||||||
|
|
||||||
|
# 5. Verify Material component not enabled.
|
||||||
|
Report.result(Tests.material_disabled, not material_component.is_enabled())
|
||||||
|
|
||||||
|
# 6. Add Actor component since it is required by the Material component.
|
||||||
|
actor_name = "Actor"
|
||||||
|
material_entity.add_component(actor_name)
|
||||||
|
Report.result(Tests.actor_component, material_entity.has_component(actor_name))
|
||||||
|
|
||||||
|
# 7. Verify Material component is enabled.
|
||||||
|
Report.result(Tests.material_enabled, material_component.is_enabled())
|
||||||
|
|
||||||
|
# 8. UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.actor_undo, not material_entity.has_component(actor_name))
|
||||||
|
|
||||||
|
# 9. Verify Material component not enabled.
|
||||||
|
Report.result(Tests.material_disabled, not material_component.is_enabled())
|
||||||
|
|
||||||
|
# 10. Add Mesh component since it is required by the Material component.
|
||||||
|
mesh_name = "Mesh"
|
||||||
|
material_entity.add_component(mesh_name)
|
||||||
|
Report.result(Tests.mesh_component, material_entity.has_component(mesh_name))
|
||||||
|
|
||||||
|
# 11. Verify Material component is enabled.
|
||||||
|
Report.result(Tests.material_enabled, material_component.is_enabled())
|
||||||
|
|
||||||
|
# 12. Enter/Exit game mode.
|
||||||
|
TestHelper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
TestHelper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 13. Test IsHidden.
|
||||||
|
material_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, material_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 14. Test IsVisible.
|
||||||
|
material_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, material_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 15. Delete Material entity.
|
||||||
|
material_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not material_entity.exists())
|
||||||
|
|
||||||
|
# 16. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, material_entity.exists())
|
||||||
|
|
||||||
|
# 17. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not material_entity.exists())
|
||||||
|
|
||||||
|
# 18. Look for errors or asserts.
|
||||||
|
TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_Material_AddedToEntity)
|
||||||
@ -0,0 +1,171 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
mesh_entity_creation = (
|
||||||
|
"Mesh Entity successfully created",
|
||||||
|
"Mesh Entity failed to be created")
|
||||||
|
mesh_component_added = (
|
||||||
|
"Entity has a Mesh component",
|
||||||
|
"Entity failed to find Mesh component")
|
||||||
|
mesh_asset_specified = (
|
||||||
|
"Mesh asset set",
|
||||||
|
"Mesh asset not set")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_Mesh_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the Mesh component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a Mesh entity with no components.
|
||||||
|
2) Add a Mesh component to Mesh entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Specify the Mesh component asset
|
||||||
|
6) Enter/Exit game mode.
|
||||||
|
7) Test IsHidden.
|
||||||
|
8) Test IsVisible.
|
||||||
|
9) Delete Mesh entity.
|
||||||
|
10) UNDO deletion.
|
||||||
|
11) REDO deletion.
|
||||||
|
12) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
|
||||||
|
from editor_python_test_tools.asset_utils import Asset
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper as helper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
helper.init_idle()
|
||||||
|
helper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a Mesh entity with no components.
|
||||||
|
mesh_name = "Mesh"
|
||||||
|
mesh_entity = EditorEntity.create_editor_entity(mesh_name)
|
||||||
|
Report.critical_result(Tests.mesh_entity_creation, mesh_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a Mesh component to Mesh entity.
|
||||||
|
mesh_component = mesh_entity.add_component(mesh_name)
|
||||||
|
Report.critical_result(
|
||||||
|
Tests.mesh_component_added,
|
||||||
|
mesh_entity.has_component(mesh_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not mesh_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, mesh_entity.exists())
|
||||||
|
|
||||||
|
# 5. Set Mesh component asset property
|
||||||
|
mesh_property_asset = 'Controller|Configuration|Mesh Asset'
|
||||||
|
model_path = os.path.join('Objects', 'shaderball', 'shaderball_default_1m.azmodel')
|
||||||
|
model = Asset.find_asset_by_path(model_path)
|
||||||
|
mesh_component.set_component_property_value(mesh_property_asset, model.id)
|
||||||
|
Report.result(Tests.mesh_asset_specified,
|
||||||
|
mesh_component.get_component_property_value(mesh_property_asset) == model.id)
|
||||||
|
|
||||||
|
# 6. Enter/Exit game mode.
|
||||||
|
helper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
helper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 7. Test IsHidden.
|
||||||
|
mesh_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, mesh_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 8. Test IsVisible.
|
||||||
|
mesh_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, mesh_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 9. Delete Mesh entity.
|
||||||
|
mesh_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not mesh_entity.exists())
|
||||||
|
|
||||||
|
# 10. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, mesh_entity.exists())
|
||||||
|
|
||||||
|
# 11. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not mesh_entity.exists())
|
||||||
|
|
||||||
|
# 12. Look for errors or asserts.
|
||||||
|
helper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_Mesh_AddedToEntity)
|
||||||
@ -0,0 +1,179 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
postfx_gradient_weight_creation = (
|
||||||
|
"PostFX Gradient Weight Modifier Entity successfully created",
|
||||||
|
"PostFX Gradient Weight Modifier Entity failed to be created")
|
||||||
|
postfx_gradient_weight_component = (
|
||||||
|
"Entity has a PostFX Gradient Weight Modifier component",
|
||||||
|
"Entity failed to find PostFX Gradient Weight Modifier component")
|
||||||
|
postfx_gradient_weight_disabled = (
|
||||||
|
"PostFX Gradient Weight Modifier component disabled",
|
||||||
|
"PostFX Gradient Weight Modifier component was not disabled.")
|
||||||
|
postfx_layer_component = (
|
||||||
|
"Entity has a PostFX Layer component",
|
||||||
|
"Entity did not have an PostFX Layer component")
|
||||||
|
postfx_gradient_weight_enabled = (
|
||||||
|
"PostFX Gradient Weight Modifier component enabled",
|
||||||
|
"PostFX Gradient Weight Modifier component was not enabled.")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_PostFXGradientWeightModifier_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the PostFX Gradient Weight Modifier component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a PostFX Gradient Weight Modifier entity with no components.
|
||||||
|
2) Add a PostFX Gradient Weight Modifier component to PostFX Gradient Weight Modifier entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Verify PostFX Gradient Weight Modifier component not enabled.
|
||||||
|
6) Add PostFX Layer component since it is required by the PostFX Gradient Weight Modifier component.
|
||||||
|
7) Verify PostFX Gradient Weight Modifier component is enabled.
|
||||||
|
8) Enter/Exit game mode.
|
||||||
|
9) Test IsHidden.
|
||||||
|
10) Test IsVisible.
|
||||||
|
11) Delete PostFX Gradient Weight Modifier entity.
|
||||||
|
12) UNDO deletion.
|
||||||
|
13) REDO deletion.
|
||||||
|
14) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
TestHelper.init_idle()
|
||||||
|
TestHelper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a PostFX Gradient Weight Modifier entity with no components.
|
||||||
|
postfx_gradient_weight_name = "PostFX Gradient Weight Modifier"
|
||||||
|
postfx_gradient_weight_entity = EditorEntity.create_editor_entity(postfx_gradient_weight_name)
|
||||||
|
Report.critical_result(Tests.postfx_gradient_weight_creation, postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a PostFX Gradient Weight Modifier component to PostFX Gradient Weight Modifier entity.
|
||||||
|
postfx_gradient_weight_component = postfx_gradient_weight_entity.add_component(postfx_gradient_weight_name)
|
||||||
|
Report.critical_result(
|
||||||
|
Tests.postfx_gradient_weight_component,
|
||||||
|
postfx_gradient_weight_entity.has_component(postfx_gradient_weight_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 5. Verify PostFX Gradient Weight Modifier component not enabled.
|
||||||
|
Report.result(Tests.postfx_gradient_weight_disabled, not postfx_gradient_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 6. Add PostFX Layer component since it is required by the PostFX Gradient Weight Modifier component.
|
||||||
|
postfx_layer_name = "PostFX Layer"
|
||||||
|
postfx_gradient_weight_entity.add_component(postfx_layer_name)
|
||||||
|
Report.result(Tests.postfx_layer_component, postfx_gradient_weight_entity.has_component(postfx_layer_name))
|
||||||
|
|
||||||
|
# 7. Verify PostFX Gradient Weight Modifier component is enabled.
|
||||||
|
Report.result(Tests.postfx_gradient_weight_enabled, postfx_gradient_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 8. Enter/Exit game mode.
|
||||||
|
TestHelper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
TestHelper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 9. Test IsHidden.
|
||||||
|
postfx_gradient_weight_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, postfx_gradient_weight_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 10. Test IsVisible.
|
||||||
|
postfx_gradient_weight_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, postfx_gradient_weight_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 11. Delete PostFX Gradient Weight Modifier entity.
|
||||||
|
postfx_gradient_weight_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 12. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 13. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not postfx_gradient_weight_entity.exists())
|
||||||
|
|
||||||
|
# 14. Look for errors or asserts.
|
||||||
|
TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_PostFXGradientWeightModifier_AddedToEntity)
|
||||||
@ -0,0 +1,156 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
postfx_layer_entity_creation = (
|
||||||
|
"PostFX Layer Entity successfully created",
|
||||||
|
"PostFX Layer Entity failed to be created")
|
||||||
|
postfx_layer_component_added = (
|
||||||
|
"Entity has a PostFX Layer component",
|
||||||
|
"Entity failed to find PostFX Layer component")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_postfx_layer_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the PostFX Layer component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a PostFX Layer entity with no components.
|
||||||
|
2) Add a PostFX Layer component to PostFX Layer entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Enter/Exit game mode.
|
||||||
|
6) Test IsHidden.
|
||||||
|
7) Test IsVisible.
|
||||||
|
8) Delete PostFX Layer entity.
|
||||||
|
9) UNDO deletion.
|
||||||
|
10) REDO deletion.
|
||||||
|
11) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
TestHelper.init_idle()
|
||||||
|
TestHelper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a PostFX Layer entity with no components.
|
||||||
|
postfx_layer_name = "PostFX Layer"
|
||||||
|
postfx_layer_entity = EditorEntity.create_editor_entity(postfx_layer_name)
|
||||||
|
Report.critical_result(Tests.postfx_layer_entity_creation, postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a PostFX Layer component to PostFX Layer entity.
|
||||||
|
postfx_layer_component = postfx_layer_entity.add_component(postfx_layer_name)
|
||||||
|
Report.critical_result(Tests.postfx_layer_component_added, postfx_layer_entity.has_component(postfx_layer_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 5. Enter/Exit game mode.
|
||||||
|
TestHelper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
TestHelper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 6. Test IsHidden.
|
||||||
|
postfx_layer_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, postfx_layer_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 7. Test IsVisible.
|
||||||
|
postfx_layer_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, postfx_layer_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 8. Delete PostFX Layer entity.
|
||||||
|
postfx_layer_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 9. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 10. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not postfx_layer_entity.exists())
|
||||||
|
|
||||||
|
# 11. Look for errors or asserts.
|
||||||
|
TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_postfx_layer_AddedToEntity)
|
||||||
@ -0,0 +1,207 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
postfx_shape_weight_creation = (
|
||||||
|
"PostFx Shape Weight Modifier Entity successfully created",
|
||||||
|
"PostFx Shape Weight Modifier Entity failed to be created")
|
||||||
|
postfx_shape_weight_component = (
|
||||||
|
"Entity has a PostFx Shape Weight Modifier component",
|
||||||
|
"Entity failed to find PostFx Shape Weight Modifier component")
|
||||||
|
postfx_shape_weight_disabled = (
|
||||||
|
"PostFx Shape Weight Modifier component disabled",
|
||||||
|
"PostFx Shape Weight Modifier component was not disabled.")
|
||||||
|
postfx_layer_component = (
|
||||||
|
"Entity has a PostFX Layer component",
|
||||||
|
"Entity did not have an PostFX Layer component")
|
||||||
|
tube_shape_component = (
|
||||||
|
"Entity has a Tube Shape component",
|
||||||
|
"Entity did not have a Tube Shape component")
|
||||||
|
postfx_shape_weight_enabled = (
|
||||||
|
"PostFx Shape Weight Modifier component enabled",
|
||||||
|
"PostFx Shape Weight Modifier component was not enabled.")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_postfx_shape_weight_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the PostFx Shape Weight Modifier component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a PostFx Shape Weight Modifier entity with no components.
|
||||||
|
2) Add a PostFx Shape Weight Modifier component to PostFx Shape Weight Modifier entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Verify PostFx Shape Weight Modifier component not enabled.
|
||||||
|
6) Add PostFX Layer component since it is required by the PostFx Shape Weight Modifier component.
|
||||||
|
7) Verify PostFx Shape Weight Modifier component is NOT enabled since it also requires a shape.
|
||||||
|
8) Add a required shape looping over a list and checking if it enables PostFX Shape Weight Modifier.
|
||||||
|
9) Undo to remove each added shape and verify PostFX Shape Weight Modifier is not enabled.
|
||||||
|
10) Verify PostFx Shape Weight Modifier component is enabled by adding Spline and Tube Shape component.
|
||||||
|
11) Enter/Exit game mode.
|
||||||
|
12) Test IsHidden.
|
||||||
|
13) Test IsVisible.
|
||||||
|
14) Delete PostFx Shape Weight Modifier entity.
|
||||||
|
15) UNDO deletion.
|
||||||
|
16) REDO deletion.
|
||||||
|
17) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
TestHelper.init_idle()
|
||||||
|
TestHelper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a PostFx Shape Weight Modifier entity with no components.
|
||||||
|
postfx_shape_weight_name = "PostFX Shape Weight Modifier"
|
||||||
|
postfx_shape_weight_entity = EditorEntity.create_editor_entity(postfx_shape_weight_name)
|
||||||
|
Report.critical_result(Tests.postfx_shape_weight_creation, postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a PostFx Shape Weight Modifier component to PostFx Shape Weight Modifier entity.
|
||||||
|
postfx_shape_weight_component = postfx_shape_weight_entity.add_component(postfx_shape_weight_name)
|
||||||
|
Report.critical_result(
|
||||||
|
Tests.postfx_shape_weight_component,
|
||||||
|
postfx_shape_weight_entity.has_component(postfx_shape_weight_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 5. Verify PostFx Shape Weight Modifier component not enabled.
|
||||||
|
Report.result(Tests.postfx_shape_weight_disabled, not postfx_shape_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 6. Add PostFX Layer component since it is required by the PostFx Shape Weight Modifier component.
|
||||||
|
postfx_layer_name = "PostFX Layer"
|
||||||
|
postfx_shape_weight_entity.add_component(postfx_layer_name)
|
||||||
|
Report.result(Tests.postfx_layer_component, postfx_shape_weight_entity.has_component(postfx_layer_name))
|
||||||
|
|
||||||
|
# 7. Verify PostFx Shape Weight Modifier component is NOT enabled since it also requires a shape.
|
||||||
|
Report.result(Tests.postfx_shape_weight_disabled, not postfx_shape_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 8. Add a required shape looping over a list and checking if it enables PostFX Shape Weight Modifier.
|
||||||
|
for shape in ['Axis Aligned Box Shape', 'Box Shape', 'Capsule Shape', 'Compound Shape', 'Cylinder Shape',
|
||||||
|
'Disk Shape', 'Polygon Prism Shape', 'Quad Shape', 'Sphere Shape', 'Vegetation Reference Shape']:
|
||||||
|
postfx_shape_weight_entity.add_component(shape)
|
||||||
|
test_shape = (
|
||||||
|
f"Entity has a {shape} component",
|
||||||
|
f"Entity did not have a {shape} component")
|
||||||
|
Report.result(test_shape, postfx_shape_weight_entity.has_component(shape))
|
||||||
|
|
||||||
|
# Check if required shape allows PostFX Shape Weight Modifier to be enabled
|
||||||
|
Report.result(Tests.postfx_shape_weight_enabled, postfx_shape_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 9. Undo to remove each added shape and verify PostFX Shape Weight Modifier is not enabled.
|
||||||
|
general.undo()
|
||||||
|
TestHelper.wait_for_condition(lambda: not postfx_shape_weight_entity.has_component(shape), 1.0)
|
||||||
|
Report.result(Tests.postfx_shape_weight_disabled, not postfx_shape_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 10. Verify PostFx Shape Weight Modifier component is enabled by adding Spline and Tube Shape component.
|
||||||
|
postfx_shape_weight_entity.add_components(['Spline', 'Tube Shape'])
|
||||||
|
Report.result(Tests.tube_shape_component, postfx_shape_weight_entity.has_component('Tube Shape'))
|
||||||
|
Report.result(Tests.postfx_shape_weight_enabled, postfx_shape_weight_component.is_enabled())
|
||||||
|
|
||||||
|
# 11. Enter/Exit game mode.
|
||||||
|
TestHelper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
TestHelper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 12. Test IsHidden.
|
||||||
|
postfx_shape_weight_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, postfx_shape_weight_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 13. Test IsVisible.
|
||||||
|
postfx_shape_weight_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, postfx_shape_weight_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 14. Delete PostFx Shape Weight Modifier entity.
|
||||||
|
postfx_shape_weight_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 15. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 16. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not postfx_shape_weight_entity.exists())
|
||||||
|
|
||||||
|
# 17. Look for errors or asserts.
|
||||||
|
TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_postfx_shape_weight_AddedToEntity)
|
||||||
@ -0,0 +1,194 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Tests:
|
||||||
|
creation_undo = (
|
||||||
|
"UNDO Entity creation success",
|
||||||
|
"UNDO Entity creation failed")
|
||||||
|
creation_redo = (
|
||||||
|
"REDO Entity creation success",
|
||||||
|
"REDO Entity creation failed")
|
||||||
|
reflection_probe_creation = (
|
||||||
|
"Reflection Probe Entity successfully created",
|
||||||
|
"Reflection Probe Entity failed to be created")
|
||||||
|
reflection_probe_component = (
|
||||||
|
"Entity has a Reflection Probe component",
|
||||||
|
"Entity failed to find Reflection Probe component")
|
||||||
|
reflection_probe_disabled = (
|
||||||
|
"Reflection Probe component disabled",
|
||||||
|
"Reflection Probe component was not disabled.")
|
||||||
|
reflection_map_generated = (
|
||||||
|
"Reflection Probe cubemap generated",
|
||||||
|
"Reflection Probe cubemap not generated")
|
||||||
|
box_shape_component = (
|
||||||
|
"Entity has a Box Shape component",
|
||||||
|
"Entity did not have a Box Shape component")
|
||||||
|
reflection_probe_enabled = (
|
||||||
|
"Reflection Probe component enabled",
|
||||||
|
"Reflection Probe component was not enabled.")
|
||||||
|
enter_game_mode = (
|
||||||
|
"Entered game mode",
|
||||||
|
"Failed to enter game mode")
|
||||||
|
exit_game_mode = (
|
||||||
|
"Exited game mode",
|
||||||
|
"Couldn't exit game mode")
|
||||||
|
is_visible = (
|
||||||
|
"Entity is visible",
|
||||||
|
"Entity was not visible")
|
||||||
|
is_hidden = (
|
||||||
|
"Entity is hidden",
|
||||||
|
"Entity was not hidden")
|
||||||
|
entity_deleted = (
|
||||||
|
"Entity deleted",
|
||||||
|
"Entity was not deleted")
|
||||||
|
deletion_undo = (
|
||||||
|
"UNDO deletion success",
|
||||||
|
"UNDO deletion failed")
|
||||||
|
deletion_redo = (
|
||||||
|
"REDO deletion success",
|
||||||
|
"REDO deletion failed")
|
||||||
|
|
||||||
|
|
||||||
|
def AtomEditorComponents_ReflectionProbe_AddedToEntity():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Tests the Reflection Probe component can be added to an entity and has the expected functionality.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
|
||||||
|
Creation and deletion undo/redo should also work.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1) Create a Reflection Probe entity with no components.
|
||||||
|
2) Add a Reflection Probe component to Reflection Probe entity.
|
||||||
|
3) UNDO the entity creation and component addition.
|
||||||
|
4) REDO the entity creation and component addition.
|
||||||
|
5) Verify Reflection Probe component not enabled.
|
||||||
|
6) Add Shape component since it is required by the Reflection Probe component.
|
||||||
|
7) Verify Reflection Probe component is enabled.
|
||||||
|
8) Enter/Exit game mode.
|
||||||
|
9) Test IsHidden.
|
||||||
|
10) Test IsVisible.
|
||||||
|
11) Verify cubemap generation
|
||||||
|
12) Delete Reflection Probe entity.
|
||||||
|
13) UNDO deletion.
|
||||||
|
14) REDO deletion.
|
||||||
|
15) Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
import azlmbr.math as math
|
||||||
|
import azlmbr.render as render
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper as helper
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
helper.init_idle()
|
||||||
|
helper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Create a Reflection Probe entity with no components.
|
||||||
|
reflection_probe_name = "Reflection Probe"
|
||||||
|
reflection_probe_entity = EditorEntity.create_editor_entity_at(
|
||||||
|
math.Vector3(512.0, 512.0, 34.0), reflection_probe_name)
|
||||||
|
Report.critical_result(Tests.reflection_probe_creation, reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 2. Add a Reflection Probe component to Reflection Probe entity.
|
||||||
|
reflection_probe_component = reflection_probe_entity.add_component(reflection_probe_name)
|
||||||
|
Report.critical_result(
|
||||||
|
Tests.reflection_probe_component,
|
||||||
|
reflection_probe_entity.has_component(reflection_probe_name))
|
||||||
|
|
||||||
|
# 3. UNDO the entity creation and component addition.
|
||||||
|
# -> UNDO component addition.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO naming entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO selecting entity.
|
||||||
|
general.undo()
|
||||||
|
# -> UNDO entity creation.
|
||||||
|
general.undo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_undo, not reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 4. REDO the entity creation and component addition.
|
||||||
|
# -> REDO entity creation.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO selecting entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO naming entity.
|
||||||
|
general.redo()
|
||||||
|
# -> REDO component addition.
|
||||||
|
general.redo()
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.creation_redo, reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 5. Verify Reflection Probe component not enabled.
|
||||||
|
Report.result(Tests.reflection_probe_disabled, not reflection_probe_component.is_enabled())
|
||||||
|
|
||||||
|
# 6. Add Box Shape component since it is required by the Reflection Probe component.
|
||||||
|
box_shape = "Box Shape"
|
||||||
|
reflection_probe_entity.add_component(box_shape)
|
||||||
|
Report.result(Tests.box_shape_component, reflection_probe_entity.has_component(box_shape))
|
||||||
|
|
||||||
|
# 7. Verify Reflection Probe component is enabled.
|
||||||
|
Report.result(Tests.reflection_probe_enabled, reflection_probe_component.is_enabled())
|
||||||
|
|
||||||
|
# 8. Enter/Exit game mode.
|
||||||
|
helper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
helper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
|
||||||
|
# 9. Test IsHidden.
|
||||||
|
reflection_probe_entity.set_visibility_state(False)
|
||||||
|
Report.result(Tests.is_hidden, reflection_probe_entity.is_hidden() is True)
|
||||||
|
|
||||||
|
# 10. Test IsVisible.
|
||||||
|
reflection_probe_entity.set_visibility_state(True)
|
||||||
|
general.idle_wait_frames(1)
|
||||||
|
Report.result(Tests.is_visible, reflection_probe_entity.is_visible() is True)
|
||||||
|
|
||||||
|
# 11. Verify cubemap generation
|
||||||
|
render.EditorReflectionProbeBus(azlmbr.bus.Event, "BakeReflectionProbe", reflection_probe_entity.id)
|
||||||
|
Report.result(
|
||||||
|
Tests.reflection_map_generated,
|
||||||
|
helper.wait_for_condition(
|
||||||
|
lambda: reflection_probe_component.get_component_property_value("Cubemap|Baked Cubemap Path") != "",
|
||||||
|
20.0))
|
||||||
|
|
||||||
|
# 12. Delete Reflection Probe entity.
|
||||||
|
reflection_probe_entity.delete()
|
||||||
|
Report.result(Tests.entity_deleted, not reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 13. UNDO deletion.
|
||||||
|
general.undo()
|
||||||
|
Report.result(Tests.deletion_undo, reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 14. REDO deletion.
|
||||||
|
general.redo()
|
||||||
|
Report.result(Tests.deletion_redo, not reflection_probe_entity.exists())
|
||||||
|
|
||||||
|
# 15. Look for errors or asserts.
|
||||||
|
helper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
for error_info in error_tracer.errors:
|
||||||
|
Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
|
||||||
|
for assert_info in error_tracer.asserts:
|
||||||
|
Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomEditorComponents_ReflectionProbe_AddedToEntity)
|
||||||
@ -0,0 +1,292 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# fmt: off
|
||||||
|
class Tests :
|
||||||
|
camera_component_added = ("Camera component was added", "Camera component wasn't added")
|
||||||
|
camera_fov_set = ("Camera component FOV property set", "Camera component FOV property wasn't set")
|
||||||
|
directional_light_component_added = ("Directional Light component added", "Directional Light component wasn't added")
|
||||||
|
enter_game_mode = ("Entered game mode", "Failed to enter game mode")
|
||||||
|
exit_game_mode = ("Exited game mode", "Couldn't exit game mode")
|
||||||
|
global_skylight_component_added = ("Global Skylight (IBL) component added", "Global Skylight (IBL) component wasn't added")
|
||||||
|
global_skylight_diffuse_image_set = ("Global Skylight Diffuse Image property set", "Global Skylight Diffuse Image property wasn't set")
|
||||||
|
global_skylight_specular_image_set = ("Global Skylight Specular Image property set", "Global Skylight Specular Image property wasn't set")
|
||||||
|
ground_plane_material_asset_set = ("Ground Plane Material Asset was set", "Ground Plane Material Asset wasn't set")
|
||||||
|
ground_plane_material_component_added = ("Ground Plane Material component added", "Ground Plane Material component wasn't added")
|
||||||
|
ground_plane_mesh_asset_set = ("Ground Plane Mesh Asset property was set", "Ground Plane Mesh Asset property wasn't set")
|
||||||
|
hdri_skybox_component_added = ("HDRi Skybox component added", "HDRi Skybox component wasn't added")
|
||||||
|
hdri_skybox_cubemap_texture_set = ("HDRi Skybox Cubemap Texture property set", "HDRi Skybox Cubemap Texture property wasn't set")
|
||||||
|
mesh_component_added = ("Mesh component added", "Mesh component wasn't added")
|
||||||
|
no_assert_occurred = ("No asserts detected", "Asserts were detected")
|
||||||
|
no_error_occurred = ("No errors detected", "Errors were detected")
|
||||||
|
secondary_grid_spacing = ("Secondary Grid Spacing set", "Secondary Grid Spacing not set")
|
||||||
|
sphere_material_component_added = ("Sphere Material component added", "Sphere Material component wasn't added")
|
||||||
|
sphere_material_set = ("Sphere Material Asset was set", "Sphere Material Asset wasn't set")
|
||||||
|
sphere_mesh_asset_set = ("Sphere Mesh Asset was set", "Sphere Mesh Asset wasn't set")
|
||||||
|
viewport_set = ("Viewport set to correct size", "Viewport not set to correct size")
|
||||||
|
# fmt: on
|
||||||
|
|
||||||
|
|
||||||
|
def AtomGPU_BasicLevelSetup_SetsUpLevel():
|
||||||
|
"""
|
||||||
|
Summary:
|
||||||
|
Sets up a level to match the AtomBasicLevelSetup.ppm golden image then takes a screenshot to verify the setup.
|
||||||
|
|
||||||
|
Test setup:
|
||||||
|
- Wait for Editor idle loop.
|
||||||
|
- Open the "Base" level.
|
||||||
|
|
||||||
|
Expected Behavior:
|
||||||
|
The scene can be setup for a basic level.
|
||||||
|
The test screenshot matches the appearance of the AtomBasicLevelSetup.ppm golden image.
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
1. Close error windows and display helpers then update the viewport size.
|
||||||
|
2. Create Default Level Entity.
|
||||||
|
3. Create Grid Entity as a child entity of the Default Level Entity.
|
||||||
|
4. Add Grid component to Grid Entity and set Secondary Grid Spacing.
|
||||||
|
5. Create Global Skylight (IBL) Entity as a child entity of the Default Level Entity.
|
||||||
|
6. Add HDRi Skybox component to the Global Skylight (IBL) Entity.
|
||||||
|
7. Add Global Skylight (IBL) component to the Global Skylight (IBL) Entity.
|
||||||
|
8. Set the Cubemap Texture property of the HDRi Skybox component.
|
||||||
|
9. Set the Diffuse Image property of the Global Skylight (IBL) component.
|
||||||
|
10. Set the Specular Image property of the Global Skylight (IBL) component.
|
||||||
|
11. Create a Ground Plane Entity with a Material component that is a child entity of the Default Level Entity.
|
||||||
|
12. Set the Material Asset property of the Material component for the Ground Plane Entity.
|
||||||
|
13. Add the Mesh component to the Ground Plane Entity and set the Mesh component Mesh Asset property.
|
||||||
|
14. Create a Directional Light Entity as a child entity of the Default Level Entity.
|
||||||
|
15. Add Directional Light component to Directional Light Entity and set entity rotation.
|
||||||
|
16. Create a Sphere Entity as a child entity of the Default Level Entity then add a Material component.
|
||||||
|
17. Set the Material Asset property of the Material component for the Sphere Entity.
|
||||||
|
18. Add Mesh component to Sphere Entity and set the Mesh Asset property for the Mesh component.
|
||||||
|
19. Create a Camera Entity as a child entity of the Default Level Entity then add a Camera component.
|
||||||
|
20. Set the Camera Entity rotation value and set the Camera component Field of View value.
|
||||||
|
21. Enter game mode.
|
||||||
|
22. Take screenshot.
|
||||||
|
23. Exit game mode.
|
||||||
|
24. Look for errors.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
from math import isclose
|
||||||
|
|
||||||
|
import azlmbr.asset as asset
|
||||||
|
import azlmbr.bus as bus
|
||||||
|
import azlmbr.legacy.general as general
|
||||||
|
import azlmbr.math as math
|
||||||
|
import azlmbr.paths
|
||||||
|
|
||||||
|
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||||
|
from editor_python_test_tools.utils import Report, Tracer, TestHelper as helper
|
||||||
|
|
||||||
|
from Atom.atom_utils.screenshot_utils import ScreenshotHelper
|
||||||
|
|
||||||
|
MATERIAL_COMPONENT_NAME = "Material"
|
||||||
|
MESH_COMPONENT_NAME = "Mesh"
|
||||||
|
SCREENSHOT_NAME = "AtomBasicLevelSetup"
|
||||||
|
SCREEN_WIDTH = 1280
|
||||||
|
SCREEN_HEIGHT = 720
|
||||||
|
DEGREE_RADIAN_FACTOR = 0.0174533
|
||||||
|
|
||||||
|
def initial_viewport_setup(screen_width, screen_height):
|
||||||
|
general.set_viewport_size(screen_width, screen_height)
|
||||||
|
general.update_viewport()
|
||||||
|
result = isclose(
|
||||||
|
a=general.get_viewport_size().x, b=SCREEN_WIDTH, rel_tol=0.1) and isclose(
|
||||||
|
a=general.get_viewport_size().y, b=SCREEN_HEIGHT, rel_tol=0.1)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
with Tracer() as error_tracer:
|
||||||
|
# Test setup begins.
|
||||||
|
# Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
|
||||||
|
helper.init_idle()
|
||||||
|
helper.open_level("", "Base")
|
||||||
|
|
||||||
|
# Test steps begin.
|
||||||
|
# 1. Close error windows and display helpers then update the viewport size.
|
||||||
|
helper.close_error_windows()
|
||||||
|
helper.close_display_helpers()
|
||||||
|
general.update_viewport()
|
||||||
|
Report.critical_result(Tests.viewport_set, initial_viewport_setup(SCREEN_WIDTH, SCREEN_HEIGHT))
|
||||||
|
|
||||||
|
# 2. Create Default Level Entity.
|
||||||
|
default_level_entity_name = "Default Level"
|
||||||
|
default_level_entity = EditorEntity.create_editor_entity_at(
|
||||||
|
math.Vector3(0.0, 0.0, 0.0), default_level_entity_name)
|
||||||
|
|
||||||
|
# 3. Create Grid Entity as a child entity of the Default Level Entity.
|
||||||
|
grid_name = "Grid"
|
||||||
|
grid_entity = EditorEntity.create_editor_entity(grid_name, default_level_entity.id)
|
||||||
|
|
||||||
|
# 4. Add Grid component to Grid Entity and set Secondary Grid Spacing.
|
||||||
|
grid_component = grid_entity.add_component(grid_name)
|
||||||
|
secondary_grid_spacing_property = "Controller|Configuration|Secondary Grid Spacing"
|
||||||
|
secondary_grid_spacing_value = 1.0
|
||||||
|
grid_component.set_component_property_value(secondary_grid_spacing_property, secondary_grid_spacing_value)
|
||||||
|
secondary_grid_spacing_set = grid_component.get_component_property_value(
|
||||||
|
secondary_grid_spacing_property) == secondary_grid_spacing_value
|
||||||
|
Report.result(Tests.secondary_grid_spacing, secondary_grid_spacing_set)
|
||||||
|
|
||||||
|
# 5. Create Global Skylight (IBL) Entity as a child entity of the Default Level Entity.
|
||||||
|
global_skylight_name = "Global Skylight (IBL)"
|
||||||
|
global_skylight_entity = EditorEntity.create_editor_entity(global_skylight_name, default_level_entity.id)
|
||||||
|
|
||||||
|
# 6. Add HDRi Skybox component to the Global Skylight (IBL) Entity.
|
||||||
|
hdri_skybox_name = "HDRi Skybox"
|
||||||
|
hdri_skybox_component = global_skylight_entity.add_component(hdri_skybox_name)
|
||||||
|
Report.result(Tests.hdri_skybox_component_added, global_skylight_entity.has_component(hdri_skybox_name))
|
||||||
|
|
||||||
|
# 7. Add Global Skylight (IBL) component to the Global Skylight (IBL) Entity.
|
||||||
|
global_skylight_component = global_skylight_entity.add_component(global_skylight_name)
|
||||||
|
Report.result(Tests.global_skylight_component_added, global_skylight_entity.has_component(global_skylight_name))
|
||||||
|
|
||||||
|
# 8. Set the Cubemap Texture property of the HDRi Skybox component.
|
||||||
|
global_skylight_image_asset_path = os.path.join(
|
||||||
|
"LightingPresets", "greenwich_park_02_4k_iblskyboxcm_iblspecular.exr.streamingimage")
|
||||||
|
global_skylight_image_asset = asset.AssetCatalogRequestBus(
|
||||||
|
bus.Broadcast, "GetAssetIdByPath", global_skylight_image_asset_path, math.Uuid(), False)
|
||||||
|
hdri_skybox_cubemap_texture_property = "Controller|Configuration|Cubemap Texture"
|
||||||
|
hdri_skybox_component.set_component_property_value(
|
||||||
|
hdri_skybox_cubemap_texture_property, global_skylight_image_asset)
|
||||||
|
Report.result(
|
||||||
|
Tests.hdri_skybox_cubemap_texture_set,
|
||||||
|
hdri_skybox_component.get_component_property_value(
|
||||||
|
hdri_skybox_cubemap_texture_property) == global_skylight_image_asset)
|
||||||
|
|
||||||
|
# 9. Set the Diffuse Image property of the Global Skylight (IBL) component.
|
||||||
|
# Re-use the same image that was used in the previous test step.
|
||||||
|
global_skylight_diffuse_image_property = "Controller|Configuration|Diffuse Image"
|
||||||
|
global_skylight_component.set_component_property_value(
|
||||||
|
global_skylight_diffuse_image_property, global_skylight_image_asset)
|
||||||
|
Report.result(
|
||||||
|
Tests.global_skylight_diffuse_image_set,
|
||||||
|
global_skylight_component.get_component_property_value(
|
||||||
|
global_skylight_diffuse_image_property) == global_skylight_image_asset)
|
||||||
|
|
||||||
|
# 10. Set the Specular Image property of the Global Skylight (IBL) component.
|
||||||
|
# Re-use the same image that was used in the previous test step.
|
||||||
|
global_skylight_specular_image_property = "Controller|Configuration|Specular Image"
|
||||||
|
global_skylight_component.set_component_property_value(
|
||||||
|
global_skylight_specular_image_property, global_skylight_image_asset)
|
||||||
|
global_skylight_specular_image_set = global_skylight_component.get_component_property_value(
|
||||||
|
global_skylight_specular_image_property)
|
||||||
|
Report.result(
|
||||||
|
Tests.global_skylight_specular_image_set, global_skylight_specular_image_set == global_skylight_image_asset)
|
||||||
|
|
||||||
|
# 11. Create a Ground Plane Entity with a Material component that is a child entity of the Default Level Entity.
|
||||||
|
ground_plane_name = "Ground Plane"
|
||||||
|
ground_plane_entity = EditorEntity.create_editor_entity(ground_plane_name, default_level_entity.id)
|
||||||
|
ground_plane_material_component = ground_plane_entity.add_component(MATERIAL_COMPONENT_NAME)
|
||||||
|
Report.result(
|
||||||
|
Tests.ground_plane_material_component_added, ground_plane_entity.has_component(MATERIAL_COMPONENT_NAME))
|
||||||
|
|
||||||
|
# 12. Set the Material Asset property of the Material component for the Ground Plane Entity.
|
||||||
|
ground_plane_entity.set_local_uniform_scale(32.0)
|
||||||
|
ground_plane_material_asset_path = os.path.join("Materials", "Presets", "PBR", "metal_chrome.azmaterial")
|
||||||
|
ground_plane_material_asset = asset.AssetCatalogRequestBus(
|
||||||
|
bus.Broadcast, "GetAssetIdByPath", ground_plane_material_asset_path, math.Uuid(), False)
|
||||||
|
ground_plane_material_asset_property = "Default Material|Material Asset"
|
||||||
|
ground_plane_material_component.set_component_property_value(
|
||||||
|
ground_plane_material_asset_property, ground_plane_material_asset)
|
||||||
|
Report.result(
|
||||||
|
Tests.ground_plane_material_asset_set,
|
||||||
|
ground_plane_material_component.get_component_property_value(
|
||||||
|
ground_plane_material_asset_property) == ground_plane_material_asset)
|
||||||
|
|
||||||
|
# 13. Add the Mesh component to the Ground Plane Entity and set the Mesh component Mesh Asset property.
|
||||||
|
ground_plane_mesh_component = ground_plane_entity.add_component(MESH_COMPONENT_NAME)
|
||||||
|
Report.result(Tests.mesh_component_added, ground_plane_entity.has_component(MESH_COMPONENT_NAME))
|
||||||
|
ground_plane_mesh_asset_path = os.path.join("Objects", "plane.azmodel")
|
||||||
|
ground_plane_mesh_asset = asset.AssetCatalogRequestBus(
|
||||||
|
bus.Broadcast, "GetAssetIdByPath", ground_plane_mesh_asset_path, math.Uuid(), False)
|
||||||
|
ground_plane_mesh_asset_property = "Controller|Configuration|Mesh Asset"
|
||||||
|
ground_plane_mesh_component.set_component_property_value(
|
||||||
|
ground_plane_mesh_asset_property, ground_plane_mesh_asset)
|
||||||
|
Report.result(
|
||||||
|
Tests.ground_plane_mesh_asset_set,
|
||||||
|
ground_plane_mesh_component.get_component_property_value(
|
||||||
|
ground_plane_mesh_asset_property) == ground_plane_mesh_asset)
|
||||||
|
|
||||||
|
# 14. Create a Directional Light Entity as a child entity of the Default Level Entity.
|
||||||
|
directional_light_name = "Directional Light"
|
||||||
|
directional_light_entity = EditorEntity.create_editor_entity_at(
|
||||||
|
math.Vector3(0.0, 0.0, 10.0), directional_light_name, default_level_entity.id)
|
||||||
|
|
||||||
|
# 15. Add Directional Light component to Directional Light Entity and set entity rotation.
|
||||||
|
directional_light_entity.add_component(directional_light_name)
|
||||||
|
directional_light_entity_rotation = math.Vector3(DEGREE_RADIAN_FACTOR * -90.0, 0.0, 0.0)
|
||||||
|
directional_light_entity.set_local_rotation(directional_light_entity_rotation)
|
||||||
|
Report.result(
|
||||||
|
Tests.directional_light_component_added, directional_light_entity.has_component(directional_light_name))
|
||||||
|
|
||||||
|
# 16. Create a Sphere Entity as a child entity of the Default Level Entity then add a Material component.
|
||||||
|
sphere_entity = EditorEntity.create_editor_entity_at(
|
||||||
|
math.Vector3(0.0, 0.0, 1.0), "Sphere", default_level_entity.id)
|
||||||
|
sphere_material_component = sphere_entity.add_component(MATERIAL_COMPONENT_NAME)
|
||||||
|
Report.result(Tests.sphere_material_component_added, sphere_entity.has_component(MATERIAL_COMPONENT_NAME))
|
||||||
|
|
||||||
|
# 17. Set the Material Asset property of the Material component for the Sphere Entity.
|
||||||
|
sphere_material_asset_path = os.path.join("Materials", "Presets", "PBR", "metal_brass_polished.azmaterial")
|
||||||
|
sphere_material_asset = asset.AssetCatalogRequestBus(
|
||||||
|
bus.Broadcast, "GetAssetIdByPath", sphere_material_asset_path, math.Uuid(), False)
|
||||||
|
sphere_material_asset_property = "Default Material|Material Asset"
|
||||||
|
sphere_material_component.set_component_property_value(sphere_material_asset_property, sphere_material_asset)
|
||||||
|
Report.result(Tests.sphere_material_set, sphere_material_component.get_component_property_value(
|
||||||
|
sphere_material_asset_property) == sphere_material_asset)
|
||||||
|
|
||||||
|
# 18. Add Mesh component to Sphere Entity and set the Mesh Asset property for the Mesh component.
|
||||||
|
sphere_mesh_component = sphere_entity.add_component(MESH_COMPONENT_NAME)
|
||||||
|
sphere_mesh_asset_path = os.path.join("Models", "sphere.azmodel")
|
||||||
|
sphere_mesh_asset = asset.AssetCatalogRequestBus(
|
||||||
|
bus.Broadcast, "GetAssetIdByPath", sphere_mesh_asset_path, math.Uuid(), False)
|
||||||
|
sphere_mesh_asset_property = "Controller|Configuration|Mesh Asset"
|
||||||
|
sphere_mesh_component.set_component_property_value(sphere_mesh_asset_property, sphere_mesh_asset)
|
||||||
|
Report.result(Tests.sphere_mesh_asset_set, sphere_mesh_component.get_component_property_value(
|
||||||
|
sphere_mesh_asset_property) == sphere_mesh_asset)
|
||||||
|
|
||||||
|
# 19. Create a Camera Entity as a child entity of the Default Level Entity then add a Camera component.
|
||||||
|
camera_name = "Camera"
|
||||||
|
camera_entity = EditorEntity.create_editor_entity_at(
|
||||||
|
math.Vector3(5.5, -12.0, 9.0), camera_name, default_level_entity.id)
|
||||||
|
camera_component = camera_entity.add_component(camera_name)
|
||||||
|
Report.result(Tests.camera_component_added, camera_entity.has_component(camera_name))
|
||||||
|
|
||||||
|
# 20. Set the Camera Entity rotation value and set the Camera component Field of View value.
|
||||||
|
camera_entity_rotation = math.Vector3(
|
||||||
|
DEGREE_RADIAN_FACTOR * -27.0, DEGREE_RADIAN_FACTOR * -12.0, DEGREE_RADIAN_FACTOR * 25.0)
|
||||||
|
camera_entity.set_local_rotation(camera_entity_rotation)
|
||||||
|
camera_fov_property = "Controller|Configuration|Field of view"
|
||||||
|
camera_fov_value = 60.0
|
||||||
|
camera_component.set_component_property_value(camera_fov_property, camera_fov_value)
|
||||||
|
azlmbr.camera.EditorCameraViewRequestBus(azlmbr.bus.Event, "ToggleCameraAsActiveView", camera_entity.id)
|
||||||
|
Report.result(Tests.camera_fov_set, camera_component.get_component_property_value(
|
||||||
|
camera_fov_property) == camera_fov_value)
|
||||||
|
|
||||||
|
# 21. Enter game mode.
|
||||||
|
helper.enter_game_mode(Tests.enter_game_mode)
|
||||||
|
helper.wait_for_condition(function=lambda: general.is_in_game_mode(), timeout_in_seconds=4.0)
|
||||||
|
|
||||||
|
# 22. Take screenshot.
|
||||||
|
ScreenshotHelper(general.idle_wait_frames).capture_screenshot_blocking(f"{SCREENSHOT_NAME}.ppm")
|
||||||
|
|
||||||
|
# 23. Exit game mode.
|
||||||
|
helper.exit_game_mode(Tests.exit_game_mode)
|
||||||
|
helper.wait_for_condition(function=lambda: not general.is_in_game_mode(), timeout_in_seconds=4.0)
|
||||||
|
|
||||||
|
# 24. Look for errors.
|
||||||
|
helper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
|
||||||
|
Report.result(Tests.no_assert_occurred, not error_tracer.has_asserts)
|
||||||
|
Report.result(Tests.no_error_occurred, not error_tracer.has_errors)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from editor_python_test_tools.utils import Report
|
||||||
|
Report.start_test(AtomGPU_BasicLevelSetup_SetsUpLevel)
|
||||||
@ -1,2 +1,2 @@
|
|||||||
# this file is copied to $/dev/editor_autoexec.cfg so the the Editor automation runs for this Hydra test
|
# this file is copied to $/dev/editor_autoexec.cfg so the the Editor automation runs for this Hydra test
|
||||||
pyRunFile @devroot@/Tests/hydra/LevelComponentCommands_test_case.py exit_when_done
|
pyRunFile @engroot@/Tests/hydra/LevelComponentCommands_test_case.py exit_when_done
|
||||||
@ -1,2 +1,2 @@
|
|||||||
# this file is copied to $/dev/editor_autoexec.cfg so the the Editor automation runs for this Hydra test
|
# this file is copied to $/dev/editor_autoexec.cfg so the the Editor automation runs for this Hydra test
|
||||||
pyRunFile @devroot@/Tests/hydra/ViewportTitleDlgCommands_test_case.py
|
pyRunFile @engroot@/Tests/hydra/ViewportTitleDlgCommands_test_case.py
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue