@woosh/meep-engine 3.50.0 → 3.52.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.
- package/package.json +1 -1
- package/src/engine/graphics3/make_default_environment.d.ts.map +1 -1
- package/src/engine/graphics3/make_default_environment.js +11 -5
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/particle_ecs/moonlit_environment.d.ts.map +1 -1
- package/src/shade/playground/particle_ecs/moonlit_environment.js +11 -5
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +3 -1
- package/src/shade/playground/tonemap_sdr/README.md +5 -3
- package/src/shade/renderer/Renderer.d.ts +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +43 -15
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +3 -2
- package/src/shade/renderer/ShadeToneMappingMode.js +15 -4
- package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts +3 -0
- package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_environment_color.js +11 -8
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -0
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +227 -215
- package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.d.ts.map +1 -1
- package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.js +2 -0
- package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.js +4 -2
- package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.d.ts.map +1 -1
- package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.js +4 -2
- package/src/shade/renderer/deferred/shader_background.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_background.js +4 -2
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts +38 -0
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.js +97 -0
- package/src/shade/renderer/deferred/{TonemapDisplaySettings.d.ts → tonemap/TonemapDisplaySettings.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{TonemapDisplaySettings.js → tonemap/TonemapDisplaySettings.js} +5 -5
- package/src/shade/renderer/deferred/{shader_tonemap_HDR.d.ts → tonemap/shader_tonemap_HDR.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR.js → tonemap/shader_tonemap_HDR.js} +9 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts +17 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.js +101 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.d.ts → tonemap/shader_tonemap_HDR_none.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.js → tonemap/shader_tonemap_HDR_none.js} +6 -6
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.d.ts → tonemap/shader_tonemap_HDR_pbr_neutral.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.js → tonemap/shader_tonemap_HDR_pbr_neutral.js} +8 -8
- package/src/shade/renderer/deferred/{shader_tonemap_LDR.d.ts → tonemap/shader_tonemap_LDR.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR.js → tonemap/shader_tonemap_LDR.js} +10 -10
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts +10 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.js +77 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.d.ts → tonemap/shader_tonemap_LDR_none.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.js → tonemap/shader_tonemap_LDR_none.js} +7 -7
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.d.ts → tonemap/shader_tonemap_LDR_pbr_neutral.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.js → tonemap/shader_tonemap_LDR_pbr_neutral.js} +8 -8
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +3 -1
- package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +3 -1
- package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +3 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +3 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +4 -2
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +44 -0
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts +2 -1
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.js +3 -2
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts +14 -0
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.js +25 -0
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +3 -4
- package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts +19 -0
- package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/octahedral_skirt_matches.js +67 -0
- package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts +16 -0
- package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.js +35 -0
- package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts +7 -2
- package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/resample_cube_to_octahedral.js +23 -7
- package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts +8 -2
- package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.js +24 -7
- package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts +12 -0
- package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.js +54 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +2 -2
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +5 -4
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +13 -9
- package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_project_environment_sh.js +3 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +3 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +3 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +3 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +3 -1
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +3 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +0 -5
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +0 -6
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.js +4 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -0
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +3 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +160 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +5 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +15 -5
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts +41 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.js +692 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.js +446 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.js +68 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts +32 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.js +163 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +10 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +12 -4
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.js +27 -0
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.js +24 -0
- package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts +18 -1
- package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.js +45 -27
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -169
- package/src/shade/renderer/volumetrics/NOTES.md +209 -0
- package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.js +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts +36 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.js +129 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +75 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts +26 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.js +110 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -14
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +9 -4
- package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts +31 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.js +139 -0
- package/src/shade/renderer/deferred/TonemapDisplaySettings.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/make_default_environment.js"],"names":[],"mappings":"
|
|
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
|
-
*
|
|
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
|
-
|
|
81
|
-
|
|
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
|
|
86
|
-
(v
|
|
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
|
|
@@ -66,11 +66,11 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
66
66
|
/**
|
|
67
67
|
* @param {FluidComponent} fluid
|
|
68
68
|
*/
|
|
69
|
-
static "__#
|
|
69
|
+
static "__#462@#refresh_masks"(fluid: FluidComponent): void;
|
|
70
70
|
/**
|
|
71
71
|
* @param {FluidComponent} fluid
|
|
72
72
|
*/
|
|
73
|
-
static "__#
|
|
73
|
+
static "__#462@#clear_field"(fluid: FluidComponent): void;
|
|
74
74
|
/**
|
|
75
75
|
* Mark every cell of `fluid` whose centre lies within `inflation` of the
|
|
76
76
|
* posed shape as solid. Iteration is clipped to the shape's world AABB
|
|
@@ -82,7 +82,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
82
82
|
* @param {number} inflation world-units SDF threshold
|
|
83
83
|
* @param {Float64Array} point length-3 scratch
|
|
84
84
|
*/
|
|
85
|
-
static "__#
|
|
85
|
+
static "__#462@#voxelize"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array): void;
|
|
86
86
|
/**
|
|
87
87
|
* Write the obstacle's translation velocity onto every face of every cell
|
|
88
88
|
* it voxelized — the moving-wall boundary condition. Runs AFTER the mask
|
|
@@ -102,7 +102,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
102
102
|
* @param {number} wvy
|
|
103
103
|
* @param {number} wvz
|
|
104
104
|
*/
|
|
105
|
-
static "__#
|
|
105
|
+
static "__#462@#stamp_wall_velocity"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array, wvx: number, wvy: number, wvz: number): void;
|
|
106
106
|
constructor();
|
|
107
107
|
dependencies: (typeof FluidObstacle)[];
|
|
108
108
|
components_used: (ResourceAccessSpecification<typeof Transform64> | ResourceAccessSpecification<typeof FluidObstacle> | ResourceAccessSpecification<typeof Collider> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof FluidComponent>)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moonlit_environment.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/particle_ecs/moonlit_environment.js"],"names":[],"mappings":"
|
|
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
|
-
*
|
|
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
|
-
|
|
118
|
-
|
|
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
|
|
123
|
-
(v
|
|
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":"
|
|
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,12 +1,14 @@
|
|
|
1
1
|
# Tone mapping: GT7 and PBR Neutral, SDR and HDR
|
|
2
2
|
|
|
3
|
-
The renderer has
|
|
3
|
+
The renderer has four tone mapping modes, each one choice for every output (`ShadeToneMappingMode`):
|
|
4
4
|
|
|
5
|
-
- `
|
|
5
|
+
- `ACES`, the default: Unreal Engine's look;
|
|
6
|
+
- `GT7`;
|
|
6
7
|
- `PBR_NEUTRAL`;
|
|
7
8
|
- `NONE`.
|
|
8
9
|
|
|
9
|
-
This page compares
|
|
10
|
+
This page compares GT7 and PBR Neutral, and shows each one's HDR form beside its SDR form. ACES is not one of its
|
|
11
|
+
views; the engine's own canvas shows it, and `shader_tonemap_aces.spec.js` holds it to Unreal's and OpenColorIO's numbers.
|
|
10
12
|
|
|
11
13
|
The engine renders and tonemaps each frame as usual. Two extensions then redraw the canvas from the HDR colour the
|
|
12
14
|
tonemapper was given:
|
|
@@ -40,7 +40,7 @@ export class Renderer {
|
|
|
40
40
|
transparency_mode: ShadeTransparencyMode;
|
|
41
41
|
/**
|
|
42
42
|
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
43
|
-
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
43
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. ACES, Unreal's default look, unless set. Read every frame, so it can be flipped
|
|
44
44
|
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
45
45
|
* @type {ShadeToneMappingMode}
|
|
46
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
|
|
@@ -22,13 +22,16 @@ import { shader_composite_volumetrics } from "./deferred/shader_composite_volume
|
|
|
22
22
|
import { shader_deferred_main } from "./deferred/shader_deferred_main.js";
|
|
23
23
|
import { LOCAL_LIGHT_SHADING } from "./deferred/LOCAL_LIGHT_SHADING.js";
|
|
24
24
|
import { LocalLightShading } from "./deferred/LocalLightShading.js";
|
|
25
|
-
import { shader_tonemap_HDR } from "./deferred/shader_tonemap_HDR.js";
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
25
|
+
import { shader_tonemap_HDR } from "./deferred/tonemap/shader_tonemap_HDR.js";
|
|
26
|
+
import { shader_tonemap_HDR_aces } from "./deferred/tonemap/shader_tonemap_HDR_aces.js";
|
|
27
|
+
import { shader_tonemap_HDR_none } from "./deferred/tonemap/shader_tonemap_HDR_none.js";
|
|
28
|
+
import { shader_tonemap_HDR_pbr_neutral } from "./deferred/tonemap/shader_tonemap_HDR_pbr_neutral.js";
|
|
29
|
+
import { shader_tonemap_LDR } from "./deferred/tonemap/shader_tonemap_LDR.js";
|
|
30
|
+
import { shader_tonemap_LDR_aces } from "./deferred/tonemap/shader_tonemap_LDR_aces.js";
|
|
31
|
+
import { shader_tonemap_LDR_none } from "./deferred/tonemap/shader_tonemap_LDR_none.js";
|
|
32
|
+
import { shader_tonemap_LDR_pbr_neutral } from "./deferred/tonemap/shader_tonemap_LDR_pbr_neutral.js";
|
|
33
|
+
import { TonemapAces2Tables } from "./deferred/tonemap/TonemapAces2Tables.js";
|
|
34
|
+
import { TonemapDisplaySettings } from "./deferred/tonemap/TonemapDisplaySettings.js";
|
|
32
35
|
import { FrameContext } from "./extension/FrameContext.js";
|
|
33
36
|
import { FramePhase } from "./extension/FramePhase.js";
|
|
34
37
|
import { GBufferTextures } from "./extension/GBufferTextures.js";
|
|
@@ -225,11 +228,11 @@ export class Renderer {
|
|
|
225
228
|
|
|
226
229
|
/**
|
|
227
230
|
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
228
|
-
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
231
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. ACES, Unreal's default look, unless set. Read every frame, so it can be flipped
|
|
229
232
|
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
230
233
|
* @type {ShadeToneMappingMode}
|
|
231
234
|
*/
|
|
232
|
-
tone_mapping_mode = ShadeToneMappingMode.
|
|
235
|
+
tone_mapping_mode = ShadeToneMappingMode.ACES;
|
|
233
236
|
|
|
234
237
|
/**
|
|
235
238
|
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
@@ -1399,6 +1402,13 @@ export class Renderer {
|
|
|
1399
1402
|
*/
|
|
1400
1403
|
#tonemap_settings = new TonemapDisplaySettings();
|
|
1401
1404
|
|
|
1405
|
+
/**
|
|
1406
|
+
* The ACES HDR pass's two output transforms, built for the display in {@link #tonemap_settings}.
|
|
1407
|
+
*
|
|
1408
|
+
* @type {TonemapAces2Tables}
|
|
1409
|
+
*/
|
|
1410
|
+
#tonemap_aces2_tables = new TonemapAces2Tables();
|
|
1411
|
+
|
|
1402
1412
|
#update_presentation_format() {
|
|
1403
1413
|
|
|
1404
1414
|
const format8bit = navigator.gpu.getPreferredCanvasFormat();
|
|
@@ -1741,6 +1751,10 @@ export class Renderer {
|
|
|
1741
1751
|
return this.#hdr_supported ? shader_tonemap_HDR_none : shader_tonemap_LDR_none;
|
|
1742
1752
|
}
|
|
1743
1753
|
|
|
1754
|
+
if (this.tone_mapping_mode === ShadeToneMappingMode.ACES) {
|
|
1755
|
+
return this.#hdr_supported ? shader_tonemap_HDR_aces : shader_tonemap_LDR_aces;
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1744
1758
|
if (this.tone_mapping_mode === ShadeToneMappingMode.PBR_NEUTRAL) {
|
|
1745
1759
|
return this.#hdr_supported ? shader_tonemap_HDR_pbr_neutral : shader_tonemap_LDR_pbr_neutral;
|
|
1746
1760
|
}
|
|
@@ -1822,6 +1836,7 @@ export class Renderer {
|
|
|
1822
1836
|
this.#scene_sdfs.clear();
|
|
1823
1837
|
|
|
1824
1838
|
this.#autoexposure?.destroy();
|
|
1839
|
+
this.#tonemap_aces2_tables.destroy();
|
|
1825
1840
|
this.#depth_of_field?.destroy();
|
|
1826
1841
|
this.#depth_of_field_unreal?.destroy();
|
|
1827
1842
|
this.#restir_di?.destroy();
|
|
@@ -3177,16 +3192,29 @@ export class Renderer {
|
|
|
3177
3192
|
|
|
3178
3193
|
current_color_out = record_scene_color.color;
|
|
3179
3194
|
|
|
3195
|
+
const tonemap_shader = this.#tonemap_shader();
|
|
3196
|
+
|
|
3180
3197
|
// every pass reads from the settings only the members its immediate struct names: the canvas's primaries
|
|
3181
3198
|
// from its working space, and, on an HDR display, the peak
|
|
3199
|
+
const tonemap_inputs = {
|
|
3200
|
+
input_color: current_color_out,
|
|
3201
|
+
settings: this.#tonemap_settings,
|
|
3202
|
+
exposure,
|
|
3203
|
+
};
|
|
3204
|
+
|
|
3205
|
+
if (tonemap_shader === shader_tonemap_HDR_aces) {
|
|
3206
|
+
// the two ACES 2.0 transforms for this display, rebuilt only when the display changed
|
|
3207
|
+
const display = this.#tonemap_settings;
|
|
3208
|
+
const tables = this.#tonemap_aces2_tables;
|
|
3209
|
+
|
|
3210
|
+
tables.update(display.peak_nits);
|
|
3211
|
+
tonemap_inputs.aces2_tables = graph_import_buffer(graph, tables.gpu_buffer(this.device), "tonemap/aces2 tables");
|
|
3212
|
+
}
|
|
3213
|
+
|
|
3182
3214
|
[current_color_out] = graph_image_pass({
|
|
3183
3215
|
graph,
|
|
3184
|
-
shader:
|
|
3185
|
-
inputs:
|
|
3186
|
-
input_color: current_color_out,
|
|
3187
|
-
settings: this.#tonemap_settings,
|
|
3188
|
-
exposure
|
|
3189
|
-
},
|
|
3216
|
+
shader: tonemap_shader,
|
|
3217
|
+
inputs: tonemap_inputs,
|
|
3190
3218
|
output: [gr_texture_canvas]
|
|
3191
3219
|
});
|
|
3192
3220
|
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* How the exposed scene colour becomes display colour.
|
|
3
3
|
*
|
|
4
4
|
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
-
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and
|
|
6
|
-
* setting on purpose.
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and Epic's for how Unreal 5.8
|
|
6
|
+
* takes its Filmic picture to HDR, and there is no per-output setting on purpose.
|
|
7
7
|
*/
|
|
8
8
|
export type ShadeToneMappingMode = number;
|
|
9
9
|
export namespace ShadeToneMappingMode {
|
|
10
10
|
let GT7: number;
|
|
11
11
|
let NONE: number;
|
|
12
12
|
let PBR_NEUTRAL: number;
|
|
13
|
+
let ACES: number;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=ShadeToneMappingMode.d.ts.map
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* How the exposed scene colour becomes display colour.
|
|
3
3
|
*
|
|
4
4
|
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
-
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and
|
|
6
|
-
* setting on purpose.
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and Epic's for how Unreal 5.8
|
|
6
|
+
* takes its Filmic picture to HDR, and there is no per-output setting on purpose.
|
|
7
7
|
*
|
|
8
8
|
* @enum {number}
|
|
9
9
|
*/
|
|
10
10
|
export const ShadeToneMappingMode = {
|
|
11
11
|
/**
|
|
12
|
-
* GT7 tone mapping (Polyphony Digital, SIGGRAPH 2025). An exposed 1.0 shows at
|
|
13
|
-
*
|
|
12
|
+
* GT7 tone mapping (Polyphony Digital, SIGGRAPH 2025). An exposed 1.0 shows at the paper white on both outputs.
|
|
13
|
+
* SDR clips at that paper white, the curve's SDR mode, and HDR rolls off to the display's peak.
|
|
14
14
|
*/
|
|
15
15
|
GT7: 0,
|
|
16
16
|
/**
|
|
@@ -27,4 +27,15 @@ export const ShadeToneMappingMode = {
|
|
|
27
27
|
* An exposed 0.18 shows at 0.14 of SDR white, where {@link GT7} shows it at 0.179.
|
|
28
28
|
*/
|
|
29
29
|
PBR_NEUTRAL: 2,
|
|
30
|
+
/**
|
|
31
|
+
* Unreal Engine's default look, the default here too. SDR is UE's "Filmic" tone mapper at its default settings,
|
|
32
|
+
* the ACES-derived curve every Unreal title ships with unless it chose otherwise. HDR is what Unreal 5.8 does with
|
|
33
|
+
* the same method: the SDR picture, taken back to the scene through the inverse ACES 2.0 output transform for an
|
|
34
|
+
* SDR display, and rendered again with the ACES 2.0 output transform for the display's headroom.
|
|
35
|
+
*
|
|
36
|
+
* An exposed 0.18 shows at 0.18 of SDR white, as with {@link GT7}, with a mid-tone contrast of 1.36 against GT7's
|
|
37
|
+
* 1.05. On HDR the picture expands into the headroom and mid-grey rises with it, by ACES 2.0's design: 0.26 of SDR
|
|
38
|
+
* white at a 1000 cd/m² display.
|
|
39
|
+
*/
|
|
40
|
+
ACES: 3,
|
|
30
41
|
};
|
|
@@ -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":"
|
|
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
|
-
|
|
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(
|
|
14
|
-
let
|
|
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
|
|
18
|
+
return textureSampleLevel(tEnvironment, sEnvironment, uv, 0.0).rgb;
|
|
17
19
|
}
|
|
18
20
|
`, [
|
|
19
|
-
|
|
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":"
|
|
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"}
|