@woosh/meep-engine 3.50.0 → 3.51.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 (112) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics3/make_default_environment.d.ts.map +1 -1
  3. package/src/engine/graphics3/make_default_environment.js +11 -5
  4. package/src/shade/playground/particle_ecs/moonlit_environment.d.ts.map +1 -1
  5. package/src/shade/playground/particle_ecs/moonlit_environment.js +11 -5
  6. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
  7. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +3 -1
  8. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts +3 -0
  9. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +1 -1
  10. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.js +11 -8
  11. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -0
  12. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  13. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +227 -215
  14. package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.d.ts.map +1 -1
  15. package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.js +2 -0
  16. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.d.ts.map +1 -1
  17. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.js +4 -2
  18. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.d.ts.map +1 -1
  19. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.js +4 -2
  20. package/src/shade/renderer/deferred/shader_background.d.ts.map +1 -1
  21. package/src/shade/renderer/deferred/shader_background.js +4 -2
  22. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  23. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +3 -1
  24. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.d.ts.map +1 -1
  25. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +3 -1
  26. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.d.ts.map +1 -1
  27. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +3 -1
  28. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  29. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +3 -1
  30. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.d.ts.map +1 -1
  31. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +4 -2
  32. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  33. package/src/shade/renderer/light/GPULightCollection.js +44 -0
  34. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts +2 -1
  35. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts.map +1 -1
  36. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.js +3 -2
  37. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts +14 -0
  38. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts.map +1 -0
  39. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.js +25 -0
  40. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  41. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +3 -4
  42. package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts +19 -0
  43. package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts.map +1 -0
  44. package/src/shade/renderer/light/environment/octahedral_skirt_matches.js +67 -0
  45. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts +16 -0
  46. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts.map +1 -0
  47. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.js +35 -0
  48. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts +7 -2
  49. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts.map +1 -1
  50. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.js +23 -7
  51. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts +8 -2
  52. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts.map +1 -1
  53. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.js +24 -7
  54. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts +12 -0
  55. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts.map +1 -0
  56. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.js +54 -0
  57. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +2 -2
  58. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
  59. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +5 -4
  60. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  61. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +13 -9
  62. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -1
  63. package/src/shade/renderer/light/environment/shader_project_environment_sh.js +3 -1
  64. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  65. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +3 -1
  66. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  67. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +3 -1
  68. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  69. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +3 -1
  70. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  71. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +3 -1
  72. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
  73. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
  74. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +3 -1
  75. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +0 -5
  76. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
  77. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +0 -6
  78. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts.map +1 -1
  79. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.js +4 -1
  80. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  81. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -0
  82. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
  83. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +3 -0
  84. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +1 -1
  85. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts +15 -0
  86. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts.map +1 -0
  87. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.js +27 -0
  88. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts +18 -0
  89. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts.map +1 -0
  90. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.js +24 -0
  91. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts +18 -1
  92. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts.map +1 -1
  93. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.js +45 -27
  94. package/src/shade/renderer/view/GPUViewSkyContext.js +169 -169
  95. package/src/shade/renderer/volumetrics/NOTES.md +209 -0
  96. package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.d.ts.map +1 -1
  97. package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.js +1 -1
  98. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts +36 -0
  99. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts.map +1 -0
  100. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.js +129 -0
  101. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  102. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +75 -0
  103. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts +26 -0
  104. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts.map +1 -0
  105. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.js +110 -0
  106. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  107. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -14
  108. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
  109. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +9 -4
  110. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts +31 -0
  111. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts.map +1 -0
  112. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.js +139 -0
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Advanced 3D game engine",
7
7
  "type": "module",
8
8
  "author": "Alexander Goldring",
