浏览代码

Allow 3D demos to fallback to GLES2

A GLES2-specific tweak is now documented for the GUI in 3D demo.

This also tweaks shadow quality and performance to find a better
balance and result in smoother shadows, including when using GLES2
(thanks to the use of PCF13 shadow filter mode).

In demos that allow falling back to GLES2, ETC1 texture import
is enabled to allow exporting to Android or HTML5 without having
to tweak anything.
Hugo Locurcio 3 年之前
父节点
当前提交
cbb5c94c6f
共有 49 个文件被更改,包括 185 次插入134 次删除
  1. 3 2
      3d/ik/addons/sade/editor_gizmo_texture.png.import
  2. 1 0
      3d/ik/fps/fps_example.tscn
  3. 3 2
      3d/ik/fps/gun_textures.png.import
  4. 3 2
      3d/ik/model/godot_battle_bot_colors.png.import
  5. 3 2
      3d/ik/model/godot_battle_bot_emission.png.import
  6. 3 0
      3d/ik/project.godot
  7. 0 0
      3d/kinematic_character/level.tscn
  8. 3 2
      3d/kinematic_character/models/white_wood.png.import
  9. 3 0
      3d/kinematic_character/project.godot
  10. 6 1
      3d/material_testers/project.godot
  11. 3 2
      3d/material_testers/test_materials/aluminium_albedo.png.import
  12. 3 2
      3d/material_testers/test_materials/aluminium_flow.png.import
  13. 3 2
      3d/material_testers/test_materials/aluminium_normal.png.import
  14. 3 2
      3d/material_testers/test_materials/marble_albedo.png.import
  15. 3 2
      3d/material_testers/test_materials/rock_albedo.jpg.import
  16. 3 2
      3d/material_testers/test_materials/rock_ao.jpg.import
  17. 3 2
      3d/material_testers/test_materials/rock_depth.jpg.import
  18. 3 2
      3d/material_testers/test_materials/rock_metal.jpg.import
  19. 3 2
      3d/material_testers/test_materials/rock_rough.jpg.import
  20. 3 2
      3d/material_testers/test_materials/sand_albedo.jpg.import
  21. 3 2
      3d/material_testers/test_materials/sand_metal.jpg.import
  22. 3 2
      3d/material_testers/test_materials/sand_normal.jpg.import
  23. 3 2
      3d/material_testers/test_materials/sand_rough.jpg.import
  24. 3 2
      3d/material_testers/test_materials/texture_bricks.jpg.import
  25. 3 2
      3d/material_testers/test_materials/texture_bricks_depth.jpg.import
  26. 3 2
      3d/material_testers/test_materials/texture_bricks_metal.jpg.import
  27. 3 2
      3d/material_testers/test_materials/texture_bricks_normal.jpg.import
  28. 3 2
      3d/material_testers/test_materials/texture_cheese_albedo.png.import
  29. 3 2
      3d/material_testers/test_materials/texture_cheese_ao.png.import
  30. 3 2
      3d/material_testers/test_materials/texture_cheese_depth.png.import
  31. 3 2
      3d/material_testers/test_materials/texture_cheese_normal.png.import
  32. 3 2
      3d/material_testers/test_materials/texture_rock_albedo.png.import
  33. 3 2
      3d/material_testers/test_materials/texture_rock_ao.png.import
  34. 3 2
      3d/material_testers/test_materials/texture_rock_depth.png.import
  35. 3 2
      3d/material_testers/test_materials/texture_rock_metal.png.import
  36. 3 2
      3d/material_testers/test_materials/texture_rock_normal.png.import
  37. 3 2
      3d/material_testers/test_materials/texture_wood.png.import
  38. 3 2
      3d/material_testers/test_materials/wool_albedo.png.import
  39. 3 2
      3d/material_testers/test_materials/wool_depth.png.import
  40. 15 22
      3d/platformer/coin/coin.tscn
  41. 17 23
      3d/platformer/enemy/enemy.tscn
  42. 3 2
      3d/platformer/enemy/shine.png.import
  43. 9 15
      3d/platformer/player/bullet/bullet.tscn
  44. 1 1
      3d/platformer/player/player.tscn
  45. 3 0
      3d/platformer/project.godot
  46. 6 2
      3d/platformer/stage/stage.tscn
  47. 5 0
      viewport/3d_in_2d/project.godot
  48. 6 0
      viewport/gui_in_3d/gui_3d.gd
  49. 5 0
      viewport/gui_in_3d/project.godot

+ 3 - 2
3d/ik/addons/sade/editor_gizmo_texture.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.s3tc.stex"
 path.etc2="res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.etc2.stex"
+path.etc="res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://addons/sade/editor_gizmo_texture.png"
-dest_files=[ "res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.s3tc.stex", "res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.etc2.stex" ]
+dest_files=[ "res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.s3tc.stex", "res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.etc2.stex", "res://.import/editor_gizmo_texture.png-be14d96c2d7829c8511766ceb15d5a7f.etc.stex" ]
 
 [params]
 

