@woosh/meep-engine 3.51.0 → 3.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/package.json +1 -1
  2. package/src/engine/ecs/animation/Animation.d.ts +4 -25
  3. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  4. package/src/engine/ecs/animation/Animation.js +9 -41
  5. package/src/engine/ecs/ik/IKGoalSystem.d.ts +4 -5
  6. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
  7. package/src/engine/ecs/ik/IKGoalSystem.js +4 -6
  8. package/src/engine/graphics/ecs/mesh/assetTypeByPath.js +1 -1
  9. package/src/engine/graphics3/AnimationGraphSystem.d.ts +9 -22
  10. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  11. package/src/engine/graphics3/AnimationGraphSystem.js +58 -203
  12. package/src/engine/graphics3/AnimationSystem.d.ts +7 -18
  13. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  14. package/src/engine/graphics3/AnimationSystem.js +62 -243
  15. package/src/engine/graphics3/FoliageWindSystem.d.ts +67 -0
  16. package/src/engine/graphics3/FoliageWindSystem.d.ts.map +1 -0
  17. package/src/engine/graphics3/FoliageWindSystem.js +257 -0
  18. package/src/engine/graphics3/GPUFluidSystem.d.ts +7 -0
  19. package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
  20. package/src/engine/graphics3/GPUFluidSystem.js +39 -1
  21. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -1
  22. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  23. package/src/engine/graphics3/GPUParticleEmitterSystem.js +19 -5
  24. package/src/engine/graphics3/animation/AnimationClips.d.ts +107 -13
  25. package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
  26. package/src/engine/graphics3/animation/AnimationClips.js +207 -10
  27. package/src/engine/graphics3/animation/AnimationClipsSink.d.ts +89 -0
  28. package/src/engine/graphics3/animation/AnimationClipsSink.d.ts.map +1 -0
  29. package/src/engine/graphics3/animation/AnimationClipsSink.js +205 -0
  30. package/src/engine/graphics3/animation/FoliageWindRigs.d.ts +43 -0
  31. package/src/engine/graphics3/animation/FoliageWindRigs.d.ts.map +1 -0
  32. package/src/engine/graphics3/animation/FoliageWindRigs.js +69 -0
  33. package/src/engine/graphics3/animation/write_clip_playback.d.ts +17 -11
  34. package/src/engine/graphics3/animation/write_clip_playback.d.ts.map +1 -1
  35. package/src/engine/graphics3/animation/write_clip_playback.js +36 -27
  36. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  37. package/src/engine/graphics3/decal/GPUDecalRenderer.js +8 -6
  38. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  39. package/src/engine/graphics3/decal/shader_decal_composite.js +11 -5
  40. package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts +7 -7
  41. package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts.map +1 -1
  42. package/src/engine/graphics3/pose/collect_entity_playbacks.js +14 -15
  43. package/src/engine/graphics3/prefab/Prefab.d.ts +6 -0
  44. package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -1
  45. package/src/engine/graphics3/prefab/Prefab.js +169 -162
  46. package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -1
  47. package/src/engine/graphics3/prefab/prefab_compile.js +369 -334
  48. package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -1
  49. package/src/engine/graphics3/prefab/prefab_instantiate.js +43 -2
  50. package/src/engine/graphics3/terrain/chunk_terrain_material_surface.js +2 -2
  51. package/src/engine/physics/ecs/ContactProbeSystem.d.ts +2 -3
  52. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
  53. package/src/engine/physics/ecs/ContactProbeSystem.js +2 -4
  54. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  55. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +4 -4
  56. package/src/engine/sound/simulation/README.md +1 -1
  57. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +22 -8
  58. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -1
  59. package/src/engine/sound/simulation/probe/bakeProbeField.js +60 -15
  60. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -1
  61. package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +19 -23
  62. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +63 -17
  63. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  64. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +67 -17
  65. package/src/generation/foliage/FOLIAGE_DESIGN.md +318 -0
  66. package/src/generation/foliage/FOLIAGE_PLAN.md +198 -0
  67. package/src/generation/foliage/animation/build_tree_wind_rig.d.ts +20 -0
  68. package/src/generation/foliage/animation/build_tree_wind_rig.d.ts.map +1 -0
  69. package/src/generation/foliage/animation/build_tree_wind_rig.js +108 -0
  70. package/src/generation/foliage/asset/TreeAsset.d.ts +86 -0
  71. package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -0
  72. package/src/generation/foliage/asset/TreeAsset.js +111 -0
  73. package/src/generation/foliage/asset/TreeLODAsset.d.ts +115 -0
  74. package/src/generation/foliage/asset/TreeLODAsset.d.ts.map +1 -0
  75. package/src/generation/foliage/asset/TreeLODAsset.js +346 -0
  76. package/src/generation/foliage/asset/generate_tree.d.ts +15 -0
  77. package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -0
  78. package/src/generation/foliage/asset/generate_tree.js +93 -0
  79. package/src/generation/foliage/asset/place_tree.d.ts +82 -0
  80. package/src/generation/foliage/asset/place_tree.d.ts.map +1 -0
  81. package/src/generation/foliage/asset/place_tree.js +194 -0
  82. package/src/generation/foliage/config/BarkMaterialConfig.d.ts +120 -0
  83. package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -0
  84. package/src/generation/foliage/config/BarkMaterialConfig.js +250 -0
  85. package/src/generation/foliage/config/BranchLevelConfig.d.ts +288 -0
  86. package/src/generation/foliage/config/BranchLevelConfig.d.ts.map +1 -0
  87. package/src/generation/foliage/config/BranchLevelConfig.js +536 -0
  88. package/src/generation/foliage/config/CrownConfig.d.ts +100 -0
  89. package/src/generation/foliage/config/CrownConfig.d.ts.map +1 -0
  90. package/src/generation/foliage/config/CrownConfig.js +186 -0
  91. package/src/generation/foliage/config/CrownEnvelopeType.d.ts +16 -0
  92. package/src/generation/foliage/config/CrownEnvelopeType.d.ts.map +1 -0
  93. package/src/generation/foliage/config/CrownEnvelopeType.js +17 -0
  94. package/src/generation/foliage/config/FoliageCardType.d.ts +12 -0
  95. package/src/generation/foliage/config/FoliageCardType.d.ts.map +1 -0
  96. package/src/generation/foliage/config/FoliageCardType.js +18 -0
  97. package/src/generation/foliage/config/FoliageConfig.d.ts +151 -0
  98. package/src/generation/foliage/config/FoliageConfig.d.ts.map +1 -0
  99. package/src/generation/foliage/config/FoliageConfig.js +283 -0
  100. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +90 -0
  101. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -0
  102. package/src/generation/foliage/config/FoliageMaterialConfig.js +181 -0
  103. package/src/generation/foliage/config/PhyllotaxisMode.d.ts +13 -0
  104. package/src/generation/foliage/config/PhyllotaxisMode.d.ts.map +1 -0
  105. package/src/generation/foliage/config/PhyllotaxisMode.js +20 -0
  106. package/src/generation/foliage/config/TreeLODConfig.d.ts +87 -0
  107. package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -0
  108. package/src/generation/foliage/config/TreeLODConfig.js +211 -0
  109. package/src/generation/foliage/config/TreePreset.d.ts +16 -0
  110. package/src/generation/foliage/config/TreePreset.d.ts.map +1 -0
  111. package/src/generation/foliage/config/TreePreset.js +17 -0
  112. package/src/generation/foliage/config/TreeSpeciesConfig.d.ts +109 -0
  113. package/src/generation/foliage/config/TreeSpeciesConfig.d.ts.map +1 -0
  114. package/src/generation/foliage/config/TreeSpeciesConfig.js +400 -0
  115. package/src/generation/foliage/config/TreeWindConfig.d.ts +84 -0
  116. package/src/generation/foliage/config/TreeWindConfig.d.ts.map +1 -0
  117. package/src/generation/foliage/config/TreeWindConfig.js +157 -0
  118. package/src/generation/foliage/index.d.ts +38 -0
  119. package/src/generation/foliage/index.d.ts.map +1 -0
  120. package/src/generation/foliage/index.js +43 -0
  121. package/src/generation/foliage/material/make_bark_material.d.ts +37 -0
  122. package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -0
  123. package/src/generation/foliage/material/make_bark_material.js +802 -0
  124. package/src/generation/foliage/material/make_foliage_material.d.ts +14 -0
  125. package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -0
  126. package/src/generation/foliage/material/make_foliage_material.js +359 -0
  127. package/src/generation/foliage/mesh/branch_collar_project.d.ts +42 -0
  128. package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -0
  129. package/src/generation/foliage/mesh/branch_collar_project.js +203 -0
  130. package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +35 -0
  131. package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts.map +1 -0
  132. package/src/generation/foliage/mesh/branch_ring_triangulate.js +72 -0
  133. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +80 -0
  134. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -0
  135. package/src/generation/foliage/mesh/foliage_collect_attachments.js +502 -0
  136. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts +19 -0
  137. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts.map +1 -0
  138. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.js +150 -0
  139. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts +55 -0
  140. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -0
  141. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1047 -0
  142. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +21 -0
  143. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -0
  144. package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +415 -0
  145. package/src/generation/foliage/presets/make_tree_species_preset.d.ts +13 -0
  146. package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -0
  147. package/src/generation/foliage/presets/make_tree_species_preset.js +837 -0
  148. package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +443 -0
  149. package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -0
  150. package/src/generation/foliage/skeleton/TreeSkeleton.js +1100 -0
  151. package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts +27 -0
  152. package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts.map +1 -0
  153. package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -0
  154. package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts +32 -0
  155. package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts.map +1 -0
  156. package/src/generation/foliage/skeleton/spine_frame_double_reflection.js +87 -0
  157. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts +33 -0
  158. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts.map +1 -0
  159. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.js +205 -0
  160. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +14 -0
  161. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -0
  162. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +179 -0
  163. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +18 -0
  164. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -0
  165. package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1104 -0
  166. package/src/shade/playground/additive_blending/index.html +197 -0
  167. package/src/shade/playground/additive_blending/main.d.ts +2 -0
  168. package/src/shade/playground/additive_blending/main.d.ts.map +1 -0
  169. package/src/shade/playground/additive_blending/main.js +529 -0
  170. package/src/shade/playground/foliage_wind/README.md +18 -0
  171. package/src/shade/playground/foliage_wind/foliage_world.d.ts +127 -0
  172. package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -0
  173. package/src/shade/playground/foliage_wind/foliage_world.js +593 -0
  174. package/src/shade/playground/foliage_wind/index.html +254 -0
  175. package/src/shade/playground/foliage_wind/main.d.ts +2 -0
  176. package/src/shade/playground/foliage_wind/main.d.ts.map +1 -0
  177. package/src/shade/playground/foliage_wind/main.js +263 -0
  178. package/src/shade/playground/tonemap_sdr/README.md +5 -3
  179. package/src/shade/renderer/Renderer.d.ts +1 -1
  180. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  181. package/src/shade/renderer/Renderer.js +88 -31
  182. package/src/shade/renderer/ShadeToneMappingMode.d.ts +3 -2
  183. package/src/shade/renderer/ShadeToneMappingMode.js +15 -4
  184. package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +145 -0
  185. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts +9 -1
  186. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts.map +1 -1
  187. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.js +53 -1
  188. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts +8 -0
  189. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts.map +1 -0
  190. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.js +71 -0
  191. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts +11 -0
  192. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts.map +1 -0
  193. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.js +32 -0
  194. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +30 -3
  195. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  196. package/src/shade/renderer/animation/GPUAnimationManager.js +532 -79
  197. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +19 -12
  198. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
  199. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +20 -13
  200. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +35 -8
  201. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
  202. package/src/shade/renderer/animation/ShadeAnimationClip.js +433 -2
  203. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
  204. package/src/shade/renderer/animation/chunk_pose_accumulator.js +40 -32
  205. package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts +97 -0
  206. package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts.map +1 -0
  207. package/src/shade/renderer/animation/foliage/FoliageWindJoint.js +161 -0
  208. package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts +65 -0
  209. package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts.map +1 -0
  210. package/src/shade/renderer/animation/foliage/FoliageWindRig.js +89 -0
  211. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts +19 -0
  212. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts.map +1 -0
  213. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.js +143 -0
  214. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts +14 -0
  215. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts.map +1 -0
  216. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.js +116 -0
  217. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
  218. package/src/shade/renderer/animation/pose/pose_evaluate_local.js +39 -29
  219. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +37 -37
  220. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +2 -2
  221. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts +38 -0
  222. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts.map +1 -0
  223. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.js +97 -0
  224. package/src/shade/renderer/deferred/{TonemapDisplaySettings.d.ts → tonemap/TonemapDisplaySettings.d.ts} +1 -1
  225. package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts.map +1 -0
  226. package/src/shade/renderer/deferred/{TonemapDisplaySettings.js → tonemap/TonemapDisplaySettings.js} +5 -5
  227. package/src/shade/renderer/deferred/{shader_tonemap_HDR.d.ts → tonemap/shader_tonemap_HDR.d.ts} +1 -1
  228. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts.map +1 -0
  229. package/src/shade/renderer/deferred/{shader_tonemap_HDR.js → tonemap/shader_tonemap_HDR.js} +9 -9
  230. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts +17 -0
  231. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts.map +1 -0
  232. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.js +101 -0
  233. package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.d.ts → tonemap/shader_tonemap_HDR_none.d.ts} +1 -1
  234. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts.map +1 -0
  235. package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.js → tonemap/shader_tonemap_HDR_none.js} +6 -6
  236. package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.d.ts → tonemap/shader_tonemap_HDR_pbr_neutral.d.ts} +1 -1
  237. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
  238. package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.js → tonemap/shader_tonemap_HDR_pbr_neutral.js} +8 -8
  239. package/src/shade/renderer/deferred/{shader_tonemap_LDR.d.ts → tonemap/shader_tonemap_LDR.d.ts} +1 -1
  240. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts.map +1 -0
  241. package/src/shade/renderer/deferred/{shader_tonemap_LDR.js → tonemap/shader_tonemap_LDR.js} +10 -10
  242. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts +10 -0
  243. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts.map +1 -0
  244. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.js +77 -0
  245. package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.d.ts → tonemap/shader_tonemap_LDR_none.d.ts} +1 -1
  246. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts.map +1 -0
  247. package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.js → tonemap/shader_tonemap_LDR_none.js} +7 -7
  248. package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.d.ts → tonemap/shader_tonemap_LDR_pbr_neutral.d.ts} +1 -1
  249. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
  250. package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.js → tonemap/shader_tonemap_LDR_pbr_neutral.js} +8 -8
  251. package/src/shade/renderer/extension/RenderExtension.d.ts +7 -0
  252. package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
  253. package/src/shade/renderer/extension/RenderExtension.js +9 -0
  254. package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts +6 -0
  255. package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts.map +1 -1
  256. package/src/shade/renderer/extension/RenderExtensionRegistry.js +15 -0
  257. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +10 -3
  258. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
  259. package/src/shade/renderer/fluid/GPUFluidCascade.js +15 -0
  260. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +8 -1
  261. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
  262. package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +11 -0
  263. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
  264. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +51 -48
  265. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  266. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +6 -0
  267. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
  268. package/src/shade/renderer/fluid/mac/FluidMacPasses.js +16 -0
  269. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts.map +1 -1
  270. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.js +15 -3
  271. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts.map +1 -1
  272. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.js +102 -96
  273. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +12 -12
  274. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.js +12 -12
  275. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +8 -1
  276. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts.map +1 -1
  277. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.js +16 -0
  278. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +7 -0
  279. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
  280. package/src/shade/renderer/fluid/publish/FluidWindPublish.js +10 -0
  281. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  282. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +2 -2
  283. package/src/shade/renderer/loader/SceneBundle.d.ts +7 -0
  284. package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
  285. package/src/shade/renderer/loader/SceneBundle.js +119 -111
  286. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  287. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts +4 -0
  288. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
  289. package/src/shade/renderer/material/standard/fragment_gbuffer.js +6 -5
  290. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +8 -7
  291. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
  292. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +9 -8
  293. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  294. package/src/shade/renderer/particles/GPUParticleSystem.js +3 -1
  295. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  296. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +9 -4
  297. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  298. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
  299. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +9 -7
  300. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts.map +1 -1
  301. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js +15 -7
  302. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  303. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +6 -4
  304. package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.js +3 -3
  305. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.d.ts.map +1 -1
  306. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +8 -5
  307. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
  308. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +4 -3
  309. package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +160 -0
  310. package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +5 -1
  311. package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +15 -5
  312. package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts +41 -0
  313. package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts.map +1 -0
  314. package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.js +692 -0
  315. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts +25 -0
  316. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts.map +1 -0
  317. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.js +446 -0
  318. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts +22 -0
  319. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts.map +1 -0
  320. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.js +68 -0
  321. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts +32 -0
  322. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts.map +1 -0
  323. package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.js +163 -0
  324. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +10 -3
  325. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -1
  326. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +12 -4
  327. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1 -1
  328. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts +9 -0
  329. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts.map +1 -0
  330. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.js +17 -0
  331. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts +8 -0
  332. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts.map +1 -1
  333. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js +28 -20
  334. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts +8 -0
  335. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts.map +1 -0
  336. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.js +15 -0
  337. package/src/shade/renderer/view/chunk_view_mip_bias.d.ts +21 -0
  338. package/src/shade/renderer/view/chunk_view_mip_bias.d.ts.map +1 -0
  339. package/src/shade/renderer/view/chunk_view_mip_bias.js +44 -0
  340. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +1 -1
  341. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  342. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +105 -26
  343. package/src/engine/graphics/composit/CompositingStages.d.ts +0 -6
  344. package/src/engine/graphics/composit/CompositingStages.d.ts.map +0 -1
  345. package/src/engine/graphics/composit/CompositingStages.js +0 -8
  346. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +0 -7
  347. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +0 -1
  348. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +0 -24
  349. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts +0 -8
  350. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts.map +0 -1
  351. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.js +0 -17
  352. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +0 -8
  353. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +0 -1
  354. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +0 -60
  355. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +0 -7
  356. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +0 -1
  357. package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +0 -26
  358. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +0 -7
  359. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +0 -1
  360. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +0 -23
  361. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +0 -7
  362. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +0 -1
  363. package/src/engine/graphics/geometry/instancing/geometry_copy.js +0 -15
  364. package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts +0 -2
  365. package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts.map +0 -1
  366. package/src/engine/graphics/geometry/instancing/rewriteMaterial.js +0 -57
  367. package/src/engine/graphics/geometry/ribbon/Quad.d.ts +0 -96
  368. package/src/engine/graphics/geometry/ribbon/Quad.d.ts.map +0 -1
  369. package/src/engine/graphics/geometry/ribbon/Quad.js +0 -213
  370. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +0 -9
  371. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +0 -1
  372. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +0 -12
  373. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +0 -10
  374. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +0 -1
  375. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +0 -17
  376. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +0 -10
  377. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +0 -1
  378. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +0 -13
  379. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +0 -11
  380. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +0 -1
  381. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +0 -24
  382. package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts +0 -6
  383. package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts.map +0 -1
  384. package/src/engine/graphics/geometry/ribbon/rotateRibbon.js +0 -37
  385. package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts +0 -9
  386. package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts.map +0 -1
  387. package/src/engine/graphics/geometry/ribbon/updateTipPosition.js +0 -52
  388. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts +0 -8
  389. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts.map +0 -1
  390. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.js +0 -54
  391. package/src/engine/graphics/render/RenderPassType.d.ts +0 -6
  392. package/src/engine/graphics/render/RenderPassType.d.ts.map +0 -1
  393. package/src/engine/graphics/render/RenderPassType.js +0 -8
  394. package/src/engine/graphics/render/layers/RenderLayer.d.ts +0 -78
  395. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +0 -1
  396. package/src/engine/graphics/render/layers/RenderLayer.js +0 -95
  397. package/src/engine/graphics/render/layers/RenderLayerManager.d.ts +0 -72
  398. package/src/engine/graphics/render/layers/RenderLayerManager.d.ts.map +0 -1
  399. package/src/engine/graphics/render/layers/RenderLayerManager.js +0 -160
  400. package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts +0 -18
  401. package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts.map +0 -1
  402. package/src/engine/graphics/render/layers/RenderLayerManagerState.js +0 -48
  403. package/src/engine/graphics/render/layers/RenderLayerState.d.ts +0 -18
  404. package/src/engine/graphics/render/layers/RenderLayerState.d.ts.map +0 -1
  405. package/src/engine/graphics/render/layers/RenderLayerState.js +0 -27
  406. package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts +0 -8
  407. package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +0 -1
  408. package/src/engine/graphics/render/layers/RenderLayerUtils.js +0 -103
  409. package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts +0 -10
  410. package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts.map +0 -1
  411. package/src/engine/graphics/render/make_bvh_visibility_builder.js +0 -64
  412. package/src/engine/graphics/render/view/CameraViewFlags.d.ts +0 -7
  413. package/src/engine/graphics/render/view/CameraViewFlags.d.ts.map +0 -1
  414. package/src/engine/graphics/render/view/CameraViewFlags.js +0 -9
  415. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +0 -143
  416. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +0 -1
  417. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.js +0 -328
  418. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +0 -39
  419. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +0 -1
  420. package/src/engine/graphics/render/visibility/VisibilityComputer.js +0 -80
  421. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts +0 -29
  422. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts.map +0 -1
  423. package/src/engine/graphics/render/visibility/VisibilityFilter.js +0 -37
  424. package/src/engine/graphics3/animation/write_graph_playback.d.ts +0 -24
  425. package/src/engine/graphics3/animation/write_graph_playback.d.ts.map +0 -1
  426. package/src/engine/graphics3/animation/write_graph_playback.js +0 -48
  427. package/src/shade/renderer/deferred/TonemapDisplaySettings.d.ts.map +0 -1
  428. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +0 -1
  429. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +0 -1
  430. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +0 -1
  431. package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +0 -1
  432. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +0 -1
  433. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +0 -1