9
- "version": "3.50.0",
9
+ "version": "3.51.0",
10
10
  "exports": {
11
11
  "./build/*": "./build/*",
12
12
  "./src/*": "./src/*",
@@ -1 +1 @@
1
- {"version":3,"file":"make_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/make_default_environment.js"],"names":[],"mappings":"AA6DA;;;;;;;;;;;GAWG;AACH,4CAFa,YAAY,CAmCxB;6BAlG4B,8CAA8C"}
1
+ {"version":3,"file":"make_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/make_default_environment.js"],"names":[],"mappings":"AA8DA;;;;;;;;;;;GAWG;AACH,4CAFa,YAAY,CAwCxB;6BAvG4B,8CAA8C"}
@@ -4,12 +4,13 @@ import { sampler2d_to_f16 } from "../graphics/texture/sampler/sampler2d_to_f16.j
4
4
  import {
5
5
  octahedral_uv_to_direction
6
6
  } from "../../shade/renderer/light/environment/octahedral_uv_to_direction.js";
7
+ import { sampler2d_octahedral_skirt_fill } from "../../shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.js";
7
8
  import { ColorSpace } from "../../shade/renderer/texture/ColorSpace.js";
8
9
  import { ShadeImage } from "../../shade/renderer/texture/source/ShadeImage.js";
9
10
  import { ShadeTexture } from "../../shade/renderer/texture/ShadeTexture.js";
10
11
 
11
12
  /**
12
- * Resolution of the generated map, per octahedral face grid.
13
+ * Side of the generated map, its one-texel octahedral skirt included.
13
14
  *
14
15
  * Small on purpose. This is an *ambient* source — it is convolved into irradiance and a handful of
15
16
  * roughness mips before anything samples it, so detail here buys nothing. What it has to be is
@@ -77,13 +78,16 @@ export function make_default_environment() {
77
78
  const data = sampler.data;
78
79
  const rgb = [0, 0, 0];
79
80
 
80
- for (let v = 0; v < RESOLUTION; v++) {
81
- for (let u = 0; u < RESOLUTION; u++) {
81
+ // the octahedral square inside the one-texel skirt an environment map carries
82
+ const interior = RESOLUTION - 2;
83
+
84
+ for (let v = 1; v <= interior; v++) {
85
+ for (let u = 1; u <= interior; u++) {
82
86
  // texel centres, so the mapping is symmetric across the octahedron's folds
83
87
  octahedral_uv_to_direction(
84
88
  SCRATCH_DIRECTION,
85
- (u + 0.5) / RESOLUTION,
86
- (v + 0.5) / RESOLUTION
89
+ (u - 0.5) / interior,
90
+ (v - 0.5) / interior
87
91
  );
88
92
 
89
93
  sky_radiance(rgb, SCRATCH_DIRECTION.x, SCRATCH_DIRECTION.y, SCRATCH_DIRECTION.z);
@@ -97,6 +101,8 @@ export function make_default_environment() {
97
101
  }
98
102
  }
99
103
 
104
+ sampler2d_octahedral_skirt_fill(sampler);
105
+
100
106
  const image = ShadeImage.fromSampler2D(sampler2d_to_f16(sampler));
101
107
 
102
108
  // radiance, not colour: the values above are light arriving, and treating them as sRGB would
@@ -1 +1 @@
1
- {"version":3,"file":"moonlit_environment.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/particle_ecs/moonlit_environment.js"],"names":[],"mappings":"AAyGA;;;;GAIG;AACH,uCAFa,YAAY,CAmCxB;AA9GD;;;;;GAKG;AACH,6BAFU,OAAO,CAEyD;6BAjC7C,wCAAwC;oBANjD,+BAA+B"}
1
+ {"version":3,"file":"moonlit_environment.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/particle_ecs/moonlit_environment.js"],"names":[],"mappings":"AA0GA;;;;GAIG;AACH,uCAFa,YAAY,CAwCxB;AAnHD;;;;;GAKG;AACH,6BAFU,OAAO,CAEyD;6BAjC7C,wCAAwC;oBAPjD,+BAA+B"}
@@ -2,6 +2,7 @@ import Vector3 from "../../../core/geom/Vector3.js";
2
2
  import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
3
3
  import { sampler2d_to_f16 } from "../../../engine/graphics/texture/sampler/sampler2d_to_f16.js";
4
4
  import { octahedral_z_pole_uv_to_direction } from "../../renderer/light/environment/octahedral_z_pole_uv_to_direction.js";
5
+ import { sampler2d_octahedral_skirt_fill } from "../../renderer/light/environment/sampler2d_octahedral_skirt_fill.js";
5
6
  import { ColorSpace } from "../../renderer/texture/ColorSpace.js";
6
7
  import { ShadeImage } from "../../renderer/texture/source/ShadeImage.js";
7
8
  import { ShadeTexture } from "../../renderer/texture/ShadeTexture.js";
@@ -22,7 +23,7 @@ import { ShadeTexture } from "../../renderer/texture/ShadeTexture.js";
22
23
  */
