Merging latest development
Signed-off-by: kberg-amzn <karlberg@amazon.com>
This commit is contained in:
@@ -7,20 +7,30 @@ labels: 'needs-triage,needs-sig,kind/bug'
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
A clear and concise description of what the bug is. Try to isolate the issue to help the community to reproduce it easily and increase chances for a fast fix.
|
||||
|
||||
**To Reproduce**
|
||||
**Steps to reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
2. Click on '...'
|
||||
3. Select attached asset '...'
|
||||
4. Scroll down to '...'
|
||||
5. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
**Actual behavior**
|
||||
A clear and concise description of what actually happened.
|
||||
|
||||
**Assets required**
|
||||
Provide sample assets needed to reproduce the issue.
|
||||
|
||||
**Screenshots/Video**
|
||||
If applicable, add screenshots and/or a video to help explain your problem.
|
||||
|
||||
**Found in Branch**
|
||||
Name of or link to the branch where the issue occurs.
|
||||
|
||||
**Desktop/Device (please complete the following information):**
|
||||
- Device: [e.g. PC, Mac, iPhone, Samsung]
|
||||
|
||||
@@ -1,18 +1,5 @@
|
||||
<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"/>
|
||||
<e_StreamCgfPoolSize value="128" />
|
||||
<e_ViewDistRatioVegetation value="100"/>
|
||||
<e_Lods 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>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
/autooptimizefile=0 /preset=Diffuse_lowQ
|
||||
@@ -1 +0,0 @@
|
||||
/autooptimizefile=0 /mipmaps=0 /preset=AlbedoWithGenericAlpha /reduce=-1
|
||||
@@ -7,8 +7,6 @@
|
||||
<Tool Title="| Draw Helpers" Command="p_draw_helpers" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| AI Debug Draw" Command="ai_DebugDraw" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| Toggle Music" Command="s_MusicEnable" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| Toggle Sound" Command="s_SoundEnable" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| Toggle ForcefeedBack" Command="i_forcefeedback" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| Freeze Camera " Command="e_CameraFreeze" EditorCmd="" ToggleVar="1"/>
|
||||
<Tool Title="| Log Verbosity 0" Command="log_Verbosity 0" EditorCmd="" ToggleVar="0"/>
|
||||
<Tool Title="| SaveLevelStats" Command="savelevelstats" EditorCmd="" ToggleVar="0"/>
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
ConsoleHide
|
||||
g_godMode=1
|
||||
sys_warnings=0
|
||||
con_showonload=1
|
||||
i_forcefeedback=0
|
||||
g_infiniteammo=1
|
||||
e_ObjectLayersActivation=0
|
||||
e_ObjectLayersActivationPhysics=0
|
||||
g_flashrenderingduringloading=0
|
||||
sys_maxfps=0
|
||||
r_vsync=0
|
||||
p_max_substeps=1
|
||||
demo_file=autotest
|
||||
demo_num_runs=0
|
||||
demo_quit=1
|
||||
demo_ai=1
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
ConsoleHide
|
||||
g_godMode=1
|
||||
g_infiniteammo=1
|
||||
r_displayinfo=1
|
||||
s_profiling=1
|
||||
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
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
ConsoleHide
|
||||
g_godMode=1
|
||||
g_infiniteammo=1
|
||||
r_displayinfo=1
|
||||
s_profiling=1
|
||||
sys_maxfps=0
|
||||
demo_file=playthru
|
||||
demo_num_runs=2
|
||||
demo_quit=1
|
||||
demo_savestats=1
|
||||
demo_profile=-1
|
||||
demo
|
||||
demo
|
||||
|
||||
@@ -11,113 +11,16 @@
|
||||
; default of this CVarGroup
|
||||
= 7
|
||||
|
||||
sys_spec_ObjectDetail=7
|
||||
sys_spec_Shading=7
|
||||
sys_spec_VolumetricEffects=7
|
||||
sys_spec_Shadows=7
|
||||
sys_spec_Texture=7
|
||||
sys_spec_Physics=7
|
||||
sys_spec_PostProcessing=7
|
||||
sys_spec_Particles=7
|
||||
sys_spec_Sound=7
|
||||
sys_spec_Water=7
|
||||
sys_spec_GameEffects=7
|
||||
sys_spec_light=7
|
||||
|
||||
[1]
|
||||
sys_spec_ObjectDetail=1
|
||||
sys_spec_Shading=1
|
||||
sys_spec_VolumetricEffects=1
|
||||
sys_spec_Shadows=1
|
||||
sys_spec_Texture=1
|
||||
sys_spec_Physics=1
|
||||
sys_spec_PostProcessing=1
|
||||
sys_spec_Particles=1
|
||||
sys_spec_Sound=1
|
||||
sys_spec_Water=1
|
||||
sys_spec_GameEffects=1
|
||||
sys_spec_light=1
|
||||
|
||||
[2]
|
||||
sys_spec_ObjectDetail=2
|
||||
sys_spec_Shading=2
|
||||
sys_spec_VolumetricEffects=2
|
||||
sys_spec_Shadows=2
|
||||
sys_spec_Texture=2
|
||||
sys_spec_Physics=2
|
||||
sys_spec_PostProcessing=2
|
||||
sys_spec_Particles=2
|
||||
sys_spec_Sound=2
|
||||
sys_spec_Water=2
|
||||
sys_spec_GameEffects=2
|
||||
sys_spec_light=2
|
||||
|
||||
[3]
|
||||
sys_spec_ObjectDetail=3
|
||||
sys_spec_Shading=3
|
||||
sys_spec_VolumetricEffects=3
|
||||
sys_spec_Shadows=3
|
||||
sys_spec_Texture=3
|
||||
sys_spec_Physics=3
|
||||
sys_spec_PostProcessing=3
|
||||
sys_spec_Particles=3
|
||||
sys_spec_Sound=3
|
||||
sys_spec_Water=3
|
||||
sys_spec_GameEffects=3
|
||||
sys_spec_light=3
|
||||
|
||||
[4]
|
||||
sys_spec_ObjectDetail=4
|
||||
sys_spec_Shading=4
|
||||
sys_spec_VolumetricEffects=4
|
||||
sys_spec_Shadows=4
|
||||
sys_spec_Texture=4
|
||||
sys_spec_Physics=4
|
||||
sys_spec_PostProcessing=4
|
||||
sys_spec_Particles=4
|
||||
sys_spec_Sound=4
|
||||
sys_spec_Water=4
|
||||
sys_spec_GameEffects=4
|
||||
sys_spec_light=4
|
||||
|
||||
[5]
|
||||
sys_spec_ObjectDetail=5
|
||||
sys_spec_Shading=5
|
||||
sys_spec_VolumetricEffects=5
|
||||
sys_spec_Shadows=5
|
||||
sys_spec_Texture=5
|
||||
sys_spec_Physics=5
|
||||
sys_spec_PostProcessing=5
|
||||
sys_spec_Particles=5
|
||||
sys_spec_Sound=5
|
||||
sys_spec_Water=5
|
||||
sys_spec_GameEffects=5
|
||||
sys_spec_light=5
|
||||
|
||||
[6]
|
||||
sys_spec_ObjectDetail=6
|
||||
sys_spec_Shading=6
|
||||
sys_spec_VolumetricEffects=6
|
||||
sys_spec_Shadows=6
|
||||
sys_spec_Texture=6
|
||||
sys_spec_Physics=6
|
||||
sys_spec_PostProcessing=6
|
||||
sys_spec_Particles=6
|
||||
sys_spec_Sound=6
|
||||
sys_spec_Water=6
|
||||
sys_spec_GameEffects=6
|
||||
sys_spec_light=6
|
||||
|
||||
[8]
|
||||
sys_spec_ObjectDetail=8
|
||||
sys_spec_Shading=8
|
||||
sys_spec_VolumetricEffects=8
|
||||
sys_spec_Shadows=8
|
||||
sys_spec_Texture=8
|
||||
sys_spec_Physics=8
|
||||
sys_spec_PostProcessing=8
|
||||
sys_spec_Particles=8
|
||||
sys_spec_Sound=8
|
||||
sys_spec_Water=8
|
||||
sys_spec_GameEffects=8
|
||||
sys_spec_light=8
|
||||
|
||||
@@ -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_DebugDrawNavigation = 1
|
||||
ai_DrawPath all
|
||||
ai_debugMNMAgentType MediumSizedCharacters
|
||||
@@ -1,7 +1,6 @@
|
||||
; Setup useful cvars for artists profiling GPU cost
|
||||
; Once in level (e.g. map c3mp_rooftop_gardens from the frontend/cmdline), in the console:
|
||||
; exec artprof.cfg
|
||||
; Be sure also to set r_shadersAsyncActivation=0 in your user.cfg (or copy artprof_user.cfg -> user.cfg)
|
||||
|
||||
; used to allow loading of loose shaders
|
||||
sys_pakPriority=0
|
||||
@@ -9,19 +8,8 @@ sys_pakPriority=0
|
||||
; because it's annoying and not relevant for artists
|
||||
sys_pakLogInvalidFileAccess=0
|
||||
|
||||
; disable fog volumes and particles as they can be misleading with r_measureOverdraw 4
|
||||
e_fogVolumes=0
|
||||
e_particles=0
|
||||
|
||||
; for convenience
|
||||
g_infiniteSuitEnergy=1
|
||||
g_infiniteAmmo=1
|
||||
g_timelimit=0
|
||||
|
||||
bind o "r_measureOverdraw 0"
|
||||
bind p "r_measureOverdraw 4"
|
||||
bind k "r_artProfile 0"
|
||||
bind l "r_artProfile 1"
|
||||
|
||||
; loading into an MP level with the map command stops you looking up and down unless you have a weapon
|
||||
i_giveitem scar
|
||||
|
||||
|
||||
@@ -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
|
||||
r_shadersAllowCompilation=1
|
||||
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
demo_restart_level = 2
|
||||
g_godMode=1
|
||||
g_infiniteammo=1
|
||||
r_displayinfo=1
|
||||
demo_file = autotest
|
||||
demo_ai = 1
|
||||
demo_num_runs = 4
|
||||
demo_quit = 1
|
||||
hud_startPaused=0
|
||||
sys_maxfps=0
|
||||
e_ObjectLayersActivation=0
|
||||
sys_flash = 0
|
||||
r_vsync = 0
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
demo_restart_level = 1
|
||||
g_godMode = 1
|
||||
g_infiniteammo = 1
|
||||
r_displayinfo = 2
|
||||
demo_file = timedemo_short
|
||||
demo_ai = 0
|
||||
demo_num_runs = 2
|
||||
demo_quit = 1
|
||||
-- hud_startPaused = 0
|
||||
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,63 +1,3 @@
|
||||
-- added this lines for proper 360 deg panorama renderings
|
||||
|
||||
e_ScreenShotFileFormat = jpg
|
||||
demo_fixed_timestep = 60
|
||||
s_SoundEnable = 0
|
||||
r_DisplayInfo = 0
|
||||
e_PanoramaScreenShotHeight = 720
|
||||
e_PanoramaScreenShotWidth = 10053
|
||||
c_shakeMult = 0
|
||||
demo_ai = 1
|
||||
r_MotionBlur = 0
|
||||
|
||||
-- enables full water reflection
|
||||
-- e_DebugMask = 2 -- e_DebugMask not allowed here
|
||||
|
||||
-- set weapong lighting effect to 0 to prevent flickering bug because of too much dynamic lights in the scene
|
||||
|
||||
|
||||
sys_spec = 2
|
||||
r_WaterRefractions = 1
|
||||
r_WaterReflections = 1
|
||||
r_WaterUpdateFactor = 0.01
|
||||
r_WaterReflections_ForceParticles = 0
|
||||
|
||||
r_EnvCMResolution = 2
|
||||
r_EnvTexResolution = 3
|
||||
r_EnvTexUpdateInterval = 0.05
|
||||
e_Decals = 1
|
||||
e_DecalsLifeTimeScale = 2
|
||||
ca_EnableDecals = 1
|
||||
e_LodRatio = 10
|
||||
e_ViewDistRatio = 55
|
||||
e_Lods = 1
|
||||
e_VegetationMinSize = 0
|
||||
r_CloudsUpdateAlways = 0
|
||||
|
||||
e_DynamicLightsMaxEntityLights = 3
|
||||
r_DepthOfField = 1
|
||||
--r_MotionBlur = 1
|
||||
r_Flares = 1
|
||||
r_checkSunVis = 1
|
||||
r_Coronas = 1
|
||||
r_CoronaFade = 0.1625
|
||||
r_UseEdgeAA = 1
|
||||
e_Clouds = 1
|
||||
|
||||
r_TexResolution = 0
|
||||
r_TexBumpResolution = 0
|
||||
r_DetailTextures = 1
|
||||
r_DetailNumLayers = 1
|
||||
r_DetailDistance = 8
|
||||
|
||||
e_ParticlesLod = 0.9
|
||||
|
||||
r_ShadowBlur = 3
|
||||
e_ShadowsMaxTexRes = 1024
|
||||
r_ShadowJittering = 1
|
||||
e_Shadows = 1
|
||||
e_VegetationBending = 1
|
||||
ai_UpdateAllAlways = 1
|
||||
r_refraction = 1
|
||||
r_sunshafts = 1
|
||||
r_ImposterRatio = 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
|
||||
sys_maxfps=30
|
||||
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_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
|
||||
sys_maxfps=30
|
||||
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_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,61 +1,8 @@
|
||||
sys_spec_Full=3
|
||||
|
||||
-- Cap frame rate at 30fps
|
||||
sys_maxfps=30
|
||||
r_vsync=0
|
||||
|
||||
-- Disabling gmem for this configuration
|
||||
r_EnableGMEMPath=0
|
||||
|
||||
-- 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_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
|
||||
|
||||
--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
|
||||
sys_maxfps=30
|
||||
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_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
|
||||
sys_maxfps=30
|
||||
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_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
|
||||
sys_maxfps=30
|
||||
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_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
|
||||
sys_maxfps=30
|
||||
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
|
||||
------------------------
|
||||
sys_streaming_in_blocks=1
|
||||
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
|
||||
sys_maxfps=30
|
||||
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
|
||||
------------------------
|
||||
sys_streaming_in_blocks=1
|
||||
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
|
||||
sys_maxfps=30
|
||||
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
|
||||
------------------------
|
||||
sys_streaming_in_blocks=1
|
||||
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
|
||||
sys_maxfps=30
|
||||
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
|
||||
------------------------
|
||||
sys_streaming_in_blocks=1
|
||||
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,12 +1,3 @@
|
||||
profile=-1
|
||||
profile_allthreads=1
|
||||
i_forcefeedback=0
|
||||
g_godmode=1
|
||||
log_verbosity=-1
|
||||
sys_pakLogInvalidFileAccess=1
|
||||
e_StatoscopeDataGroups=fgmrtudlipny
|
||||
e_StatoscopeFilenameUseBuildInfo=0
|
||||
e_StatoscopeFilenameUseMap=1
|
||||
e_StatoscopeMinFuncLengthMs=0.1
|
||||
e_StatoscopeMaxNumFuncsPerFrame=60
|
||||
e_StatoscopeScreenshotCapturePeriod=5
|
||||
|
||||
@@ -3,39 +3,13 @@
|
||||
-----------------------------------------------
|
||||
r_width = 960
|
||||
r_height = 1080
|
||||
r_backbufferWidth = 1920
|
||||
r_backbufferHeight = 1080
|
||||
|
||||
|
||||
-------------------------------------------
|
||||
-- Set the system Spec (Medium)
|
||||
-------------------------------------------
|
||||
sys_spec = 2
|
||||
|
||||
|
||||
-------------------------------------------
|
||||
-- HMD related
|
||||
-------------------------------------------
|
||||
r_overrideDXGIoutput = 0
|
||||
r_stereodevice = 100
|
||||
r_stereomode = 1
|
||||
r_stereooutput = 7
|
||||
r_minimizeLatency = 1
|
||||
hmd_low_persistence = 1
|
||||
r_stereoScaleCoefficient = 1
|
||||
|
||||
|
||||
-------------------------------------------
|
||||
-- Set some video optimisations
|
||||
-------------------------------------------
|
||||
r_vsync = 0
|
||||
r_MotionBlur = 0
|
||||
r_ssdoHalfRes = 3
|
||||
r_Refraction = 0
|
||||
r_DeferredShadingTiled = 0
|
||||
r_CBufferUseNativeDepth = 0
|
||||
|
||||
-------------------------------------------
|
||||
-- Hide the hud
|
||||
-------------------------------------------
|
||||
--hud_hide = 1
|
||||
|
||||
@@ -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
|
||||
@@ -48,22 +48,6 @@
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/perfhud_pc.xml" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{6C3531BB-4A37-515B-86F6-4FC3A9ABEF9F}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/sketch_off.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{EA424FC8-20C9-51D3-A4DD-08DA8B7F7FB3}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/sketch_on.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{34B60E74-28FA-57C4-9A2E-77515A083AC5}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
@@ -432,110 +416,6 @@
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_full.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{8A877B20-8B7D-5F61-93C9-FD02CB856165}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_gameeffects.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{5D7C3B35-E171-5A4B-8C36-1D22B3F7636F}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_objectdetail.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{8EAED4CA-6E4B-5F11-94E9-F4FB39E966C4}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_particles.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{437E9B76-BFC3-57AB-9993-9C249EEAEF97}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_physics.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{35B8614B-F080-5BE4-AD78-23F24E104C72}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_postprocessing.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{9CC310DD-0D00-555D-99A7-D339DF0E2A73}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_quality.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{2BD0EFEF-9DA5-5F48-B579-C500CA0D42AB}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_shading.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{979A2D8D-79B9-57E8-9250-A981538FA893}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_shadows.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{90964883-E22A-5D57-86FC-86571AD213BE}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_sound.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{89BEF8A4-AA05-5339-B4DE-C475541FD532}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_texture.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{15CBF6A7-1107-55A9-A173-2F7AD1329589}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_textureresolution.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{4CD3711E-09EE-5F91-8688-FB523F350C43}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_volumetriceffects.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{F316DFFF-ABA2-5145-A637-2BBA2C86E7A0}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/cvargroups/sys_spec_water.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{FD38C182-1AFC-514C-99E5-BB1AB60C4A31}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
@@ -616,38 +496,6 @@
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/spec/ios_veryhigh.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{B9622C57-85C2-5C68-AFB8-35AA0D65FEC7}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/spec/osx_metal_high.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{E79532D9-BE8F-5969-B672-A2E8030578B9}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/spec/osx_metal_low.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{4B05219C-0D19-5A04-B029-8417CE06A243}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/spec/osx_metal_medium.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{C0F09A4E-A77A-5FFF-B1ED-DDB37DED623C}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
<Class name="unsigned int" field="subId" value="0" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
</Class>
|
||||
<Class name="unsigned int" field="platformFlags" value="255" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/>
|
||||
<Class name="AZStd::string" field="pathHint" value="config/spec/osx_metal_veryhigh.cfg" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="SeedInfo" field="element" version="2" type="{FACC3682-2ACA-4AA4-B85A-07AD276D18A0}">
|
||||
<Class name="AssetId" field="assetId" version="1" type="{652ED536-3402-439B-AEBE-4A5DBC554085}">
|
||||
<Class name="AZ::Uuid" field="guid" value="{B632E8B1-884A-5A65-BC01-D85F0FED1266}" type="{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}"/>
|
||||
|
||||
@@ -125,17 +125,6 @@
|
||||
<Class name="AZStd::string" field="Comment" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{941B5626-118F-55BC-925E-6E416A7520E4}">
|
||||
<Class name="AZStd::string" field="value1" value="@devroot@/*.waf_files" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="FileTagData" field="value2" version="2" type="{5F66E43B-548B-4AA8-8CD8-F6924F6031E6}">
|
||||
<Class name="unsigned char" field="FilePatternType" value="1" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::set" field="FileTags" type="{166F208E-DE97-53FE-B349-BDD9FE9B8693}">
|
||||
<Class name="AZStd::string" field="element" value="ignore" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="productdependency" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="Comment" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{941B5626-118F-55BC-925E-6E416A7520E4}">
|
||||
<Class name="AZStd::string" field="value1" value="*/editor/leveltemplates.xml" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="FileTagData" field="value2" version="2" type="{5F66E43B-548B-4AA8-8CD8-F6924F6031E6}">
|
||||
@@ -207,27 +196,6 @@
|
||||
<Class name="AZStd::string" field="Comment" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{941B5626-118F-55BC-925E-6E416A7520E4}">
|
||||
<Class name="AZStd::string" field="value1" value="@devroot@/*wscript" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="FileTagData" field="value2" version="2" type="{5F66E43B-548B-4AA8-8CD8-F6924F6031E6}">
|
||||
<Class name="unsigned char" field="FilePatternType" value="1" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::set" field="FileTags" type="{166F208E-DE97-53FE-B349-BDD9FE9B8693}">
|
||||
<Class name="AZStd::string" field="element" value="ignore" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="AZStd::string" field="element" value="productdependency" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="Comment" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{941B5626-118F-55BC-925E-6E416A7520E4}">
|
||||
<Class name="AZStd::string" field="value1" value=".*/assetprocessorplatformconfig.ini" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="FileTagData" field="value2" version="2" type="{5F66E43B-548B-4AA8-8CD8-F6924F6031E6}">
|
||||
<Class name="unsigned char" field="FilePatternType" value="2" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/>
|
||||
<Class name="AZStd::set" field="FileTags" type="{166F208E-DE97-53FE-B349-BDD9FE9B8693}">
|
||||
<Class name="AZStd::string" field="element" value="editoronly" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
<Class name="AZStd::string" field="Comment" value="" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{941B5626-118F-55BC-925E-6E416A7520E4}">
|
||||
<Class name="AZStd::string" field="value1" value=".*/gems?/?.*/gem.json" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="FileTagData" field="value2" version="2" type="{5F66E43B-548B-4AA8-8CD8-F6924F6031E6}">
|
||||
|
||||
@@ -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"
|
||||
@@ -3,9 +3,15 @@
|
||||
"Version": 1,
|
||||
"ClassName": "GlobalBuildOptions",
|
||||
"ClassData": {
|
||||
"ShaderCompilerArguments" : {
|
||||
"DefaultMatrixOrder" : "Row",
|
||||
"AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
|
||||
"ShaderCompilerArguments": {
|
||||
"DefaultMatrixOrder": "Row",
|
||||
"AzslcAdditionalFreeArguments": "--strip-unused-srgs"
|
||||
},
|
||||
"PreprocessorOptions": {
|
||||
"predefinedMacros": [ "AZSL=17" ],
|
||||
"projectIncludePaths": [
|
||||
"Gems/AtomTressFX/Assets/Shaders"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
#
|
||||
# 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 = []
|
||||
|
||||
# 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")
|
||||
|
||||
# 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()
|
||||
|
||||
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
|
||||
@@ -21,9 +21,9 @@ set(ENABLED_GEMS
|
||||
QtForPython
|
||||
PythonAssetBuilder
|
||||
Metastream
|
||||
|
||||
Camera
|
||||
EMotionFX
|
||||
AtomTressFX
|
||||
PhysX
|
||||
CameraFramework
|
||||
StartingPointMovement
|
||||
@@ -52,9 +52,6 @@ set(ENABLED_GEMS
|
||||
AWSCore
|
||||
AWSClientAuth
|
||||
AWSMetrics
|
||||
|
||||
|
||||
|
||||
|
||||
PrefabBuilder
|
||||
AudioSystem
|
||||
)
|
||||
|
||||
@@ -6,12 +6,7 @@
|
||||
#
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Atom Renderer: Automated Tests
|
||||
# Runs EditorPythonBindings (hydra) scripts inside the Editor to verify test results for the Atom renderer.
|
||||
################################################################################
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_BUILD_TESTS_SUPPORTED AND AutomatedTesting IN_LIST LY_PROJECTS)
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::Atom_TestSuite_Main
|
||||
TEST_SUITE main
|
||||
@@ -65,4 +60,18 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_BUILD_TESTS_SUPPORTED AND AutomatedT
|
||||
COMPONENT
|
||||
Atom
|
||||
)
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::Atom_TestSuite_Main_GPU_Optimized
|
||||
TEST_SUITE main
|
||||
TEST_REQUIRES gpu
|
||||
TEST_SERIAL
|
||||
TIMEOUT 1200
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main_GPU_Optimized.py
|
||||
RUNTIME_DEPENDENCIES
|
||||
AssetProcessor
|
||||
AutomatedTesting.Assets
|
||||
Editor
|
||||
COMPONENT
|
||||
Atom
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -3,8 +3,6 @@ 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
|
||||
|
||||
Main suite tests for the Atom renderer.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
@@ -25,20 +23,20 @@ TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "tests")
|
||||
class TestAtomEditorComponentsMain(object):
|
||||
"""Holds tests for Atom components."""
|
||||
|
||||
@pytest.mark.test_case_id("C32078118") # Decal
|
||||
@pytest.mark.test_case_id("C32078119") # DepthOfField
|
||||
@pytest.mark.test_case_id("C32078120") # Directional Light
|
||||
@pytest.mark.test_case_id("C32078121") # Exposure Control
|
||||
@pytest.mark.test_case_id("C32078115") # Global Skylight (IBL)
|
||||
@pytest.mark.test_case_id("C32078125") # Physical Sky
|
||||
@pytest.mark.test_case_id("C32078127") # PostFX Layer
|
||||
@pytest.mark.test_case_id("C32078131") # PostFX Radius Weight Modifier
|
||||
@pytest.mark.test_case_id("C32078117") # Light
|
||||
@pytest.mark.test_case_id("C36525660") # Display Mapper
|
||||
def test_AtomEditorComponents_AddedToEntity(self, request, editor, level, workspace, project, launcher_platform):
|
||||
"""
|
||||
Please review the hydra script run by this test for more specific test info.
|
||||
Tests the following Atom components and verifies all "expected_lines" appear in Editor.log:
|
||||
1. Display Mapper
|
||||
2. Light
|
||||
3. PostFX Radius Weight Modifier
|
||||
4. PostFX Layer
|
||||
5. Physical Sky
|
||||
6. Global Skylight (IBL)
|
||||
7. Exposure Control
|
||||
8. Directional Light
|
||||
9. DepthOfField
|
||||
10. Decal
|
||||
Tests the Atom components & verifies all "expected_lines" appear in Editor.log
|
||||
"""
|
||||
cfg_args = [level]
|
||||
|
||||
@@ -71,6 +69,18 @@ class TestAtomEditorComponentsMain(object):
|
||||
"DepthOfField_test: Entity deleted: True",
|
||||
"DepthOfField_test: UNDO entity deletion works: True",
|
||||
"DepthOfField_test: REDO entity deletion works: True",
|
||||
# Directional Light Component
|
||||
"Directional Light Entity successfully created",
|
||||
"Directional Light_test: Component added to the entity: True",
|
||||
"Directional Light_test: Component removed after UNDO: True",
|
||||
"Directional Light_test: Component added after REDO: True",
|
||||
"Directional Light_test: Entered game mode: True",
|
||||
"Directional Light_test: Exit game mode: True",
|
||||
"Directional Light_test: Entity is hidden: True",
|
||||
"Directional Light_test: Entity is shown: True",
|
||||
"Directional Light_test: Entity deleted: True",
|
||||
"Directional Light_test: UNDO entity deletion works: True",
|
||||
"Directional Light_test: REDO entity deletion works: True",
|
||||
# Exposure Control Component
|
||||
"Exposure Control Entity successfully created",
|
||||
"Exposure Control_test: Component added to the entity: True",
|
||||
@@ -161,21 +171,6 @@ class TestAtomEditorComponentsMain(object):
|
||||
"Display Mapper_test: Entity deleted: True",
|
||||
"Display Mapper_test: UNDO entity deletion works: True",
|
||||
"Display Mapper_test: REDO entity deletion works: True",
|
||||
# Reflection Probe Component
|
||||
"Reflection Probe Entity successfully created",
|
||||
"Reflection Probe_test: Component added to the entity: True",
|
||||
"Reflection Probe_test: Component removed after UNDO: True",
|
||||
"Reflection Probe_test: Component added after REDO: True",
|
||||
"Reflection Probe_test: Entered game mode: True",
|
||||
"Reflection Probe_test: Exit game mode: True",
|
||||
"Reflection Probe_test: Entity disabled initially: True",
|
||||
"Reflection Probe_test: Entity enabled after adding required components: True",
|
||||
"Reflection Probe_test: Cubemap is generated: True",
|
||||
"Reflection Probe_test: Entity is hidden: True",
|
||||
"Reflection Probe_test: Entity is shown: True",
|
||||
"Reflection Probe_test: Entity deleted: True",
|
||||
"Reflection Probe_test: UNDO entity deletion works: True",
|
||||
"Reflection Probe_test: REDO entity deletion works: True",
|
||||
]
|
||||
|
||||
unexpected_lines = [
|
||||
@@ -197,6 +192,7 @@ class TestAtomEditorComponentsMain(object):
|
||||
cfg_args=cfg_args,
|
||||
)
|
||||
|
||||
@pytest.mark.test_case_id("C34525095")
|
||||
def test_AtomEditorComponents_LightComponent(
|
||||
self, request, editor, workspace, project, launcher_platform, level):
|
||||
"""
|
||||
@@ -283,6 +279,15 @@ class TestMaterialEditorBasicTests(object):
|
||||
request.addfinalizer(teardown)
|
||||
|
||||
@pytest.mark.parametrize("exe_file_name", ["MaterialEditor"])
|
||||
@pytest.mark.test_case_id("C34448113") # Creating a New Asset.
|
||||
@pytest.mark.test_case_id("C34448114") # Opening an Existing Asset.
|
||||
@pytest.mark.test_case_id("C34448115") # Closing Selected Material.
|
||||
@pytest.mark.test_case_id("C34448116") # Closing All Materials.
|
||||
@pytest.mark.test_case_id("C34448117") # Closing all but Selected Material.
|
||||
@pytest.mark.test_case_id("C34448118") # Saving Material.
|
||||
@pytest.mark.test_case_id("C34448119") # Saving as a New Material.
|
||||
@pytest.mark.test_case_id("C34448120") # Saving as a Child Material.
|
||||
@pytest.mark.test_case_id("C34448121") # Saving all Open Materials.
|
||||
def test_MaterialEditorBasicTests(
|
||||
self, request, workspace, project, launcher_platform, generic_launcher, exe_file_name):
|
||||
|
||||
|
||||
@@ -73,6 +73,7 @@ def create_screenshots_archive(screenshot_path):
|
||||
class TestAllComponentsIndepthTests(object):
|
||||
|
||||
@pytest.mark.parametrize("screenshot_name", ["AtomBasicLevelSetup.ppm"])
|
||||
@pytest.mark.test_case_id("C34603773")
|
||||
def test_BasicLevelSetup_SetsUpLevel(
|
||||
self, request, editor, workspace, project, launcher_platform, level, screenshot_name):
|
||||
"""
|
||||
@@ -115,6 +116,7 @@ class TestAllComponentsIndepthTests(object):
|
||||
|
||||
create_screenshots_archive(screenshot_directory)
|
||||
|
||||
@pytest.mark.test_case_id("C34525095")
|
||||
def test_LightComponent_ScreenshotMatchesGoldenImage(
|
||||
self, request, editor, workspace, project, launcher_platform, level):
|
||||
"""
|
||||
@@ -146,7 +148,7 @@ class TestAllComponentsIndepthTests(object):
|
||||
golden_image_path = os.path.join(golden_images_directory(), golden_image)
|
||||
golden_images.append(golden_image_path)
|
||||
|
||||
expected_lines = ["Light component tests completed."]
|
||||
expected_lines = ["spot_light Controller|Configuration|Shadows|Shadowmap size: SUCCESS"]
|
||||
unexpected_lines = [
|
||||
"Trace::Assert",
|
||||
"Trace::Error",
|
||||
@@ -220,20 +222,20 @@ class TestPerformanceBenchmarkSuite(object):
|
||||
@pytest.mark.system
|
||||
class TestMaterialEditor(object):
|
||||
|
||||
@pytest.mark.parametrize("cfg_args", ["-rhi=dx12", "-rhi=Vulkan"])
|
||||
@pytest.mark.parametrize("cfg_args,expected_lines", [
|
||||
pytest.param("-rhi=dx12", ["Registering dx12 RHI"]),
|
||||
pytest.param("-rhi=Vulkan", ["Registering vulkan RHI"])
|
||||
])
|
||||
@pytest.mark.parametrize("exe_file_name", ["MaterialEditor"])
|
||||
@pytest.mark.test_case_id("C30973986") # Material Editor Launching in Dx12
|
||||
@pytest.mark.test_case_id("C30973987") # Material Editor Launching in Vulkan
|
||||
def test_MaterialEditorLaunch_AllRHIOptionsSucceed(
|
||||
self, request, workspace, project, launcher_platform, generic_launcher, exe_file_name, cfg_args):
|
||||
self, request, workspace, project, launcher_platform, generic_launcher, exe_file_name, cfg_args,
|
||||
expected_lines):
|
||||
"""
|
||||
Tests each valid RHI option (Null RHI excluded) can be launched with the MaterialEditor.
|
||||
Checks for the "Finished loading viewport configurations." success message post launch.
|
||||
Checks for the specific expected_lines messaging for each RHI type.
|
||||
"""
|
||||
expected_lines = ["Finished loading viewport configurations."]
|
||||
unexpected_lines = [
|
||||
# "Trace::Assert",
|
||||
# "Trace::Error",
|
||||
"Traceback (most recent call last):",
|
||||
]
|
||||
|
||||
hydra.launch_and_validate_results(
|
||||
request,
|
||||
@@ -243,7 +245,7 @@ class TestMaterialEditor(object):
|
||||
run_python="--runpython",
|
||||
timeout=60,
|
||||
expected_lines=expected_lines,
|
||||
unexpected_lines=unexpected_lines,
|
||||
unexpected_lines=[],
|
||||
halt_on_unexpected=False,
|
||||
null_renderer=False,
|
||||
cfg_args=[cfg_args],
|
||||
|
||||
@@ -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)
|
||||
@@ -14,33 +14,62 @@ from ly_test_tools.o3de.editor_test import EditorSharedTest, EditorTestSuite
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
class TestAutomation(EditorTestSuite):
|
||||
|
||||
@pytest.mark.test_case_id("C32078118")
|
||||
class AtomEditorComponents_DecalAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_DecalAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078119")
|
||||
class AtomEditorComponents_DepthOfFieldAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_DepthOfFieldAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078120")
|
||||
class AtomEditorComponents_DirectionalLightAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_DirectionalLightAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078121")
|
||||
class AtomEditorComponents_ExposureControlAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_ExposureControlAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078115")
|
||||
class AtomEditorComponents_GlobalSkylightIBLAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_GlobalSkylightIBLAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078125")
|
||||
class AtomEditorComponents_PhysicalSkyAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_PhysicalSkyAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078131")
|
||||
class AtomEditorComponents_PostFXRadiusWeightModifierAdded(EditorSharedTest):
|
||||
from Atom.tests import (
|
||||
hydra_AtomEditorComponents_PostFXRadiusWeightModifierAdded as test_module)
|
||||
|
||||
@pytest.mark.test_case_id("C32078117")
|
||||
class AtomEditorComponents_LightAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_LightAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C36525660")
|
||||
class AtomEditorComponents_DisplayMapperAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_DisplayMapperAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078128")
|
||||
class AtomEditorComponents_ReflectionProbeAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_ReflectionProbeAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078124")
|
||||
class AtomEditorComponents_MeshAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_MeshAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078123")
|
||||
class AtomEditorComponents_MaterialAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_MaterialAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C32078127")
|
||||
class AtomEditorComponents_PostFXLayerAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_PostFXLayerAdded as test_module
|
||||
|
||||
@pytest.mark.test_case_id("C36525665")
|
||||
class AtomEditorComponents_PostFXShapeWeightModifierAdded(EditorSharedTest):
|
||||
from Atom.tests import hydra_AtomEditorComponents_PostFxShapeWeightModifierAdded as test_module
|
||||
|
||||
class ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges(EditorSharedTest):
|
||||
from Atom.tests import hydra_ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges as test_module
|
||||
|
||||
@@ -3,12 +3,17 @@ 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
|
||||
|
||||
Sandbox suite tests for the Atom renderer.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
import editor_python_test_tools.hydra_test_utils as hydra
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "tests")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("project", ["AutomatedTesting"])
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
@@ -18,3 +23,50 @@ class TestAtomEditorComponentsSandbox(object):
|
||||
# It requires at least one test
|
||||
def test_Dummy(self, request, editor, level, workspace, project, launcher_platform):
|
||||
pass
|
||||
|
||||
@pytest.mark.parametrize("project", ["AutomatedTesting"])
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
@pytest.mark.parametrize("level", ["auto_test"])
|
||||
class TestAtomEditorComponentsMain(object):
|
||||
"""Holds tests for Atom components."""
|
||||
|
||||
@pytest.mark.test_case_id("C32078128")
|
||||
def test_AtomEditorComponents_ReflectionProbeAddedToEntity(
|
||||
self, request, editor, level, workspace, project, launcher_platform):
|
||||
"""
|
||||
Please review the hydra script run by this test for more specific test info.
|
||||
Tests the following Atom components and verifies all "expected_lines" appear in Editor.log:
|
||||
1. Reflection Probe
|
||||
"""
|
||||
cfg_args = [level]
|
||||
|
||||
expected_lines = [
|
||||
# Reflection Probe Component
|
||||
"Reflection Probe Entity successfully created",
|
||||
"Reflection Probe_test: Component added to the entity: True",
|
||||
"Reflection Probe_test: Component removed after UNDO: True",
|
||||
"Reflection Probe_test: Component added after REDO: True",
|
||||
"Reflection Probe_test: Entered game mode: True",
|
||||
"Reflection Probe_test: Exit game mode: True",
|
||||
"Reflection Probe_test: Entity disabled initially: True",
|
||||
"Reflection Probe_test: Entity enabled after adding required components: True",
|
||||
"Reflection Probe_test: Cubemap is generated: True",
|
||||
"Reflection Probe_test: Entity is hidden: True",
|
||||
"Reflection Probe_test: Entity is shown: True",
|
||||
"Reflection Probe_test: Entity deleted: True",
|
||||
"Reflection Probe_test: UNDO entity deletion works: True",
|
||||
"Reflection Probe_test: REDO entity deletion works: True",
|
||||
]
|
||||
|
||||
hydra.launch_and_validate_results(
|
||||
request,
|
||||
TEST_DIRECTORY,
|
||||
editor,
|
||||
"hydra_AtomEditorComponents_AddedToEntity.py",
|
||||
timeout=120,
|
||||
expected_lines=expected_lines,
|
||||
unexpected_lines=[],
|
||||
halt_on_unexpected=True,
|
||||
null_renderer=True,
|
||||
cfg_args=cfg_args,
|
||||
)
|
||||
|
||||
@@ -3,13 +3,54 @@ Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
|
||||
File to assist with common hydra component functions used across various Atom tests.
|
||||
"""
|
||||
import datetime
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
from editor_python_test_tools.editor_test_helper import EditorTestHelper
|
||||
|
||||
helper = EditorTestHelper(log_prefix="Atom_EditorTestHelper")
|
||||
def create_screenshots_archive(screenshot_path):
|
||||
"""
|
||||
Creates a new zip file archive at archive_path containing all files listed within archive_path.
|
||||
:param screenshot_path: location containing the files to archive, the zip archive file will also be saved here.
|
||||
:return: None, but creates a new zip file archive inside path containing all of the files inside archive_path.
|
||||
"""
|
||||
files_to_archive = []
|
||||
|
||||
# Search for .png and .ppm files to add to the zip archive file.
|
||||
for (folder_name, sub_folders, file_names) in os.walk(screenshot_path):
|
||||
for file_name in file_names:
|
||||
if file_name.endswith(".png") or file_name.endswith(".ppm"):
|
||||
file_path = os.path.join(folder_name, file_name)
|
||||
files_to_archive.append(file_path)
|
||||
|
||||
# Setup variables for naming the zip archive file.
|
||||
timestamp = datetime.datetime.now().timestamp()
|
||||
formatted_timestamp = datetime.datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d_%H-%M-%S")
|
||||
screenshots_file = os.path.join(screenshot_path, f'screenshots_{formatted_timestamp}.zip')
|
||||
|
||||
# Write all of the valid .png and .ppm files to the archive file.
|
||||
with zipfile.ZipFile(screenshots_file, 'w', compression=zipfile.ZIP_DEFLATED, allowZip64=True) as zip_archive:
|
||||
for file_path in files_to_archive:
|
||||
file_name = os.path.basename(file_path)
|
||||
zip_archive.write(file_path, file_name)
|
||||
|
||||
|
||||
def golden_images_directory():
|
||||
"""
|
||||
Uses this file location to return the valid location for golden image files.
|
||||
:return: The path to the golden_images directory, but raises an IOError if the golden_images directory is missing.
|
||||
"""
|
||||
current_file_directory = os.path.join(os.path.dirname(__file__))
|
||||
golden_images_dir = os.path.join(current_file_directory, '..', 'golden_images')
|
||||
|
||||
if not os.path.exists(golden_images_dir):
|
||||
raise IOError(
|
||||
f'golden_images" directory was not found at path "{golden_images_dir}"'
|
||||
f'Please add a "golden_images" directory inside: "{current_file_directory}"'
|
||||
)
|
||||
|
||||
return golden_images_dir
|
||||
|
||||
|
||||
def create_basic_atom_level(level_name):
|
||||
@@ -31,6 +72,9 @@ def create_basic_atom_level(level_name):
|
||||
import azlmbr.object
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from editor_python_test_tools.editor_test_helper import EditorTestHelper
|
||||
|
||||
helper = EditorTestHelper(log_prefix="Atom_EditorTestHelper")
|
||||
|
||||
# Create a new level.
|
||||
new_level_name = level_name
|
||||
@@ -69,7 +113,6 @@ def create_basic_atom_level(level_name):
|
||||
general.close_pane("Error Log")
|
||||
general.idle_wait(1.0)
|
||||
general.run_console("r_displayInfo=0")
|
||||
general.run_console("r_antialiasingmode=0")
|
||||
general.idle_wait(1.0)
|
||||
|
||||
# Delete all existing entities & create default_level entity
|
||||
|
||||
@@ -211,7 +211,7 @@ class Timeout:
|
||||
return time.time() > self.die_after
|
||||
|
||||
|
||||
screenshotsFolder = os.path.join(azlmbr.paths.devroot, "AtomTest", "Cache" "pc", "Screenshots")
|
||||
screenshotsFolder = os.path.join(azlmbr.paths.products, "Screenshots")
|
||||
|
||||
|
||||
class ScreenshotHelper:
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import azlmbr.legacy.general as general
|
||||
import azlmbr.editor as editor
|
||||
import azlmbr.render as render
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from editor_python_test_tools.utils import TestHelper
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import azlmbr.math as math
|
||||
import azlmbr.paths
|
||||
import azlmbr.legacy.general as general
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devassets, "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from Atom.atom_utils.atom_constants import LIGHT_TYPES
|
||||
|
||||
+205
@@ -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)
|
||||
+156
@@ -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)
|
||||
+207
@@ -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)
|
||||
+194
@@ -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)
|
||||
@@ -16,7 +16,7 @@ import time
|
||||
import azlmbr.math as math
|
||||
import azlmbr.paths
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devassets, "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import Atom.atom_utils.material_editor_utils as material_editor
|
||||
|
||||
@@ -27,10 +27,10 @@ TEST_MATERIAL_1 = "001_DefaultWhite.material"
|
||||
TEST_MATERIAL_2 = "002_BaseColorLerp.material"
|
||||
TEST_MATERIAL_3 = "003_MetalMatte.material"
|
||||
TEST_DATA_PATH = os.path.join(
|
||||
azlmbr.paths.devroot, "Gems", "Atom", "TestData", "TestData", "Materials", "StandardPbrTestCases"
|
||||
azlmbr.paths.engroot, "Gems", "Atom", "TestData", "TestData", "Materials", "StandardPbrTestCases"
|
||||
)
|
||||
MATERIAL_TYPE_PATH = os.path.join(
|
||||
azlmbr.paths.devroot, "Gems", "Atom", "Feature", "Common", "Assets",
|
||||
azlmbr.paths.engroot, "Gems", "Atom", "Feature", "Common", "Assets",
|
||||
"Materials", "Types", "StandardPBR.materialtype",
|
||||
)
|
||||
CACHE_FILE_EXTENSION = ".azmaterial"
|
||||
@@ -61,7 +61,7 @@ def run():
|
||||
print(f"Material opened: {material_editor.is_open(document_id)}")
|
||||
|
||||
# Verify if the test material exists initially
|
||||
target_path = os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Materials", NEW_MATERIAL)
|
||||
target_path = os.path.join(azlmbr.paths.projectroot, "Materials", NEW_MATERIAL)
|
||||
print(f"Test asset doesn't exist initially: {not os.path.exists(target_path)}")
|
||||
|
||||
# 2) Test Case: Creating a New Material Using Existing One
|
||||
@@ -109,10 +109,10 @@ def run():
|
||||
# Assign new color to the material file and save the document as copy
|
||||
expected_color_1 = math.Color(0.5, 0.5, 0.5, 1.0)
|
||||
material_editor.set_property(document_id, property_name, expected_color_1)
|
||||
target_path_1 = os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Materials", NEW_MATERIAL_1)
|
||||
target_path_1 = os.path.join(azlmbr.paths.projectroot, "Materials", NEW_MATERIAL_1)
|
||||
cache_file_name_1 = os.path.splitext(NEW_MATERIAL_1) # Example output: ('test_material_1', '.material')
|
||||
cache_file_1 = f"{cache_file_name_1[0]}{CACHE_FILE_EXTENSION}"
|
||||
target_path_1_cache = os.path.join(azlmbr.paths.devassets, "Cache", "pc", "materials", cache_file_1)
|
||||
target_path_1_cache = os.path.join(azlmbr.paths.products, "materials", cache_file_1)
|
||||
material_editor.save_document_as_copy(document_id, target_path_1)
|
||||
material_editor.wait_for_condition(lambda: os.path.exists(target_path_1_cache), 4.0)
|
||||
|
||||
@@ -120,10 +120,10 @@ def run():
|
||||
# Assign new color to the material file save the document as child
|
||||
expected_color_2 = math.Color(0.75, 0.75, 0.75, 1.0)
|
||||
material_editor.set_property(document_id, property_name, expected_color_2)
|
||||
target_path_2 = os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Materials", NEW_MATERIAL_2)
|
||||
target_path_2 = os.path.join(azlmbr.paths.projectroot, "Materials", NEW_MATERIAL_2)
|
||||
cache_file_name_2 = os.path.splitext(NEW_MATERIAL_1) # Example output: ('test_material_2', '.material')
|
||||
cache_file_2 = f"{cache_file_name_2[0]}{CACHE_FILE_EXTENSION}"
|
||||
target_path_2_cache = os.path.join(azlmbr.paths.devassets, "Cache", "pc", "materials", cache_file_2)
|
||||
target_path_2_cache = os.path.join(azlmbr.paths.products, "materials", cache_file_2)
|
||||
material_editor.save_document_as_child(document_id, target_path_2)
|
||||
material_editor.wait_for_condition(lambda: os.path.exists(target_path_2_cache), 4.0)
|
||||
|
||||
|
||||
+1
-2
@@ -10,7 +10,7 @@ import sys
|
||||
|
||||
import azlmbr.legacy.general as general
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from editor_python_test_tools.editor_test_helper import EditorTestHelper
|
||||
@@ -66,7 +66,6 @@ def run():
|
||||
general.close_pane("Error Log")
|
||||
general.idle_wait(1.0)
|
||||
general.run_console("r_displayInfo=0")
|
||||
general.run_console("r_antialiasingmode=0")
|
||||
general.idle_wait(1.0)
|
||||
|
||||
return True
|
||||
|
||||
@@ -17,7 +17,7 @@ import azlmbr.math as math
|
||||
import azlmbr.paths
|
||||
import azlmbr.editor as editor
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from editor_python_test_tools.editor_test_helper import EditorTestHelper
|
||||
@@ -82,7 +82,6 @@ def run():
|
||||
general.close_pane("Error Log")
|
||||
general.idle_wait(1.0)
|
||||
general.run_console("r_displayInfo=0")
|
||||
general.run_console("r_antialiasingmode=0")
|
||||
general.idle_wait(1.0)
|
||||
|
||||
return True
|
||||
|
||||
@@ -14,7 +14,7 @@ import azlmbr.math as math
|
||||
import azlmbr.paths
|
||||
import azlmbr.legacy.general as general
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Gem", "PythonTests"))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from Atom.atom_utils import atom_component_helper, atom_constants, screenshot_utils
|
||||
|
||||
@@ -42,7 +42,6 @@ class TestEditorAutomation(object):
|
||||
"editor command line arg bar",
|
||||
"editor command line arg baz",
|
||||
"editor engroot set",
|
||||
"editor devroot set",
|
||||
"path resolved worked"
|
||||
]
|
||||
|
||||
|
||||
@@ -20,12 +20,6 @@ if (engroot is not None and len(engroot) is not 0):
|
||||
print ('engroot is {}'.format(engroot))
|
||||
print ('editor engroot set')
|
||||
|
||||
# make sure the @devroot@ exists as a azlmbr.paths property
|
||||
devroot = azlmbr.paths.devroot
|
||||
if (devroot is not None and len(devroot) != 0):
|
||||
print ('devroot is {}'.format(devroot))
|
||||
print ('editor devroot set')
|
||||
|
||||
# resolving a basic path
|
||||
path = azlmbr.paths.resolve_path('@engroot@/engineassets/texturemsg/defaultsolids.mtl')
|
||||
if (len(path) != 0 and path.find('@engroot@') == -1):
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ import azlmbr.entity as entity
|
||||
import azlmbr.math as math
|
||||
import azlmbr.paths
|
||||
|
||||
sys.path.append(os.path.join(azlmbr.paths.devroot, 'AutomatedTesting', 'Gem', 'PythonTests'))
|
||||
sys.path.append(os.path.join(azlmbr.paths.projectroot, 'Gem', 'PythonTests'))
|
||||
from automatedtesting_shared.editor_test_helper import EditorTestHelper
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
# 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
|
||||
pyRunFile @devroot@/Tests/hydra/ViewportTitleDlgCommands_test_case.py
|
||||
pyRunFile @engroot@/Tests/hydra/ViewportTitleDlgCommands_test_case.py
|
||||
+16
@@ -361,3 +361,19 @@ class EditorEntity:
|
||||
:return: True if "isVisible" is enabled, False otherwise.
|
||||
"""
|
||||
return editor.EditorEntityInfoRequestBus(bus.Event, "IsVisible", self.id)
|
||||
|
||||
def set_local_uniform_scale(self, scale_float) -> None:
|
||||
"""
|
||||
Sets the "SetLocalUniformScale" value on the entity.
|
||||
:param scale_float: value for "SetLocalUniformScale" to set to.
|
||||
:return: None
|
||||
"""
|
||||
azlmbr.components.TransformBus(azlmbr.bus.Event, "SetLocalUniformScale", self.id, scale_float)
|
||||
|
||||
def set_local_rotation(self, vector3_rotation) -> None:
|
||||
"""
|
||||
Sets the "SetLocalRotation" value on the entity.
|
||||
:param vector3_rotation: The math.Vector3 value to use for rotation on the entity (uses radians).
|
||||
:return: None
|
||||
"""
|
||||
azlmbr.components.TransformBus(azlmbr.bus.Event, "SetLocalRotation", self.id, vector3_rotation)
|
||||
|
||||
+40
-14
@@ -4,18 +4,18 @@ For complete copyright and license terms please see the LICENSE at the root of t
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
"""
|
||||
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import time
|
||||
import math
|
||||
import traceback
|
||||
from typing import Callable, Tuple
|
||||
|
||||
import azlmbr
|
||||
import azlmbr.legacy.general as general
|
||||
import azlmbr.debug
|
||||
import json
|
||||
|
||||
import traceback
|
||||
|
||||
from typing import Callable, Tuple
|
||||
|
||||
class FailFast(Exception):
|
||||
"""
|
||||
@@ -127,6 +127,30 @@ class TestHelper:
|
||||
if ret:
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def close_error_windows():
|
||||
"""
|
||||
Closes Error Report and Error Log windows that block focus if they are visible.
|
||||
:return: None
|
||||
"""
|
||||
if general.is_pane_visible("Error Report"):
|
||||
general.close_pane("Error Report")
|
||||
if general.is_pane_visible("Error Log"):
|
||||
general.close_pane("Error Log")
|
||||
|
||||
@staticmethod
|
||||
def close_display_helpers():
|
||||
"""
|
||||
Closes helper gizmos, anti-aliasing, and FPS meters.
|
||||
:return: None
|
||||
"""
|
||||
if general.is_helpers_shown():
|
||||
general.toggle_helpers()
|
||||
general.idle_wait(1.0)
|
||||
general.idle_wait(1.0)
|
||||
general.run_console("r_displayInfo=0")
|
||||
general.idle_wait(1.0)
|
||||
|
||||
|
||||
class Timeout:
|
||||
# type: (float) -> None
|
||||
@@ -149,6 +173,7 @@ class Timeout:
|
||||
def timed_out(self):
|
||||
return time.time() > self.die_after
|
||||
|
||||
|
||||
class Report:
|
||||
_results = []
|
||||
_exception = None
|
||||
@@ -290,8 +315,8 @@ class Report:
|
||||
Report.info(" x: {:.2f}, y: {:.2f}, z: {:.2f}".format(vector3.x, vector3.y, vector3.z))
|
||||
if magnitude is not None:
|
||||
Report.info(" magnitude: {:.2f}".format(magnitude))
|
||||
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Utility for scope tracing errors and warnings.
|
||||
Usage:
|
||||
@@ -303,7 +328,7 @@ Usage:
|
||||
|
||||
Report.result(Tests.warnings_not_found_in_section, not section_tracer.has_warnings)
|
||||
|
||||
'''
|
||||
'''
|
||||
class Tracer:
|
||||
def __init__(self):
|
||||
self.warnings = []
|
||||
@@ -349,10 +374,10 @@ class Tracer:
|
||||
self.line = args[1]
|
||||
self.function = args[2]
|
||||
self.message = args[3]
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f"Assert: [{self.filename}:{self.function}:{self.line}]: {self.message}"
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
return f"[Assert: {self.message}]"
|
||||
|
||||
@@ -360,21 +385,21 @@ class Tracer:
|
||||
def __init__(self, args):
|
||||
self.window = args[0]
|
||||
self.message = args[1]
|
||||
|
||||
|
||||
def _on_warning(self, args):
|
||||
warningInfo = Tracer.WarningInfo(args)
|
||||
self.warnings.append(warningInfo)
|
||||
Report.info("Tracer caught Warning: %s" % warningInfo.message)
|
||||
self.has_warnings = True
|
||||
return False
|
||||
|
||||
|
||||
def _on_error(self, args):
|
||||
errorInfo = Tracer.ErrorInfo(args)
|
||||
self.errors.append(errorInfo)
|
||||
Report.info("Tracer caught Error: %s" % errorInfo.message)
|
||||
self.has_errors = True
|
||||
return False
|
||||
|
||||
|
||||
def _on_assert(self, args):
|
||||
assertInfo = Tracer.AssertInfo(args)
|
||||
self.asserts.append(assertInfo)
|
||||
@@ -436,6 +461,7 @@ class AngleHelper:
|
||||
|
||||
def vector3_str(vector3):
|
||||
return "(x: {:.2f}, y: {:.2f}, z: {:.2f})".format(vector3.x, vector3.y, vector3.z)
|
||||
|
||||
|
||||
|
||||
def aabb_str(aabb):
|
||||
return "[Min: %s, Max: %s]" % (vector3_str(aabb.min), vector3_str(aabb.max))
|
||||
|
||||
@@ -525,10 +525,6 @@ class TestAutomation(TestAutomationBase):
|
||||
from .tests.joints import Joints_BallNoLimitsConstrained as test_module
|
||||
self._run_test(request, workspace, editor, test_module)
|
||||
|
||||
def test_Joints_FixedLeadFollowerCollide(self, request, workspace, editor, launcher_platform):
|
||||
from .tests.joints import Joints_FixedLeadFollowerCollide as test_module
|
||||
self._run_test(request, workspace, editor, test_module)
|
||||
|
||||
def test_Joints_GlobalFrameConstrained(self, request, workspace, editor, launcher_platform):
|
||||
from .tests.joints import Joints_GlobalFrameConstrained as test_module
|
||||
self._run_test(request, workspace, editor, test_module)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user