+ 1 - 0
3d/ik/fps/fps_example.tscn

@@ -377,6 +377,7 @@ shape = SubResource( 6 )
 transform = Transform( 0.388878, -0.754027, 0.529355, 0, 0.574581, 0.818448, -0.921289, -0.318277, 0.223442, -9.77531, 11.5204, 11.766 )
 light_color = Color( 1, 0.925598, 0.820313, 1 )
 shadow_enabled = true
+directional_shadow_mode = 0
 
 [node name="Control" type="Control" parent="."]
 anchor_right = 1.0

+ 3 - 2
3d/ik/fps/gun_textures.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.s3tc.stex"
 path.etc2="res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.etc2.stex"
+path.etc="res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://fps/gun_textures.png"
-dest_files=[ "res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.s3tc.stex", "res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.etc2.stex" ]
+dest_files=[ "res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.s3tc.stex", "res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.etc2.stex", "res://.import/gun_textures.png-ff36b37294b2a7b89d70248caaea5848.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/ik/model/godot_battle_bot_colors.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.s3tc.stex"
 path.etc2="res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.etc2.stex"
+path.etc="res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://model/godot_battle_bot_colors.png"
-dest_files=[ "res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.s3tc.stex", "res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.etc2.stex" ]
+dest_files=[ "res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.s3tc.stex", "res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.etc2.stex", "res://.import/godot_battle_bot_colors.png-db0edfc662d0fffff287aad7600ab21a.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/ik/model/godot_battle_bot_emission.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.s3tc.stex"
 path.etc2="res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.etc2.stex"
+path.etc="res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://model/godot_battle_bot_emission.png"
-dest_files=[ "res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.s3tc.stex", "res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.etc2.stex" ]
+dest_files=[ "res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.s3tc.stex", "res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.etc2.stex", "res://.import/godot_battle_bot_emission.png-59fd27c1839e5b7c5584f3c2131bce33.etc.stex" ]
 
 [params]
 

+ 3 - 0
3d/ik/project.godot

@@ -29,5 +29,8 @@ enabled=PoolStringArray( "sade" )
 
 [rendering]
 
+quality/driver/fallback_to_gles2=true
+vram_compression/import_etc=true
+quality/shadows/filter_mode=2
 quality/filters/msaa=2
 environment/default_environment="res://default_env.tres"

文件差异内容过多而无法显示
+ 0 - 0
3d/kinematic_character/level.tscn


+ 3 - 2
3d/kinematic_character/models/white_wood.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.s3tc.stex"
 path.etc2="res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.etc2.stex"
+path.etc="res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://models/white_wood.png"
-dest_files=[ "res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.s3tc.stex", "res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.etc2.stex" ]
+dest_files=[ "res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.s3tc.stex", "res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.etc2.stex", "res://.import/white_wood.png-821b7bf9b3881778c9bff1c965d8a87c.etc.stex" ]
 
 [params]
 

+ 3 - 0
3d/kinematic_character/project.godot

@@ -83,6 +83,9 @@ shadow_filter=3
 
 [rendering]
 
+quality/driver/fallback_to_gles2=true
+vram_compression/import_etc=true
+quality/shadows/filter_mode=2
 quality/filters/anisotropic_filter_level=16
 quality/filters/msaa=2
 environment/default_environment="res://default_env.tres"

+ 6 - 1
3d/material_testers/project.godot

@@ -34,9 +34,14 @@ multithread/thread_rid_pool_prealloc=60
 
 [rendering]
 
+quality/driver/fallback_to_gles2=true
 quality/intended_usage/framebuffer_allocation=3
-quality/filters/anisotropic_filter_level=16
+vram_compression/import_etc=true
 vram_compression/import_etc2=false
+quality/shadow_atlas/size=1024
+quality/shadow_atlas/size.mobile=512
+quality/shadows/filter_mode=2
+quality/filters/anisotropic_filter_level=16
 quality/filters/msaa=2
 quality/filters/msaa.mobile=0
 quality/filters/anisotropic_filter_level.mobile=4

+ 3 - 2
3d/material_testers/test_materials/aluminium_albedo.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/aluminium_albedo.png-a68e22c8a951430ab431b2a7307e8bc7.s3tc.stex"
+path.etc="res://.import/aluminium_albedo.png-a68e22c8a951430ab431b2a7307e8bc7.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/aluminium_albedo.png"
-dest_files=[ "res://.import/aluminium_albedo.png-a68e22c8a951430ab431b2a7307e8bc7.s3tc.stex" ]
+dest_files=[ "res://.import/aluminium_albedo.png-a68e22c8a951430ab431b2a7307e8bc7.s3tc.stex", "res://.import/aluminium_albedo.png-a68e22c8a951430ab431b2a7307e8bc7.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/aluminium_flow.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/aluminium_flow.png-93fdac7ed0fa884674e32e5ec0c6d690.s3tc.stex"
+path.etc="res://.import/aluminium_flow.png-93fdac7ed0fa884674e32e5ec0c6d690.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/aluminium_flow.png"
-dest_files=[ "res://.import/aluminium_flow.png-93fdac7ed0fa884674e32e5ec0c6d690.s3tc.stex" ]
+dest_files=[ "res://.import/aluminium_flow.png-93fdac7ed0fa884674e32e5ec0c6d690.s3tc.stex", "res://.import/aluminium_flow.png-93fdac7ed0fa884674e32e5ec0c6d690.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/aluminium_normal.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/aluminium_normal.png-ff9bf84211f307b1d9e8bf86ebea04b1.s3tc.stex"
+path.etc="res://.import/aluminium_normal.png-ff9bf84211f307b1d9e8bf86ebea04b1.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/aluminium_normal.png"
-dest_files=[ "res://.import/aluminium_normal.png-ff9bf84211f307b1d9e8bf86ebea04b1.s3tc.stex" ]
+dest_files=[ "res://.import/aluminium_normal.png-ff9bf84211f307b1d9e8bf86ebea04b1.s3tc.stex", "res://.import/aluminium_normal.png-ff9bf84211f307b1d9e8bf86ebea04b1.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/marble_albedo.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/marble_albedo.png-47e5ec5352a78eb204ccaf317de65697.s3tc.stex"
+path.etc="res://.import/marble_albedo.png-47e5ec5352a78eb204ccaf317de65697.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/marble_albedo.png"
-dest_files=[ "res://.import/marble_albedo.png-47e5ec5352a78eb204ccaf317de65697.s3tc.stex" ]
+dest_files=[ "res://.import/marble_albedo.png-47e5ec5352a78eb204ccaf317de65697.s3tc.stex", "res://.import/marble_albedo.png-47e5ec5352a78eb204ccaf317de65697.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/rock_albedo.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/rock_albedo.jpg-65fe78b8c7d44da07721bb783fdef67a.s3tc.stex"
+path.etc="res://.import/rock_albedo.jpg-65fe78b8c7d44da07721bb783fdef67a.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/rock_albedo.jpg"
-dest_files=[ "res://.import/rock_albedo.jpg-65fe78b8c7d44da07721bb783fdef67a.s3tc.stex" ]
+dest_files=[ "res://.import/rock_albedo.jpg-65fe78b8c7d44da07721bb783fdef67a.s3tc.stex", "res://.import/rock_albedo.jpg-65fe78b8c7d44da07721bb783fdef67a.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/rock_ao.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/rock_ao.jpg-7578b4ab1e595c076d796172ca68cfa6.s3tc.stex"
+path.etc="res://.import/rock_ao.jpg-7578b4ab1e595c076d796172ca68cfa6.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/rock_ao.jpg"
-dest_files=[ "res://.import/rock_ao.jpg-7578b4ab1e595c076d796172ca68cfa6.s3tc.stex" ]
+dest_files=[ "res://.import/rock_ao.jpg-7578b4ab1e595c076d796172ca68cfa6.s3tc.stex", "res://.import/rock_ao.jpg-7578b4ab1e595c076d796172ca68cfa6.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/rock_depth.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/rock_depth.jpg-4080fbc6202f837d0b0deef2c981bad4.s3tc.stex"
+path.etc="res://.import/rock_depth.jpg-4080fbc6202f837d0b0deef2c981bad4.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/rock_depth.jpg"
-dest_files=[ "res://.import/rock_depth.jpg-4080fbc6202f837d0b0deef2c981bad4.s3tc.stex" ]
+dest_files=[ "res://.import/rock_depth.jpg-4080fbc6202f837d0b0deef2c981bad4.s3tc.stex", "res://.import/rock_depth.jpg-4080fbc6202f837d0b0deef2c981bad4.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/rock_metal.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/rock_metal.jpg-8defa2e9d8169c7a08962c4d1f3e6354.s3tc.stex"
+path.etc="res://.import/rock_metal.jpg-8defa2e9d8169c7a08962c4d1f3e6354.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/rock_metal.jpg"
-dest_files=[ "res://.import/rock_metal.jpg-8defa2e9d8169c7a08962c4d1f3e6354.s3tc.stex" ]
+dest_files=[ "res://.import/rock_metal.jpg-8defa2e9d8169c7a08962c4d1f3e6354.s3tc.stex", "res://.import/rock_metal.jpg-8defa2e9d8169c7a08962c4d1f3e6354.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/rock_rough.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/rock_rough.jpg-a18116680c5cb62b9f0632460fe30f62.s3tc.stex"
+path.etc="res://.import/rock_rough.jpg-a18116680c5cb62b9f0632460fe30f62.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/rock_rough.jpg"
-dest_files=[ "res://.import/rock_rough.jpg-a18116680c5cb62b9f0632460fe30f62.s3tc.stex" ]
+dest_files=[ "res://.import/rock_rough.jpg-a18116680c5cb62b9f0632460fe30f62.s3tc.stex", "res://.import/rock_rough.jpg-a18116680c5cb62b9f0632460fe30f62.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/sand_albedo.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/sand_albedo.jpg-c03140f13a9e6c9b1c6fe52f92bc0e1b.s3tc.stex"
+path.etc="res://.import/sand_albedo.jpg-c03140f13a9e6c9b1c6fe52f92bc0e1b.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/sand_albedo.jpg"
-dest_files=[ "res://.import/sand_albedo.jpg-c03140f13a9e6c9b1c6fe52f92bc0e1b.s3tc.stex" ]
+dest_files=[ "res://.import/sand_albedo.jpg-c03140f13a9e6c9b1c6fe52f92bc0e1b.s3tc.stex", "res://.import/sand_albedo.jpg-c03140f13a9e6c9b1c6fe52f92bc0e1b.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/sand_metal.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/sand_metal.jpg-bc79f66c3e18060c7cbaa67c44681910.s3tc.stex"
+path.etc="res://.import/sand_metal.jpg-bc79f66c3e18060c7cbaa67c44681910.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/sand_metal.jpg"
-dest_files=[ "res://.import/sand_metal.jpg-bc79f66c3e18060c7cbaa67c44681910.s3tc.stex" ]
+dest_files=[ "res://.import/sand_metal.jpg-bc79f66c3e18060c7cbaa67c44681910.s3tc.stex", "res://.import/sand_metal.jpg-bc79f66c3e18060c7cbaa67c44681910.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/sand_normal.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/sand_normal.jpg-7a18b411efc93de1cffd09e24f6336b4.s3tc.stex"
+path.etc="res://.import/sand_normal.jpg-7a18b411efc93de1cffd09e24f6336b4.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/sand_normal.jpg"
-dest_files=[ "res://.import/sand_normal.jpg-7a18b411efc93de1cffd09e24f6336b4.s3tc.stex" ]
+dest_files=[ "res://.import/sand_normal.jpg-7a18b411efc93de1cffd09e24f6336b4.s3tc.stex", "res://.import/sand_normal.jpg-7a18b411efc93de1cffd09e24f6336b4.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/sand_rough.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/sand_rough.jpg-14616e257ba8a3726af90b2162c4ea2b.s3tc.stex"
+path.etc="res://.import/sand_rough.jpg-14616e257ba8a3726af90b2162c4ea2b.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/sand_rough.jpg"
-dest_files=[ "res://.import/sand_rough.jpg-14616e257ba8a3726af90b2162c4ea2b.s3tc.stex" ]
+dest_files=[ "res://.import/sand_rough.jpg-14616e257ba8a3726af90b2162c4ea2b.s3tc.stex", "res://.import/sand_rough.jpg-14616e257ba8a3726af90b2162c4ea2b.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_bricks.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_bricks.jpg-c5a7a817bf05cfd9e63ae7aecdfad44c.s3tc.stex"
+path.etc="res://.import/texture_bricks.jpg-c5a7a817bf05cfd9e63ae7aecdfad44c.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_bricks.jpg"
-dest_files=[ "res://.import/texture_bricks.jpg-c5a7a817bf05cfd9e63ae7aecdfad44c.s3tc.stex" ]
+dest_files=[ "res://.import/texture_bricks.jpg-c5a7a817bf05cfd9e63ae7aecdfad44c.s3tc.stex", "res://.import/texture_bricks.jpg-c5a7a817bf05cfd9e63ae7aecdfad44c.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_bricks_depth.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_bricks_depth.jpg-fed037b05656973f46c8d8fc0dae33d5.s3tc.stex"
+path.etc="res://.import/texture_bricks_depth.jpg-fed037b05656973f46c8d8fc0dae33d5.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_bricks_depth.jpg"
-dest_files=[ "res://.import/texture_bricks_depth.jpg-fed037b05656973f46c8d8fc0dae33d5.s3tc.stex" ]
+dest_files=[ "res://.import/texture_bricks_depth.jpg-fed037b05656973f46c8d8fc0dae33d5.s3tc.stex", "res://.import/texture_bricks_depth.jpg-fed037b05656973f46c8d8fc0dae33d5.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_bricks_metal.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_bricks_metal.jpg-0cfc783b7a5646c7f79c1bfc856a0169.s3tc.stex"
+path.etc="res://.import/texture_bricks_metal.jpg-0cfc783b7a5646c7f79c1bfc856a0169.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_bricks_metal.jpg"
-dest_files=[ "res://.import/texture_bricks_metal.jpg-0cfc783b7a5646c7f79c1bfc856a0169.s3tc.stex" ]
+dest_files=[ "res://.import/texture_bricks_metal.jpg-0cfc783b7a5646c7f79c1bfc856a0169.s3tc.stex", "res://.import/texture_bricks_metal.jpg-0cfc783b7a5646c7f79c1bfc856a0169.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_bricks_normal.jpg.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_bricks_normal.jpg-605ba8666210a56b09eb0b2392bd6355.s3tc.stex"
+path.etc="res://.import/texture_bricks_normal.jpg-605ba8666210a56b09eb0b2392bd6355.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_bricks_normal.jpg"
-dest_files=[ "res://.import/texture_bricks_normal.jpg-605ba8666210a56b09eb0b2392bd6355.s3tc.stex" ]
+dest_files=[ "res://.import/texture_bricks_normal.jpg-605ba8666210a56b09eb0b2392bd6355.s3tc.stex", "res://.import/texture_bricks_normal.jpg-605ba8666210a56b09eb0b2392bd6355.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_cheese_albedo.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_cheese_albedo.png-47db78359d020535d042fccfe547c563.s3tc.stex"
+path.etc="res://.import/texture_cheese_albedo.png-47db78359d020535d042fccfe547c563.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_cheese_albedo.png"
-dest_files=[ "res://.import/texture_cheese_albedo.png-47db78359d020535d042fccfe547c563.s3tc.stex" ]
+dest_files=[ "res://.import/texture_cheese_albedo.png-47db78359d020535d042fccfe547c563.s3tc.stex", "res://.import/texture_cheese_albedo.png-47db78359d020535d042fccfe547c563.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_cheese_ao.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_cheese_ao.png-db37cd87a9560149bf42629f84a8517d.s3tc.stex"
+path.etc="res://.import/texture_cheese_ao.png-db37cd87a9560149bf42629f84a8517d.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_cheese_ao.png"
-dest_files=[ "res://.import/texture_cheese_ao.png-db37cd87a9560149bf42629f84a8517d.s3tc.stex" ]
+dest_files=[ "res://.import/texture_cheese_ao.png-db37cd87a9560149bf42629f84a8517d.s3tc.stex", "res://.import/texture_cheese_ao.png-db37cd87a9560149bf42629f84a8517d.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_cheese_depth.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_cheese_depth.png-71cbe5ab2c9f4e2343f1082a376b299f.s3tc.stex"
+path.etc="res://.import/texture_cheese_depth.png-71cbe5ab2c9f4e2343f1082a376b299f.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_cheese_depth.png"
-dest_files=[ "res://.import/texture_cheese_depth.png-71cbe5ab2c9f4e2343f1082a376b299f.s3tc.stex" ]
+dest_files=[ "res://.import/texture_cheese_depth.png-71cbe5ab2c9f4e2343f1082a376b299f.s3tc.stex", "res://.import/texture_cheese_depth.png-71cbe5ab2c9f4e2343f1082a376b299f.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_cheese_normal.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_cheese_normal.png-cfbb1f914512de34b962a84fd60e3641.s3tc.stex"
+path.etc="res://.import/texture_cheese_normal.png-cfbb1f914512de34b962a84fd60e3641.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_cheese_normal.png"
-dest_files=[ "res://.import/texture_cheese_normal.png-cfbb1f914512de34b962a84fd60e3641.s3tc.stex" ]
+dest_files=[ "res://.import/texture_cheese_normal.png-cfbb1f914512de34b962a84fd60e3641.s3tc.stex", "res://.import/texture_cheese_normal.png-cfbb1f914512de34b962a84fd60e3641.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_rock_albedo.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_rock_albedo.png-02df27b2a7e2344422e9ac7cdaec70ee.s3tc.stex"
+path.etc="res://.import/texture_rock_albedo.png-02df27b2a7e2344422e9ac7cdaec70ee.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_rock_albedo.png"
-dest_files=[ "res://.import/texture_rock_albedo.png-02df27b2a7e2344422e9ac7cdaec70ee.s3tc.stex" ]
+dest_files=[ "res://.import/texture_rock_albedo.png-02df27b2a7e2344422e9ac7cdaec70ee.s3tc.stex", "res://.import/texture_rock_albedo.png-02df27b2a7e2344422e9ac7cdaec70ee.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_rock_ao.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_rock_ao.png-b7008000c4f1458c49be4996848f1a6e.s3tc.stex"
+path.etc="res://.import/texture_rock_ao.png-b7008000c4f1458c49be4996848f1a6e.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_rock_ao.png"
-dest_files=[ "res://.import/texture_rock_ao.png-b7008000c4f1458c49be4996848f1a6e.s3tc.stex" ]
+dest_files=[ "res://.import/texture_rock_ao.png-b7008000c4f1458c49be4996848f1a6e.s3tc.stex", "res://.import/texture_rock_ao.png-b7008000c4f1458c49be4996848f1a6e.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_rock_depth.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_rock_depth.png-e02f2dbd984045ed2373ac9f5ad46460.s3tc.stex"
+path.etc="res://.import/texture_rock_depth.png-e02f2dbd984045ed2373ac9f5ad46460.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_rock_depth.png"
-dest_files=[ "res://.import/texture_rock_depth.png-e02f2dbd984045ed2373ac9f5ad46460.s3tc.stex" ]
+dest_files=[ "res://.import/texture_rock_depth.png-e02f2dbd984045ed2373ac9f5ad46460.s3tc.stex", "res://.import/texture_rock_depth.png-e02f2dbd984045ed2373ac9f5ad46460.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_rock_metal.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_rock_metal.png-53fdacd914e7bfa258d07a88f0644507.s3tc.stex"
+path.etc="res://.import/texture_rock_metal.png-53fdacd914e7bfa258d07a88f0644507.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_rock_metal.png"
-dest_files=[ "res://.import/texture_rock_metal.png-53fdacd914e7bfa258d07a88f0644507.s3tc.stex" ]
+dest_files=[ "res://.import/texture_rock_metal.png-53fdacd914e7bfa258d07a88f0644507.s3tc.stex", "res://.import/texture_rock_metal.png-53fdacd914e7bfa258d07a88f0644507.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_rock_normal.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_rock_normal.png-c5ae054e70e4a6414518c2178ea9b0b7.s3tc.stex"
+path.etc="res://.import/texture_rock_normal.png-c5ae054e70e4a6414518c2178ea9b0b7.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_rock_normal.png"
-dest_files=[ "res://.import/texture_rock_normal.png-c5ae054e70e4a6414518c2178ea9b0b7.s3tc.stex" ]
+dest_files=[ "res://.import/texture_rock_normal.png-c5ae054e70e4a6414518c2178ea9b0b7.s3tc.stex", "res://.import/texture_rock_normal.png-c5ae054e70e4a6414518c2178ea9b0b7.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/texture_wood.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/texture_wood.png-e3109b4e15fb09c6edce5029c4f30771.s3tc.stex"
+path.etc="res://.import/texture_wood.png-e3109b4e15fb09c6edce5029c4f30771.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/texture_wood.png"
-dest_files=[ "res://.import/texture_wood.png-e3109b4e15fb09c6edce5029c4f30771.s3tc.stex" ]
+dest_files=[ "res://.import/texture_wood.png-e3109b4e15fb09c6edce5029c4f30771.s3tc.stex", "res://.import/texture_wood.png-e3109b4e15fb09c6edce5029c4f30771.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/wool_albedo.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/wool_albedo.png-a41e4f37762b4ccb66c8b36c42febef1.s3tc.stex"
+path.etc="res://.import/wool_albedo.png-a41e4f37762b4ccb66c8b36c42febef1.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/wool_albedo.png"
-dest_files=[ "res://.import/wool_albedo.png-a41e4f37762b4ccb66c8b36c42febef1.s3tc.stex" ]
+dest_files=[ "res://.import/wool_albedo.png-a41e4f37762b4ccb66c8b36c42febef1.s3tc.stex", "res://.import/wool_albedo.png-a41e4f37762b4ccb66c8b36c42febef1.etc.stex" ]
 
 [params]
 

+ 3 - 2
3d/material_testers/test_materials/wool_depth.png.import

@@ -3,15 +3,16 @@
 importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/wool_depth.png-47d3fa1d6b4aa0857f735cbad6b1556e.s3tc.stex"
+path.etc="res://.import/wool_depth.png-47d3fa1d6b4aa0857f735cbad6b1556e.etc.stex"
 metadata={
-"imported_formats": [ "s3tc" ],
+"imported_formats": [ "s3tc", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://test_materials/wool_depth.png"
-dest_files=[ "res://.import/wool_depth.png-47d3fa1d6b4aa0857f735cbad6b1556e.s3tc.stex" ]
+dest_files=[ "res://.import/wool_depth.png-47d3fa1d6b4aa0857f735cbad6b1556e.s3tc.stex", "res://.import/wool_depth.png-47d3fa1d6b4aa0857f735cbad6b1556e.etc.stex" ]
 
 [params]
 

+ 15 - 22
3d/platformer/coin/coin.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=14 format=2]
+[gd_scene load_steps=12 format=2]
 
 [ext_resource path="res://coin/coin.gd" type="Script" id=1]
 [ext_resource path="res://coin/sound_coin.wav" type="AudioStream" id=2]
@@ -88,21 +88,7 @@ tracks/2/keys = {
 [sub_resource type="SphereShape" id=5]
 radius = 0.312546
 
-[sub_resource type="Gradient" id=6]
-colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 1, 0 )
-
-[sub_resource type="GradientTexture" id=7]
-gradient = SubResource( 6 )
-
-[sub_resource type="ParticlesMaterial" id=8]
-emission_shape = 2
-emission_box_extents = Vector3( 0.3, 0.3, 0.3 )
-initial_velocity = 5.51
-angular_velocity = 4.27461e-05
-scale = 0.1
-color_ramp = SubResource( 7 )
-
-[sub_resource type="SpatialMaterial" id=9]
+[sub_resource type="SpatialMaterial" id=6]
 flags_transparent = true
 flags_unshaded = true
 vertex_color_use_as_albedo = true
@@ -115,8 +101,11 @@ particles_anim_loop = false
 albedo_color = Color( 1, 1, 0.759137, 1 )
 albedo_texture = ExtResource( 3 )
 
-[sub_resource type="QuadMesh" id=10]
-material = SubResource( 9 )
+[sub_resource type="QuadMesh" id=7]
+material = SubResource( 6 )
+
+[sub_resource type="Gradient" id=8]
+colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 1, 0 )
 
 [node name="Coin" type="Area"]
 input_ray_pickable = false
@@ -148,13 +137,17 @@ freeze_bodies = false
 [node name="Sound" type="AudioStreamPlayer3D" parent="."]
 stream = ExtResource( 2 )
 
-[node name="Particles" type="Particles" parent="."]
+[node name="Particles" type="CPUParticles" parent="."]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000732422, 0.542954, 0 )
 emitting = false
 one_shot = true
 explosiveness = 1.0
-visibility_aabb = AABB( -4.12919, -4, -4, 8.25837, 8, 8 )
-process_material = SubResource( 8 )
-draw_pass_1 = SubResource( 10 )
+mesh = SubResource( 7 )
+emission_shape = 2
+emission_box_extents = Vector3( 0.3, 0.3, 0.3 )
+initial_velocity = 5.51
+angular_velocity = 4.27461e-05
+scale_amount = 0.1
+color_ramp = SubResource( 8 )
 
 [connection signal="body_entered" from="." to="." method="_on_coin_body_enter"]

+ 17 - 23
3d/platformer/enemy/enemy.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=25 format=2]
+[gd_scene load_steps=23 format=2]
 
 [ext_resource path="res://enemy/enemy.gd" type="Script" id=1]
 [ext_resource path="res://enemy/robot_walk.wav" type="AudioStream" id=2]
@@ -467,23 +467,7 @@ extents = Vector3( 0.57253, 0.388409, 0.560511 )
 [sub_resource type="AudioStreamRandomPitch" id=14]
 audio_stream = ExtResource( 2 )
 
-[sub_resource type="Curve" id=15]
-max_value = 3.0
-_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.0349232, 2.1123 ), 0.0, 0.0, 0, 0, Vector2( 0.151192, 0.823242 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
-
-[sub_resource type="CurveTexture" id=16]
-curve = SubResource( 15 )
-
-[sub_resource type="ParticlesMaterial" id=17]
-emission_shape = 1
-emission_sphere_radius = 1.0
-gravity = Vector3( 0, 0, 0 )
-initial_velocity = 0.15
-angular_velocity = 351.05
-angular_velocity_random = 1.0
-scale_curve = SubResource( 16 )
-
-[sub_resource type="SpatialMaterial" id=18]
+[sub_resource type="SpatialMaterial" id=15]
 flags_transparent = true
 flags_unshaded = true
 params_blend_mode = 1
@@ -493,8 +477,12 @@ particles_anim_v_frames = 1
 particles_anim_loop = false
 albedo_texture = ExtResource( 5 )
 
-[sub_resource type="QuadMesh" id=19]
-material = SubResource( 18 )
+[sub_resource type="QuadMesh" id=16]
+material = SubResource( 15 )
+
+[sub_resource type="Curve" id=17]
+max_value = 3.0
+_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.0349232, 2.1123 ), 0.0, 0.0, 0, 0, Vector2( 0.151192, 0.823242 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
 
 [node name="Enemy" type="RigidBody"]
 mode = 2
@@ -632,10 +620,16 @@ stream = ExtResource( 4 )
 unit_db = 18.0
 doppler_tracking = 1
 
-[node name="Explosion" type="Particles" parent="."]
+[node name="Explosion" type="CPUParticles" parent="."]
 emitting = false
 lifetime = 0.5
 one_shot = true
 explosiveness = 1.0
-process_material = SubResource( 17 )
-draw_pass_1 = SubResource( 19 )
+mesh = SubResource( 16 )
+emission_shape = 1
+emission_sphere_radius = 1.0
+gravity = Vector3( 0, 0, 0 )
+initial_velocity = 0.15
+angular_velocity = 351.05
+angular_velocity_random = 1.0
+scale_amount_curve = SubResource( 17 )

+ 3 - 2
3d/platformer/enemy/shine.png.import

@@ -4,15 +4,16 @@ importer="texture"
 type="StreamTexture"
 path.s3tc="res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.s3tc.stex"
 path.etc2="res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc2.stex"
+path.etc="res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc.stex"
 metadata={
-"imported_formats": [ "s3tc", "etc2" ],
+"imported_formats": [ "s3tc", "etc2", "etc" ],
 "vram_texture": true
 }
 
 [deps]
 
 source_file="res://enemy/shine.png"
-dest_files=[ "res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.s3tc.stex", "res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc2.stex" ]
+dest_files=[ "res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.s3tc.stex", "res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc2.stex", "res://.import/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc.stex" ]
 
 [params]
 

+ 9 - 15
3d/platformer/player/bullet/bullet.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=10 format=2]
+[gd_scene load_steps=8 format=2]
 
 [ext_resource path="res://player/bullet/bullet.gd" type="Script" id=1]
 
@@ -79,16 +79,7 @@ tracks/2/keys = {
 [sub_resource type="Gradient" id=5]
 colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 1, 0 )
 
-[sub_resource type="GradientTexture" id=6]
-gradient = SubResource( 5 )
-
-[sub_resource type="ParticlesMaterial" id=7]
-spread = 0.0
-gravity = Vector3( 0, 0, 0 )
-scale = 0.3
-color_ramp = SubResource( 6 )
-
-[sub_resource type="SphereShape" id=8]
+[sub_resource type="SphereShape" id=6]
 radius = 0.27
 
 [node name="Bullet" type="RigidBody"]
@@ -107,14 +98,17 @@ material/0 = SubResource( 3 )
 autoplay = "life"
 anims/life = SubResource( 4 )
 
-[node name="Particles" type="Particles" parent="."]
+[node name="Particles" type="CPUParticles" parent="."]
 amount = 16
 lifetime = 0.4
 fixed_fps = 60
 fract_delta = false
 local_coords = false
-process_material = SubResource( 7 )
-draw_pass_1 = SubResource( 2 )
+mesh = SubResource( 2 )
+spread = 0.0
+gravity = Vector3( 0, 0, 0 )
+scale_amount = 0.3
+color_ramp = SubResource( 5 )
 
 [node name="CollisionShape" type="CollisionShape" parent="."]
-shape = SubResource( 8 )
+shape = SubResource( 6 )

+ 1 - 1
3d/platformer/player/player.tscn

@@ -1656,7 +1656,7 @@ nodes/state/node = SubResource( 21 )
 nodes/state/position = Vector2( 440, 0 )
 nodes/walk/node = SubResource( 22 )
 nodes/walk/position = Vector2( -40, -240 )
-node_connections = [ "scale", 0, "walk", "output", 0, "gun", "state", 0, "scale", "state", 1, "air_dir", "air_dir", 0, "Animation 3", "air_dir", 1, "Animation 4", "gun", 0, "state", "gun", 1, "Animation 5", "walk", 0, "Animation", "walk", 1, "Animation 2" ]
+node_connections = [ "scale", 0, "walk", "state", 0, "scale", "state", 1, "air_dir", "output", 0, "gun", "air_dir", 0, "Animation 3", "air_dir", 1, "Animation 4", "gun", 0, "state", "gun", 1, "Animation 5", "walk", 0, "Animation", "walk", 1, "Animation 2" ]
 
 [node name="Player" type="KinematicBody"]
 script = ExtResource( 1 )

+ 3 - 0
3d/platformer/project.godot

@@ -140,7 +140,10 @@ multithread/thread_rid_pool_prealloc=60
 
 [rendering]
 
+quality/driver/fallback_to_gles2=true
 quality/intended_usage/framebuffer_allocation=3
+vram_compression/import_etc=true
+quality/shadows/filter_mode=2
 quality/filters/anisotropic_filter_level=16
 quality/filters/msaa=2
 quality/filters/anisotropic_filter_level.mobile=4

文件差异内容过多而无法显示
+ 6 - 2
3d/platformer/stage/stage.tscn


+ 5 - 0
viewport/3d_in_2d/project.godot

@@ -24,3 +24,8 @@ window/stretch/aspect="expand"
 [gdnative]
 
 singletons=[  ]
+
+[rendering]
+
+quality/driver/fallback_to_gles2=true
+vram_compression/import_etc=true

+ 6 - 0
viewport/gui_in_3d/gui_3d.gd

@@ -22,6 +22,12 @@ func _ready():
 	if node_quad.get_surface_material(0).params_billboard_mode == 0:
 		set_process(false)
 
+	if OS.get_current_video_driver() == OS.VIDEO_DRIVER_GLES2:
+		# Required to prevent the texture from being too dark when using GLES2.
+		# This should be left to `true` in GLES3 to prevent the texture from looking
+		# washed out there.
+		node_quad.get_surface_material(0).flags_albedo_tex_force_srgb = false
+
 
 func _process(_delta):
 	# NOTE: Remove this function if you don't plan on using billboard settings.

+ 5 - 0
viewport/gui_in_3d/project.godot

@@ -26,6 +26,11 @@ singletons=[  ]
 
 [rendering]
 
+quality/driver/fallback_to_gles2=true
 quality/intended_usage/framebuffer_allocation=3
+vram_compression/import_etc=true
+quality/shadow_atlas/size=2048
+quality/shadow_atlas/size.mobile=1024
+quality/shadows/filter_mode=2
 quality/filters/msaa=2
 environment/default_environment="res://default_env.tres"

部分文件因为文件数量过多而无法显示