@@ -1,111 +1,119 @@
1
- import { assert } from "../../../core/assert.js";
2
- import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
3
-
4
- /**
5
- * @typedef {import("./SceneNode.js").SceneNode} SceneNode
6
- * @typedef {import("../animation/Skin.js").Skin} Skin
7
- * @typedef {import("../animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
8
- * @typedef {import("../light/model/Light.js").Light} Light
9
- */
10
-
11
- /**
12
- * What came out of a loader: a model as a flat list of {@link SceneNode}s in pre-order, with the
13
- * skins, clips and lights the same file carried, each addressing nodes by index.
14
- *
15
- * Not glTF-specific by design — the bundle describes "what a loader produced", not "what was in
16
- * a file", and every loader ({@link load_gltf}, {@link load_usd}, {@link deserialize_scene})
17
- * produces one. It is pure data with no lifecycle: a model compiles from it once into a
18
- * {@link Prefab} (`prefab_compile`), and a prefab is what gets placed — as entities, each holding
19
- * a row — however many times the model appears. The bundle is read by that compile and never
20
- * written, so one bundle is shared by every placement, which is what the asset manager hands out.
21
- *
22
- * Pre-order is the one structural promise: a node's parent has a lower index. {@link add_node}
23
- * refuses anything else, so a reader composes world transforms in a single forward pass.
24
- */
25
- export class SceneBundle {
26
- /**
27
- * Every node of the model, parents before children.
28
- *
29
- * @type {SceneNode[]}
30
- */
31
- nodes = [];
32
-
33
- /**
34
- * Skins extracted from the asset. A skin's `joints` and `meshes` are indices into
35
- * {@link nodes}. Empty if the asset has no skinned meshes.
36
- *
37
- * @type {Skin[]}
38
- */
39
- skins = [];
40
-
41
- /**
42
- * Animation clips extracted from the asset. Each channel's `target` is an index into
43
- * {@link nodes}. Empty if the asset has no animations.
44
- *
45
- * @type {ShadeAnimationClip[]}
46
- */
47
- clips = [];
48
-
49
- /**
50
- * Punctual lights extracted from the asset, each with the index of the node it sits on. A
51
- * light is not a node and has no place of its own; the node's transform is where it is,
52
- * already turned to shine along the engine's +Z. Empty if the asset has no lights.
53
- *
54
- * @type {{light: Light, node: number}[]}
55
- */
56
- lights = [];
57
-
58
- /**
59
- * Append a node. Its parent, if it has one, must already be in the bundle — which is what
60
- * keeps the list in pre-order.
61
- *
62
- * @param {SceneNode} node
63
- * @returns {number} the node's index, what a child, a skin, a clip or a light names it by
64
- */
65
- add_node(node) {
66
- assert.defined(node, 'node');
67
- assert.equal(node.isSceneNode, true, 'node.isSceneNode !== true');
68
-
69
- const index = this.nodes.length;
70
-
71
- assert.lessThan(node.parent, index, `node ${index} (${node.name}) names parent ${node.parent}, which is not in the bundle yet — add parents before children`);
72
-
73
- this.nodes.push(node);
74
-
75
- return index;
76
- }
77
-
78
- /**
79
- * The world matrix of every node, composed root-first in double precision — what a reader
80
- * that wants where things are in the model's own space asks for, once.
81
- *
82
- * @returns {Float64Array[]} one 4x4 per node, column-major
83
- */
84
- compute_world_matrices() {
85
- const nodes = this.nodes;
86
- const count = nodes.length;
87
- const worlds = new Array(count);
88
-
89
- for (let i = 0; i < count; i++) {
90
- const node = nodes[i];
91
- const world = new Float64Array(16);
92
- const local = node.local.matrix;
93
-
94
- if (node.parent === -1) {
95
- world.set(local);
96
- } else {
97
- m4_multiply(world, worlds[node.parent], local);
98
- }
99
-
100
- worlds[i] = world;
101
- }
102
-
103
- return worlds;
104
- }
105
- }
106
-
107
- /**
108
- * @readonly
109
- * @type {boolean}
110
- */
111
- SceneBundle.prototype.isSceneBundle = true;
1
+ import { assert } from "../../../core/assert.js";
2
+ import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
3
+
4
+ /**
5
+ * @typedef {import("./SceneNode.js").SceneNode} SceneNode
6
+ * @typedef {import("../animation/Skin.js").Skin} Skin
7
+ * @typedef {import("../animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
8
+ * @typedef {import("../light/model/Light.js").Light} Light
9
+ */
10
+
11
+ /**
12
+ * What came out of a loader: a model as a flat list of {@link SceneNode}s in pre-order, with the
13
+ * skins, clips and lights the same file carried, each addressing nodes by index.
14
+ *
15
+ * Not glTF-specific by design — the bundle describes "what a loader produced", not "what was in
16
+ * a file", and every loader ({@link load_gltf}, {@link load_usd}, {@link deserialize_scene})
17
+ * produces one. It is pure data with no lifecycle: a model compiles from it once into a
18
+ * {@link Prefab} (`prefab_compile`), and a prefab is what gets placed — as entities, each holding
19
+ * a row — however many times the model appears. The bundle is read by that compile and never
20
+ * written, so one bundle is shared by every placement, which is what the asset manager hands out.
21
+ *
22
+ * Pre-order is the one structural promise: a node's parent has a lower index. {@link add_node}
23
+ * refuses anything else, so a reader composes world transforms in a single forward pass.
24
+ */
25
+ export class SceneBundle {
26
+ /**
27
+ * Every node of the model, parents before children.
28
+ *
29
+ * @type {SceneNode[]}
30
+ */
31
+ nodes = [];
32
+
33
+ /**
34
+ * Skins extracted from the asset. A skin's `joints` and `meshes` are indices into
35
+ * {@link nodes}. Empty if the asset has no skinned meshes.
36
+ *
37
+ * @type {Skin[]}
38
+ */
39
+ skins = [];
40
+
41
+ /**
42
+ * Animation clips extracted from the asset. Each channel's `target` is an index into
43
+ * {@link nodes}. Empty if the asset has no animations.
44
+ *
45
+ * @type {ShadeAnimationClip[]}
46
+ */
47
+ clips = [];
48
+
49
+ /**
50
+ * Aeroelastic foliage wind rigs extracted from or generated for the asset.
51
+ * Each rig's `root` and each joint's `target` is an index into {@link nodes}.
52
+ *
53
+ * @type {import("../animation/foliage/FoliageWindRig.js").FoliageWindRig[]}
54
+ */
55
+ foliage_rigs = [];
56
+
57
+ /**
58
+ * Punctual lights extracted from the asset, each with the index of the node it sits on. A
59
+ * light is not a node and has no place of its own; the node's transform is where it is,
60
+ * already turned to shine along the engine's +Z. Empty if the asset has no lights.
61
+ *
62
+ * @type {{light: Light, node: number}[]}
63
+ */
64
+ lights = [];
65
+
66
+ /**
67
+ * Append a node. Its parent, if it has one, must already be in the bundle — which is what
68
+ * keeps the list in pre-order.
69
+ *
70
+ * @param {SceneNode} node
71
+ * @returns {number} the node's index, what a child, a skin, a clip or a light names it by
72
+ */
73
+ add_node(node) {
74
+ assert.defined(node, 'node');
75
+ assert.equal(node.isSceneNode, true, 'node.isSceneNode !== true');
76
+
77
+ const index = this.nodes.length;
78
+
79
+ assert.lessThan(node.parent, index, `node ${index} (${node.name}) names parent ${node.parent}, which is not in the bundle yet — add parents before children`);
80
+
81
+ this.nodes.push(node);
82
+
83
+ return index;
84
+ }
85
+
86
+ /**
87
+ * The world matrix of every node, composed root-first in double precision — what a reader
88
+ * that wants where things are in the model's own space asks for, once.
89
+ *
90
+ * @returns {Float64Array[]} one 4x4 per node, column-major
91
+ */
92
+ compute_world_matrices() {
93
+ const nodes = this.nodes;
94
+ const count = nodes.length;
95
+ const worlds = new Array(count);
96
+
97
+ for (let i = 0; i < count; i++) {
98
+ const node = nodes[i];
99
+ const world = new Float64Array(16);
100
+ const local = node.local.matrix;
101
+
102
+ if (node.parent === -1) {
103
+ world.set(local);
104
+ } else {
105
+ m4_multiply(world, worlds[node.parent], local);
106
+ }
107
+
108
+ worlds[i] = world;
109
+ }
110
+
111
+ return worlds;
112
+ }
113
+ }
114
+
115
+ /**
116
+ * @readonly
117
+ * @type {boolean}
118
+ */
119
+ SceneBundle.prototype.isSceneBundle = true;
@@ -13,7 +13,7 @@ export class TinyGltf {
13
13
  * @readonly
14
14
  * @type {TextureFormat}
15
15
  */
16
- static readonly "__#286@#UNCOMPRESSED_TARGET": TextureFormat;
16
+ static readonly "__#287@#UNCOMPRESSED_TARGET": TextureFormat;
17
17
  /**
18
18
  * @param {AssetManager} assetManager
19
19
  * @param {AssetRequestScope} [scope]
@@ -45,6 +45,10 @@ export function build_gbuffer_pipeline_descriptor({ label, material_group, surfa
45
45
  * @returns {RenderPipelineDescriptor}
46
46
  */
47
47
  export function gbuffer_pipeline_descriptor_for_shader(label: string, shader: ShaderDescriptor): RenderPipelineDescriptor;
48
+ /**
49
+ *
50
+ * @type {number}
51
+ */
48
52
  /**
49
53
  * Group 1 of every material's G-buffer pipeline: the visibility buffer and the view that drew it.
50
54
  *
@@ -1 +1 @@
1
- {"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"AAkGA;;;;;;;;GAQG;AACH,+DAHW,6BAA6B,GAC3B,2BAA2B,CAUvC;AASD;;;;;;;;;;;GAWG;AACH,qDAHW,SAAS,GACP,SAAS,CA8OrB;AAED;;;;;;;;;GASG;AACH;IAL2B,KAAK,EAArB,MAAM;IACiC,cAAc,EAArD,6BAA6B;IACV,OAAO,EAA1B,SAAS;IACP,wBAAwB,CAUpC;AAED;;;;;;;GAOG;AACH,8DAJW,MAAM,UACN,gBAAgB,GACd,wBAAwB,CA4BpC;AAnXD;;;;;;;;;GASG;AACH,qCAFU,6BAA6B,CAEmC;AAa1E;;;;GAIG;AACH,uCAFU,6BAA6B,CAEqC;AAgC5E;;;;GAIG;AACH,wCAFU,2BAA2B,CAEoE;AAoTzG;;;;GAIG;AACH,6BAFU,gBAAgB,CAMvB;8CA7Y2C,wDAAwD;4CAC1D,sDAAsD;0BAFxE,oCAAoC;yCAxCrB,iEAAiE;iCA2CzE,kCAAkC"}
1
+ {"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"AAkGA;;;;;;;;GAQG;AACH,+DAHW,6BAA6B,GAC3B,2BAA2B,CAUvC;AASD;;;;;;;;;;;GAWG;AACH,qDAHW,SAAS,GACP,SAAS,CA+OrB;AAED;;;;;;;;;GASG;AACH;IAL2B,KAAK,EAArB,MAAM;IACiC,cAAc,EAArD,6BAA6B;IACV,OAAO,EAA1B,SAAS;IACP,wBAAwB,CAUpC;AAED;;;;;;;GAOG;AACH,8DAJW,MAAM,UACN,gBAAgB,GACd,wBAAwB,CA4BpC;AA1XD;;;GAGG;AAGH;;;;;;;;;GASG;AACH,qCAFU,6BAA6B,CAEmC;AAa1E;;;;GAIG;AACH,uCAFU,6BAA6B,CAEqC;AAgC5E;;;;GAIG;AACH,wCAFU,2BAA2B,CAEoE;AAqTzG;;;;GAIG;AACH,6BAFU,gBAAgB,CAMvB;8CA9Y2C,wDAAwD;4CAC1D,sDAAsD;0BAFxE,oCAAoC;yCAxCrB,iEAAiE;iCA2CzE,kCAAkC"}
@@ -9,7 +9,7 @@ import { GEOMETRY_METADATA_STRUCT } from "../../geometry/GEOMETRY_METADATA_STRUC
9
9
  import { MESHLET_METADATA_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
10
10
  import { chunk_node3d_flags } from "../../scene/chunk_node3d_flags.js";
11
11
  import { chunk_scene_database_access } from "../../scene/chunk_scene_database_access.js";
12
- import { RENDER_GLOBAL_MIP_BIAS } from "../../postprocess/taa/RENDER_GLOBAL_MIP_BIAS.js";
12
+ import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
13
13
  import { chunk_barycentric_full } from "../../shader/chunk/geometry/triangle/chunk_barycentric_full.js";
14
14
  import { chunk_barycentric_interpolate_uv } from "../../shader/chunk/geometry/triangle/chunk_barycentric_interpolate_uv.js";
15
15
  import { chunk_compute_normal_matrix_from_m4 } from "../../shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.js";
@@ -53,7 +53,7 @@ import { SHADING_MATERIAL_RESOURCE_GROUP } from "./SHADING_MATERIAL_RESOURCE_GRO
53
53
  *
54
54
  * @type {number}
55
55
  */
56
- const MIP_DERIVATIVE_BIAS = 1 / (1 - RENDER_GLOBAL_MIP_BIAS);
56
+
57
57
 
58
58
  /**
59
59
  * Group 1 of every material's G-buffer pipeline: the visibility buffer and the view that drew it.
@@ -146,7 +146,7 @@ struct GBufferOutput {
146
146
  }
147
147
 
148
148
  // this is a multiplies applies to gradients before invoking texture sampling
149
- const MIP_BIAS = ${MIP_DERIVATIVE_BIAS.toFixed(8)};
149
+
150
150
 
151
151
  @fragment
152
152
  fn main(
@@ -228,7 +228,7 @@ fn main(
228
228
  var uv_info = barycentric_interpolate_uv(barycentric, geometry_vertex_uv_0, geometry_vertex_uv_1, geometry_vertex_uv_2);
229
229
 
230
230
  // figure out final mip bias
231
- let uv_derivative_bias = MIP_BIAS / view.upscale_ratio;
231
+ let uv_derivative_bias = view_uv_derivative_bias(view.upscale_ratio);
232
232
 
233
233
  // bias UV derivatives to supersample textures
234
234
  uv_info.ddx *= uv_derivative_bias.x;
@@ -367,7 +367,8 @@ fn main(
367
367
  chunk_rgbe9995_encode,
368
368
  chunk_dither_color_8bit_triangle_noise,
369
369
  chunk_scene_database_access,
370
- chunk_node3d_flags,
370
+ chunk_node3d_flags,
371
+ chunk_view_mip_bias,
371
372
  ]
372
373
  );
373
374
  }
@@ -31,13 +31,14 @@
31
31
  * only to tell a missing `w` curve from an authored zero.
32
32
  *
33
33
  * `weight` is the clip weight `value` has already been multiplied by.
34
- * Rotation needs it because the identity it substitutes for a missing
35
- * channel has to carry the same weight as the channels that were
36
- * authored; nothing else here does.
37
- *
38
- * `rest_rotation` is the target's rest rotation, from its binding. Only
39
- * Rotation reads it: it rides into the slot with the contribution, for
40
- * the resolve to write when the rotations summed to nothing.
34
+ * All three properties use it to subtract `rest * weight` (`value - rest * weight`),
35
+ * and Rotation also uses it because the identity it substitutes for a missing
36
+ * `w` channel must carry the same weight as the authored channels.
37
+ *
38
+ * `rest_rotation` carries the target's rest value for the bound property
39
+ * (`rest.translation` in `.xyz` for Translation, `rest.rotation` in `.xyzw`
40
+ * for Rotation, `rest.scale` in `.xyz` for Scale). It rides into the slot
41
+ * with the contribution so the resolve pass can reconstruct `rest + delta`.
41
42
  *
42
43
  * @type {CodeChunk}
43
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,iDAFU,SAAS,CA8Bb;0BA1EoB,iCAAiC"}
1
+ {"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,iDAFU,SAAS,CA8Bb;0BA3EoB,iCAAiC"}
@@ -35,13 +35,14 @@ import { Node3DProperty } from "./Node3DProperty.js";
35
35
  * only to tell a missing `w` curve from an authored zero.
36
36
  *
37
37
  * `weight` is the clip weight `value` has already been multiplied by.
38
- * Rotation needs it because the identity it substitutes for a missing
39
- * channel has to carry the same weight as the channels that were
40
- * authored; nothing else here does.
38
+ * All three properties use it to subtract `rest * weight` (`value - rest * weight`),
39
+ * and Rotation also uses it because the identity it substitutes for a missing
40
+ * `w` channel must carry the same weight as the authored channels.
41
41
  *
42
- * `rest_rotation` is the target's rest rotation, from its binding. Only
43
- * Rotation reads it: it rides into the slot with the contribution, for
44
- * the resolve to write when the rotations summed to nothing.
42
+ * `rest_rotation` carries the target's rest value for the bound property
43
+ * (`rest.translation` in `.xyz` for Translation, `rest.rotation` in `.xyzw`
44
+ * for Rotation, `rest.scale` in `.xyz` for Scale). It rides into the slot
45
+ * with the contribution so the resolve pass can reconstruct `rest + delta`.
45
46
  *
46
47
  * @type {CodeChunk}
47
48
  */
@@ -60,13 +61,13 @@ fn write_object_property_node3d(
60
61
 
61
62
  switch(property){
62
63
  case ${Node3DProperty.Translation}u: {
63
- pose_accumulator_add_translation(node_index, value.xyz, mask);
64
+ pose_accumulator_add_translation(node_index, value.xyz, mask, weight, rest_rotation.xyz);
64
65
  }
65
66
  case ${Node3DProperty.Rotation}u: {
66
67
  pose_accumulator_add_rotation(node_index, value, mask, weight, rest_rotation);
67
68
  }
68
69
  case ${Node3DProperty.Scale}u: {
69
- pose_accumulator_add_scale(node_index, value.xyz, mask);
70
+ pose_accumulator_add_scale(node_index, value.xyz, mask, weight, rest_rotation.xyz);
70
71
  }
71
72
  default: {}
72
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"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"}
@@ -1120,7 +1120,9 @@ export class GPUParticleSystem {
1120
1120
  this.atlas_sampler = device.createSampler({
1121
1121
  label: "particles/atlas_sampler",
1122
1122
  magFilter: "linear",
1123
- minFilter: "linear",
1123
+ minFilter: "linear",
1124
+ mipmapFilter: "linear",
1125
+ maxAnisotropy: 16,
1124
1126
  addressModeU: "clamp-to-edge",
1125
1127
  addressModeV: "clamp-to-edge",
1126
1128
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"AAoMA,2EAAsI;AACtI,8EAA2I;AAC3I,6EAA8I;AAE9I,mEAAmE;AACnE,yEAAwD;AAExD,mDAAmD;AACnD,2DAAsD;yCA5Mb,iEAAiE;4CAa9D,sDAAsD;iCAFjE,kCAAkC"}
1
+ {"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"AAyMA,2EAAsI;AACtI,8EAA2I;AAC3I,6EAA8I;AAE9I,mEAAmE;AACnE,yEAAwD;AAExD,mDAAmD;AACnD,2DAAsD;yCAjNb,iEAAiE;4CAa9D,sDAAsD;iCAFjE,kCAAkC"}
@@ -13,7 +13,8 @@ import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
13
13
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
14
14
  import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
15
15
  import { SAMPLER_LINEAR_UPSCALE } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
16
- import { VIEW_UNIFORM_STRUCT } from "../../view/VIEW_UNIFORM_STRUCT.js";
16
+ import { VIEW_UNIFORM_STRUCT } from "../../view/VIEW_UNIFORM_STRUCT.js";
17
+ import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
17
18
  import { VOLUMETRICS_METADATA_STRUCT } from "../../volumetrics/VOLUMETRICS_METADATA_STRUCT.js";
18
19
  import { EMITTER_FLAG } from "../data/PARTICLE_EMITTER_STRUCT.js";
19
20
  import { PARTICLE_SOFT_FADE_RANGE } from "../ParticleConstants.js";
@@ -110,7 +111,10 @@ fn vs_general(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32
110
111
 
111
112
  @fragment
112
113
  fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
113
- let screen_uv = in.clip.xy / vec2<f32>(f32(view.width), f32(view.height));
114
+ let screen_uv = in.clip.xy / vec2<f32>(f32(view.width), f32(view.height));
115
+ let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
116
+ let uv_ddx = dpdx(in.uv) * uv_bias.x;
117
+ let uv_ddy = dpdy(in.uv) * uv_bias.y;
114
118
 
115
119
  // a billboard, stretched or not, is built from the camera's right and up and lies in the view plane,
116
120
  // so its footprint is zero; a horizontal, vertical or world-facing quad seen at an angle runs
@@ -130,7 +134,7 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
130
134
  discard;
131
135
  }
132
136
 
133
- var color = textureSample(atlas, atlas_sampler, in.uv) * in.color;
137
+ var color = textureSampleGrad(atlas, atlas_sampler, in.uv, uv_ddx, uv_ddy) * in.color;
134
138
 
135
139
  if ((in.flags & PARTICLE_FLAG_SOFT_DEPTH) != 0u) {
136
140
  let scene_vd = particle_scene_view_depth(textureLoad(scene_depth, vec2<i32>(in.clip.xy), 0).r, camera);
@@ -166,7 +170,8 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
166
170
  chunk_sample_volumetrics,
167
171
  chunk_avboit_view_depth_to_virtual,
168
172
  chunk_avboit_footprint_bias,
169
- chunk_avboit_sample_transmittance,
173
+ chunk_avboit_sample_transmittance,
174
+ chunk_view_mip_bias,
170
175
  ]);
171
176
 
172
177
  const descriptor = ShaderDescriptor.from({ label: "Particle AVBOIT Draw", body, resources });
@@ -53,7 +53,7 @@ export class NSS {
53
53
  * @returns {number}
54
54
  */
55
55
  static recommended_jitter_sequence_size(upscale_ratio: number): number;
56
- static "__#200@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
56
+ static "__#201@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
57
57
  /**
58
58
  * @param {GraphicsContext} graphics
59
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ssr_resolve_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js"],"names":[],"mappings":"AAiWA;;;;;;;GAOG;AACH,iCAFU,WAAW,CAgBlB;4BApWyB,gCAAgC"}
1
+ {"version":3,"file":"ssr_resolve_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js"],"names":[],"mappings":"AAmWA;;;;;;;GAOG;AACH,iCAFU,WAAW,CAgBlB;4BAtWyB,gCAAgC"}
@@ -1,6 +1,6 @@
1
1
  import { chunk_ssr_metadata } from "../chunk_ssr_metadata.js";
2
2
  import { chunk_is_on_screen_i32 } from "../../../shader/chunk/texture/chunk_is_on_screen_i32.js";
3
- import { SamplerDescriptor } from "../../../../descriptor/texture/SamplerDescriptor.js";
3
+ import { SAMPLER_TRILINEAR_CLAMP } from "../../../texture/SAMPLER_TRILINEAR_CLAMP.js";
4
4
  import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
5
5
  import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
6
6
  import { CAMERA_UNIFORM_STRUCT } from "../../../camera/CAMERA_UNIFORM_STRUCT.js";
@@ -62,12 +62,14 @@ resources.createGroup()
62
62
  .addTexture("tNormal", "uint")
63
63
  .addTexture("tColor", "float")
64
64
  .addTexture("tAlbedoAO", "unfilterable-float")
65
- .addSampler("sLinear", "filtering", SamplerDescriptor.from({
66
- magFilter: "linear",
67
- mipmapFilter: "linear",
68
- addressModeU: "clamp-to-edge",
69
- addressModeV: "clamp-to-edge",
70
- }))
65
+ .addSampler("sLinear", "filtering", SAMPLER_TRILINEAR_CLAMP)
66
+
67
+
68
+
69
+
70
+
71
+
72
+
71
73
  .addUniform("camera", CAMERA_UNIFORM_STRUCT)
72
74
  ;
73
75
 
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_forward_shade_standard_fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,8DAiKC;0BAxLyB,oCAAoC"}
1
+ {"version":3,"file":"chunk_forward_shade_standard_fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js"],"names":[],"mappings":"AAyCA;;;;;;GAMG;AACH,8DAsKC;0BA/LyB,oCAAoC"}
@@ -24,7 +24,9 @@ import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERI
24
24
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
25
25
  import { chunk_forward_sample_indirect } from "./chunk_forward_sample_indirect.js";
26
26
  import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
27
- import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
27
+ import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
28
+ import { VIEW_RESOURCE } from "../../view/VIEW_RESOURCE.js";
29
+ import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
28
30
  import {
29
31
  MATERIAL_DIFFUSE_SAMPLER_RESOURCE,
30
32
  MATERIAL_DIFFUSE_TEXTURE_RESOURCE,
@@ -55,7 +57,11 @@ fn forward_shade_standard_fragment(
55
57
  ) -> vec4f {
56
58
  let world_tangent_frame = build_orthonormal_matrix_nt(vert.normal, vert.tangent);
57
59
 
58
- let t_normal = decode_tangent_normal(textureSample(texture_normal, texture_normal_sampler, vert.uv));
60
+ let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
61
+ let uv_ddx = dpdx(vert.uv) * uv_bias.x;
62
+ let uv_ddy = dpdy(vert.uv) * uv_bias.y;
63
+
64
+ let t_normal = decode_tangent_normal(textureSampleGrad(texture_normal, texture_normal_sampler, vert.uv, uv_ddx, uv_ddy));
59
65
  var world_shading_normal:vec3<f32> = normalize( world_tangent_frame * t_normal );
60
66
 
61
67
  // flip the normal when looking at the surface's back. The raw front_facing cannot say:
@@ -77,9 +83,9 @@ fn forward_shade_standard_fragment(
77
83
  view_direction: 'view_direction',
78
84
  })};
79
85
 
80
- let t_pbr = textureSample(texture_orm, texture_orm_sampler, vert.uv);
81
- let t_diffuse = textureSample(texture_diffuse, texture_diffuse_sampler, vert.uv);
82
- let t_emissive = textureSample(texture_emissive, texture_emissive_sampler, vert.uv);
86
+ let t_pbr = textureSampleGrad(texture_orm, texture_orm_sampler, vert.uv, uv_ddx, uv_ddy);
87
+ let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert.uv, uv_ddx, uv_ddy);
88
+ let t_emissive = textureSampleGrad(texture_emissive, texture_emissive_sampler, vert.uv, uv_ddx, uv_ddy);
83
89
 
84
90
  // the vertex stage hands on the vertex's own colour; the material's is applied here
85
91
  var diffuse = t_diffuse.rgb * vert.color * material_info.albedo_color.rgb;
@@ -203,11 +209,13 @@ fn forward_shade_standard_fragment(
203
209
  chunk_compute_indirect_specular,
204
210
  chunk_forward_sample_indirect,
205
211
  chunk_compute_specular_occlusion,
206
- chunk_material_draw_side,
212
+ chunk_material_draw_side,
213
+ chunk_view_mip_bias,
207
214
  ]
208
215
  )
209
216
 
210
- chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
217
+ chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
218
+ chunk_forward_shade_standard_fragment.requireResource(VIEW_RESOURCE);
211
219
  chunk_forward_shade_standard_fragment.requireResource(MATERIAL_INFO_RESOURCE);
212
220
  chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_TEXTURE_RESOURCE);
213
221
  chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_SAMPLER_RESOURCE);
@@ -1 +1 @@
1
- {"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,CAoEV;AAEN;;;GAGG;AACH,gDAFU,WAAW,CAWnB;AAEF;;;GAGG;AACH,kCAFU,qBAAqB,CAiB3B"}
1
+ {"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,CAsEV;AAEN;;;GAGG;AACH,gDAFU,WAAW,CAWnB;AAEF;;;GAGG;AACH,kCAFU,qBAAqB,CAiB3B"}
@@ -1,6 +1,6 @@
1
1
  import { chunk_sample_volumetrics } from "../../../deferred/chunk_sample_volumetrics.js";
2
2
  import { chunk_get_view_space_depth } from "../../../shader/chunk/depth/chunk_get_view_space_depth.js";
3
- import { chunk_unjitter_uv } from "../../../shader/chunk/texture/chunk_unjitter_uv.js";
3
+ import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
4
4
  import { FORWARD_VERTEX_SHADER_STRUCT } from "../../forward/FORWARD_VERTEX_SHADER_STRUCT.js";
5
5
  import { OIT_COVERAGE_MAX } from "../oit/OIT_CONSTANTS.js";
6
6
  import { AVBOIT_EXTINCT_TRANSMITTANCE } from "./AVBOIT_CONSTANTS.js";
@@ -66,7 +66,9 @@ fn main(
66
66
 
67
67
  // need to unjitter UV to account for TAA
68
68
  var vert_adjusted = vert;
69
- vert_adjusted.uv = unjitter_uv(vert.uv, view.jitter);
69
+ let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
70
+ let uv_ddx = dpdx(vert.uv) * uv_bias.x;
71
+ let uv_ddy = dpdy(vert.uv) * uv_bias.y;
70
72
 
71
73
  // linear view depth (vert.position is @builtin(position); .z is device depth) and screen uv,
72
74
  // for the volume lookup and the fog composite alike
@@ -98,7 +100,7 @@ fn main(
98
100
  var tint = vec3<f32>(1.0);
99
101
  let f_transmission = material_info.transmission_factor;
100
102
  if (f_transmission > 0.0) {
101
- let t_diffuse = textureSample(texture_diffuse, texture_diffuse_sampler, vert_adjusted.uv);
103
+ let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert_adjusted.uv, uv_ddx, uv_ddy);
102
104
  let base_color = (t_diffuse.rgb / max(t_diffuse.a, 1e-7)) * vert.color * material_info.albedo_color.rgb;
103
105
  tint = avboit_transmission_tint(base_color, f_transmission * f32(warp.tint_from_base_color));
104
106
  }
@@ -122,7 +124,7 @@ fn main(
122
124
  */
123
125
  export const AVBOIT_DRAW_FRAGMENT_DEPENDENCIES = [
124
126
  FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
125
- chunk_unjitter_uv,
127
+ chunk_view_mip_bias,
126
128
  chunk_get_view_space_depth,
127
129
  chunk_sample_volumetrics,
128
130
  chunk_avboit_view_depth_to_virtual,
@@ -2,7 +2,7 @@ import { chunk_sample_volumetrics } from "../../../deferred/chunk_sample_volumet
2
2
  import {
3
3
  chunk_resolve_power_moments_4
4
4
  } from "../../../shader/chunk/mboit/moments/power/chunk_resolve_power_moments_4.js";
5
- import { chunk_unjitter_uv } from "../../../shader/chunk/texture/chunk_unjitter_uv.js";
5
+
6
6
  import { FORWARD_VERTEX_SHADER_STRUCT } from "../../forward/FORWARD_VERTEX_SHADER_STRUCT.js";
7
7
  import { chunk_oit_linearize_depth } from "./chunk_oit_linearize_depth.js";
8
8
  import { OIT_COVERAGE_MAX } from "./OIT_CONSTANTS.js";
@@ -51,7 +51,7 @@ fn main(
51
51
 
52
52
  // need to unjitter UV to account for TAA
53
53
  var vert_adjusted = vert;
54
- vert_adjusted.uv = unjitter_uv(vert.uv, view.jitter);
54
+
55
55
 
56
56
  let shaded = forward_shade_standard_fragment(vert_adjusted, front_facing, ${OIT_RESOLVE_LIGHT_BUDGET}u, ${OIT_RESOLVE_LIGHT_BUDGET}u);
57
57
 
@@ -99,7 +99,7 @@ export const OIT_RESOLVE_FRAGMENT_DEPENDENCIES = [
99
99
  FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
100
100
  chunk_resolve_power_moments_4,
101
101
  chunk_oit_linearize_depth,
102
- chunk_unjitter_uv,
102
+
103
103
  chunk_sample_volumetrics,
104
104
  ];
105
105
 
@@ -1 +1 @@
1
- {"version":3,"file":"shader_oit_generate_moments.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js"],"names":[],"mappings":"AAgJA;;;;GAIG;AACH,0CAFU,sBAAsB,CAgE7B;uCArMoC,iCAAiC"}
1
+ {"version":3,"file":"shader_oit_generate_moments.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js"],"names":[],"mappings":"AAmJA;;;;GAIG;AACH,0CAFU,sBAAsB,CAgE7B;uCAxMoC,iCAAiC"}