23
24
 
24
25
  /**
25
- * Resolution per octahedral face grid.
26
+ * Side of the map, its one-texel octahedral skirt included.
26
27
  *
27
28
  * Small on purpose: this is an ambient source, convolved into irradiance and a handful of roughness
28
29
  * mips before anything samples it. What it has to be is smooth and correctly oriented.
@@ -114,13 +115,16 @@ export function moonlit_environment() {
114
115
  const data = sampler.data;
115
116
  const rgb = [0, 0, 0];
116
117
 
117
- for (let v = 0; v < RESOLUTION; v++) {
118
- for (let u = 0; u < RESOLUTION; u++) {
118
+ // the octahedral square inside the one-texel skirt an environment map carries
119
+ const interior = RESOLUTION - 2;
120
+
121
+ for (let v = 1; v <= interior; v++) {
122
+ for (let u = 1; u <= interior; u++) {
119
123
  // texel centres, so the mapping is symmetric across the octahedron's folds
120
124
  octahedral_z_pole_uv_to_direction(
121
125
  SCRATCH_DIRECTION,
122
- (u + 0.5) / RESOLUTION,
123
- (v + 0.5) / RESOLUTION
126
+ (u - 0.5) / interior,
127
+ (v - 0.5) / interior
124
128
  );
125
129
 
126
130
  moonlit_radiance(rgb, SCRATCH_DIRECTION.x, SCRATCH_DIRECTION.y, SCRATCH_DIRECTION.z);
@@ -134,6 +138,8 @@ export function moonlit_environment() {
134
138
  }
135
139
  }
136
140
 
141
+ sampler2d_octahedral_skirt_fill(sampler);
142
+
137
143
  const image = ShadeImage.fromSampler2D(sampler2d_to_f16(sampler));
138
144
 
139
145
  // radiance, not colour: the values above are light arriving, and treating them as sRGB would
@@ -1 +1 @@
1
- {"version":3,"file":"sh_exp_playground_shaders.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/sh_exponential/sh_exp_playground_shaders.js"],"names":[],"mappings":"AAaA;;;GAGG;AACH,8BAFU,MAAM,EAAE,CAOhB;AAEF;;;;;;GAMG;AACH,oCAFU,MAAM,CAE0B;AAE1C;;;;;;;;;;;;;GAaG;AACH,qCAFU,YAAY,CAgBI;AAsC1B;;;;;;GAMG;AACH,qDAFU,aAAa,CAuDpB;AAcH;;;;;GAKG;AACH,qCAFU,aAAa,CA4FpB;6BAnQ0B,4CAA4C;8BAJ3C,wCAAwC"}
1
+ {"version":3,"file":"sh_exp_playground_shaders.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/sh_exponential/sh_exp_playground_shaders.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH,8BAFU,MAAM,EAAE,CAOhB;AAEF;;;;;;GAMG;AACH,oCAFU,MAAM,CAE0B;AAE1C;;;;;;;;;;;;;GAaG;AACH,qCAFU,YAAY,CAgBI;AAsC1B;;;;;;GAMG;AACH,qDAFU,aAAa,CAuDpB;AAeH;;;;;GAKG;AACH,qCAFU,aAAa,CA4FpB;6BArQ0B,4CAA4C;8BAJ3C,wCAAwC"}
@@ -10,6 +10,7 @@ import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
10
10
  import { f32, u32, vec4f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
11
11
  import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
12
12
  import { SAMPLER_LINEAR_UPSCALE } from "../../renderer/texture/SAMPLER_LINEAR_UPSCALE.js";
13
+ import { ENVIRONMENT_MAP_SAMPLER_RESOURCE } from "../../renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.js";
13
14
 
14
15
  /**
15
16
  * Rows of the sphere grid, top to bottom.
@@ -163,7 +164,8 @@ const view_resources = new ShaderResourceSetDescriptor();
163
164
 
164
165
  view_resources.createGroup()
165
166
  .addUniform("view", PLAYGROUND_VIEW_STRUCT)
166
- .addTexture("tEnvironment")
167
+ .addTexture("tEnvironment", "float")
168
+ .add(ENVIRONMENT_MAP_SAMPLER_RESOURCE)
167
169
  .addTexture("tSplitSum", "float")
168
170
  .addSampler("sLinear", "filtering", SAMPLER_LINEAR_UPSCALE)
169
171
  .addStorageBuffer("probe", SH_EXP_P4Q2_PROBE_STRUCT, false)
@@ -1,4 +1,7 @@
1
1
  /**
2
+ * The environment map's level 0 in a direction: one hardware bilinear tap through the octahedral
3
+ * skirt (see `texture_octahedral_skirt_uv`).
4
+ *
2
5
  * see {@link shader_sky_irradiance_lut}
3
6
  * @type {CodeChunk}
4
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_sample_environment_color.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_environment_color.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH,6CAFU,SAAS,CAajB;0BAjBwB,iCAAiC"}
1
+ {"version":3,"file":"chunk_sample_environment_color.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_sample_environment_color.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,6CAFU,SAAS,CAcjB;0BArBwB,iCAAiC"}
@@ -1,21 +1,24 @@
1
- import {
2
- chunk_texture_octahedral_sample_bilinear
3
- } from "../shader/chunk/texture/octahedral/chunk_texture_octahedral_sample_bilinear.js";
1
+ import { chunk_uv_octahedral_unit_encode } from "../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_encode.js";
2
+ import { chunk_texture_octahedral_skirt_uv } from "../shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.js";
4
3
  import { CodeChunk } from "../shader/compiler/CodeChunk.js";
5
4
 
6
5
  /**
6
+ * The environment map's level 0 in a direction: one hardware bilinear tap through the octahedral
7
+ * skirt (see `texture_octahedral_skirt_uv`).
8
+ *
7
9
  * see {@link shader_sky_irradiance_lut}
8
10
  * @type {CodeChunk}
9
11
  */
10
12
  export const chunk_sample_environment_color = CodeChunk.from(
11
13
  //language=WGSL
12
14
  `
13
- fn sample_environment_color( tEnvironment:texture_2d<f32>, rayDir: vec3<f32> )-> vec3<f32>{
14
- let texture_size = textureDimensions(tEnvironment, 0);
15
+ fn sample_environment_color(tEnvironment: texture_2d<f32>, sEnvironment: sampler, rayDir: vec3<f32>) -> vec3<f32> {
16
+ let uv = texture_octahedral_skirt_uv(uv_octahedral_unit_encode(rayDir), f32(textureDimensions(tEnvironment).x));
15
17
 
16
- return texture_octahedral_sample_bilinear( tEnvironment, vec2(0), texture_size.x, rayDir, 0 ).rgb;
18
+ return textureSampleLevel(tEnvironment, sEnvironment, uv, 0.0).rgb;
17
19
  }
18
20
  `, [
19
- chunk_texture_octahedral_sample_bilinear,
21
+ chunk_uv_octahedral_unit_encode,
22
+ chunk_texture_octahedral_skirt_uv,
20
23
  ]
21
- );
24
+ );
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Side of the sky irradiance map, skirt included: it is an environment map like any other, so its
3
+ * level 0 carries the one-texel octahedral skirt (see `texture_octahedral_skirt_uv`).
4
+ * @type {number}
5
+ */
6
+ export const SKY_IRRADIANCE_LUT_RESOLUTION: number;
1
7
  export const shader_sky_irradiance_lut: ImageShader;
2
8
  import { ImageShader } from "../shader/ImageShader.js";
3
9
  //# sourceMappingURL=shader_sky_irradiance_lut.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader_sky_irradiance_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js"],"names":[],"mappings":"AA4MA,oDAWG;4BA1LyB,0BAA0B"}
1
+ {"version":3,"file":"shader_sky_irradiance_lut.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js"],"names":[],"mappings":"AAiDA;;;;GAIG;AACH,4CAFU,MAAM,CAEkC;AAkKlD,oDAWG;4BAnMyB,0BAA0B"}