@woosh/meep-engine 3.63.3 → 3.64.1
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/CHANGELOG.md +51 -0
- package/package.json +1 -1
- package/src/core/color/xyz/m3_chromatic_adaptation_bradford.d.ts +14 -0
- package/src/core/color/xyz/m3_chromatic_adaptation_bradford.d.ts.map +1 -0
- package/src/core/color/xyz/m3_chromatic_adaptation_bradford.js +51 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts +2 -1
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.js +51 -70
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +8 -64
- package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.d.ts +17 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.d.ts.map +1 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.js +64 -0
- package/src/core/math/linalg/solve_box_constrained_qp.d.ts +30 -0
- package/src/core/math/linalg/solve_box_constrained_qp.d.ts.map +1 -0
- package/src/core/math/linalg/solve_box_constrained_qp.js +205 -0
- package/src/engine/graphics/texture/sampler/exr_to_sampler2d.d.ts +27 -0
- package/src/engine/graphics/texture/sampler/exr_to_sampler2d.d.ts.map +1 -0
- package/src/engine/graphics/texture/sampler/exr_to_sampler2d.js +91 -0
- package/src/engine/graphics/texture/sampler/sampler2d_to_exr.d.ts +23 -0
- package/src/engine/graphics/texture/sampler/sampler2d_to_exr.d.ts.map +1 -0
- package/src/engine/graphics/texture/sampler/sampler2d_to_exr.js +64 -0
- package/src/engine/physics/constraint/soft_spring_coefficients.d.ts +24 -0
- package/src/engine/physics/constraint/soft_spring_coefficients.d.ts.map +1 -0
- package/src/engine/physics/constraint/soft_spring_coefficients.js +38 -0
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +16 -8
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +54 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +192 -7
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +3 -5
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +3 -5
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts +183 -12
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +1046 -121
- package/src/format/image/exr/ExrCompression.d.ts +22 -0
- package/src/format/image/exr/ExrCompression.d.ts.map +1 -0
- package/src/format/image/exr/ExrCompression.js +27 -0
- package/src/format/image/exr/ExrImage.d.ts +32 -0
- package/src/format/image/exr/ExrImage.d.ts.map +1 -0
- package/src/format/image/exr/ExrImage.js +32 -0
- package/src/format/image/exr/ExrPixelType.d.ts +13 -0
- package/src/format/image/exr/ExrPixelType.d.ts.map +1 -0
- package/src/format/image/exr/ExrPixelType.js +18 -0
- package/src/format/image/exr/exr_compare_names.d.ts +16 -0
- package/src/format/image/exr/exr_compare_names.d.ts.map +1 -0
- package/src/format/image/exr/exr_compare_names.js +25 -0
- package/src/format/image/exr/exr_constants.d.ts +49 -0
- package/src/format/image/exr/exr_constants.d.ts.map +1 -0
- package/src/format/image/exr/exr_constants.js +56 -0
- package/src/format/image/exr/exr_read.d.ts +32 -0
- package/src/format/image/exr/exr_read.d.ts.map +1 -0
- package/src/format/image/exr/exr_read.js +531 -0
- package/src/format/image/exr/exr_sample_bits.d.ts +16 -0
- package/src/format/image/exr/exr_sample_bits.d.ts.map +1 -0
- package/src/format/image/exr/exr_sample_bits.js +21 -0
- package/src/format/image/exr/exr_scanlines_per_chunk.d.ts +17 -0
- package/src/format/image/exr/exr_scanlines_per_chunk.d.ts.map +1 -0
- package/src/format/image/exr/exr_scanlines_per_chunk.js +31 -0
- package/src/format/image/exr/exr_write.d.ts +27 -0
- package/src/format/image/exr/exr_write.d.ts.map +1 -0
- package/src/format/image/exr/exr_write.js +378 -0
- package/src/shade/playground/probe_clipmap/index.html +5 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +34 -1
- package/src/shade/playground/tonemap_sdr/README.md +11 -8
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +2 -2
- package/src/shade/renderer/Renderer.d.ts +5 -6
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +15 -88
- package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.d.ts +14 -0
- package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.d.ts.map +1 -0
- package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.js +62 -0
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts +158 -0
- package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +337 -0
- package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.d.ts +9 -0
- package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.js +15 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.d.ts +6 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.js +84 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.d.ts +10 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.js +25 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.d.ts +9 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.js +20 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.d.ts +14 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.js +30 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapOperator.d.ts +54 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapOperator.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapOperator.js +63 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +106 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/ToneMapper.js +474 -0
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts +5 -13
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.js +5 -44
- package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts +7 -25
- package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.js +11 -51
- package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.d.ts +20 -0
- package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.js +103 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +9 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/{shader_tonemap_HDR_none.js → shader_tonemap_HDR_lut.js} +22 -18
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +9 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/{shader_tonemap_LDR_aces.js → shader_tonemap_LDR_lut.js} +24 -24
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.d.ts +23 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.js +92 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.d.ts +15 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.js +73 -0
- 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/probe_clipmap/GPUProbeClipmapGI.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +3 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +4 -17
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +15 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +7 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +28 -17
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +18 -18
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +44 -48
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +62 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +140 -0
- package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.js +65 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.js +38 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.js +41 -0
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts +8 -0
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +21 -3
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -8
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +2 -0
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +0 -15
- package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +0 -1
- package/src/shade/renderer/ShadeToneMappingMode.js +0 -41
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts +0 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.js +0 -79
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts +0 -17
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.js +0 -101
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts +0 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts +0 -10
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.js +0 -80
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts +0 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.js +0 -80
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts +0 -10
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts +0 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.js +0 -71
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts +0 -10
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.js +0 -76
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.js +0 -44
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { F32_CONTAINER_STRUCT } from "../../shader/type/F32_CONTAINER_STRUCT.js";
|
|
2
|
-
import { TONEMAP_SETTINGS_REC2020 } from "./TonemapDisplaySettings.js";
|
|
3
|
-
import { chunk_CRM_FROM_REC709_TO_REC2020 } from "../../shader/chunk/color/conversion/chunk_CRM_FROM_REC709_TO_REC2020.js";
|
|
4
|
-
import { chunk_sRGBTransferOETF } from "../../shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js";
|
|
5
|
-
import { chunk_PAPER_WHITE_NITS } from "../../shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js";
|
|
6
|
-
import { chunk_tonemap_gt7 } from "../../shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js";
|
|
7
|
-
import {
|
|
8
|
-
chunk_dither_color_8bit_triangle_noise
|
|
9
|
-
} from "../../shader/chunk/texture/dither/chunk_dither_color_8bit_triangle_noise.js";
|
|
10
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
11
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
12
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
13
|
-
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
14
|
-
|
|
15
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
16
|
-
resources.setImmediate("settings", TONEMAP_SETTINGS_REC2020);
|
|
17
|
-
resources.createGroup()
|
|
18
|
-
.addTexture("input_color", "float")
|
|
19
|
-
.addUniform("exposure", F32_CONTAINER_STRUCT)
|
|
20
|
-
|
|
21
|
-
const body = CodeChunk.from(
|
|
22
|
-
//language=WGSL
|
|
23
|
-
`
|
|
24
|
-
@fragment
|
|
25
|
-
fn main(
|
|
26
|
-
@builtin(position) coord : vec4<f32>,
|
|
27
|
-
) -> @location(0) vec4<f32> {
|
|
28
|
-
|
|
29
|
-
var color = textureLoad(input_color, vec2i(coord.xy), 0).rgb;
|
|
30
|
-
|
|
31
|
-
color *= exposure.value;
|
|
32
|
-
|
|
33
|
-
// GT7's SDR mode: the peak is the paper white, so the result tops out at 1.0. The HDR pass keeps the same paper
|
|
34
|
-
// white, so below the shoulder the two write the same colour.
|
|
35
|
-
let color_2020 = tonemap_gt7_rec2020(CRM_FROM_REC709_TO_REC2020 * color, PAPER_WHITE_NITS, PAPER_WHITE_NITS);
|
|
36
|
-
|
|
37
|
-
// into the primaries the canvas reports it was configured with (Renderer#configure_context): Display P3, or
|
|
38
|
-
// sRGB where the browser would not configure P3
|
|
39
|
-
let color_display = mat3x3<f32>(
|
|
40
|
-
settings.display_from_rec2020_c0,
|
|
41
|
-
settings.display_from_rec2020_c1,
|
|
42
|
-
settings.display_from_rec2020_c2
|
|
43
|
-
) * color_2020;
|
|
44
|
-
|
|
45
|
-
// apply gamma. Note that gamma is the same for "Display P3" and "sRGB"
|
|
46
|
-
color = sRGBTransferOETF(color_display);
|
|
47
|
-
|
|
48
|
-
// apply dither to remove color banding
|
|
49
|
-
color += dither_color_8bit_triangle_noise(coord.xy);
|
|
50
|
-
|
|
51
|
-
return vec4(color, 1.0);
|
|
52
|
-
}
|
|
53
|
-
`, [
|
|
54
|
-
chunk_tonemap_gt7,
|
|
55
|
-
chunk_PAPER_WHITE_NITS,
|
|
56
|
-
chunk_CRM_FROM_REC709_TO_REC2020,
|
|
57
|
-
chunk_dither_color_8bit_triangle_noise,
|
|
58
|
-
chunk_sRGBTransferOETF,
|
|
59
|
-
]
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* The SDR output with {@link ShadeToneMappingMode.GT7}: exposure, GT7 in its SDR mode, the canvas's primaries, the sRGB
|
|
64
|
-
* transfer curve and an 8-bit dither. {@link shader_tonemap_HDR} is the same operator for an HDR display.
|
|
65
|
-
*
|
|
66
|
-
* @type {ImageShader}
|
|
67
|
-
*/
|
|
68
|
-
export const shader_tonemap_LDR = new ImageShader({
|
|
69
|
-
descriptor: ShaderDescriptor.from({
|
|
70
|
-
label: "Tonemap/LDR",
|
|
71
|
-
resources,
|
|
72
|
-
body
|
|
73
|
-
}),
|
|
74
|
-
targets: [
|
|
75
|
-
{
|
|
76
|
-
label: "tone-mapped",
|
|
77
|
-
format: "rgba8unorm"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The SDR output with {@link ShadeToneMappingMode.ACES}: exposure, Unreal Engine's default "Filmic" tone mapping, the
|
|
3
|
-
* canvas's primaries, the sRGB transfer curve and an 8-bit dither. {@link shader_tonemap_HDR_aces} expands the same
|
|
4
|
-
* picture into an HDR display's headroom.
|
|
5
|
-
*
|
|
6
|
-
* @type {ImageShader}
|
|
7
|
-
*/
|
|
8
|
-
export const shader_tonemap_LDR_aces: ImageShader;
|
|
9
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
10
|
-
//# sourceMappingURL=shader_tonemap_LDR_aces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_tonemap_LDR_aces.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.js"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,sCAFU,WAAW,CAclB;4BApEyB,6BAA6B"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The SDR output with {@link ShadeToneMappingMode.NONE}: exposure, the canvas's primaries, the sRGB transfer curve and
|
|
3
|
-
* an 8-bit dither, and nothing in between.
|
|
4
|
-
*
|
|
5
|
-
* @type {ImageShader}
|
|
6
|
-
*/
|
|
7
|
-
export const shader_tonemap_LDR_none: ImageShader;
|
|
8
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
9
|
-
//# sourceMappingURL=shader_tonemap_LDR_none.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_tonemap_LDR_none.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.js"],"names":[],"mappings":"AAoDA;;;;;GAKG;AACH,sCAFU,WAAW,CAclB;4BA/DyB,6BAA6B"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { F32_CONTAINER_STRUCT } from "../../shader/type/F32_CONTAINER_STRUCT.js";
|
|
2
|
-
import { TONEMAP_SETTINGS_REC709 } from "./TonemapDisplaySettings.js";
|
|
3
|
-
import { chunk_sRGBTransferOETF } from "../../shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js";
|
|
4
|
-
import {
|
|
5
|
-
chunk_dither_color_8bit_triangle_noise
|
|
6
|
-
} from "../../shader/chunk/texture/dither/chunk_dither_color_8bit_triangle_noise.js";
|
|
7
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
8
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
9
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
10
|
-
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
11
|
-
|
|
12
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
13
|
-
resources.setImmediate("settings", TONEMAP_SETTINGS_REC709);
|
|
14
|
-
resources.createGroup()
|
|
15
|
-
.addTexture("input_color", "float")
|
|
16
|
-
.addUniform("exposure", F32_CONTAINER_STRUCT)
|
|
17
|
-
|
|
18
|
-
const body = CodeChunk.from(
|
|
19
|
-
//language=WGSL
|
|
20
|
-
`
|
|
21
|
-
@fragment
|
|
22
|
-
fn main(
|
|
23
|
-
@builtin(position) coord : vec4<f32>,
|
|
24
|
-
) -> @location(0) vec4<f32> {
|
|
25
|
-
|
|
26
|
-
var color = textureLoad(input_color, vec2i(coord.xy), 0).rgb;
|
|
27
|
-
|
|
28
|
-
color *= exposure.value;
|
|
29
|
-
|
|
30
|
-
// no tone mapping: the exposed colour as it is, 1.0 at SDR white. The 8-bit target clips what lies above.
|
|
31
|
-
|
|
32
|
-
// into the primaries the canvas reports it was configured with (Renderer#configure_context): Display P3, or
|
|
33
|
-
// sRGB where the browser would not configure P3
|
|
34
|
-
let color_display = mat3x3<f32>(
|
|
35
|
-
settings.display_from_rec709_c0,
|
|
36
|
-
settings.display_from_rec709_c1,
|
|
37
|
-
settings.display_from_rec709_c2
|
|
38
|
-
) * color;
|
|
39
|
-
|
|
40
|
-
color = sRGBTransferOETF(color_display);
|
|
41
|
-
|
|
42
|
-
// apply dither to remove color banding
|
|
43
|
-
color += dither_color_8bit_triangle_noise(coord.xy);
|
|
44
|
-
|
|
45
|
-
return vec4(color, 1.0);
|
|
46
|
-
}
|
|
47
|
-
`, [
|
|
48
|
-
chunk_dither_color_8bit_triangle_noise,
|
|
49
|
-
chunk_sRGBTransferOETF,
|
|
50
|
-
]
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* The SDR output with {@link ShadeToneMappingMode.NONE}: exposure, the canvas's primaries, the sRGB transfer curve and
|
|
55
|
-
* an 8-bit dither, and nothing in between.
|
|
56
|
-
*
|
|
57
|
-
* @type {ImageShader}
|
|
58
|
-
*/
|
|
59
|
-
export const shader_tonemap_LDR_none = new ImageShader({
|
|
60
|
-
descriptor: ShaderDescriptor.from({
|
|
61
|
-
label: "Tonemap/LDR/none",
|
|
62
|
-
resources,
|
|
63
|
-
body
|
|
64
|
-
}),
|
|
65
|
-
targets: [
|
|
66
|
-
{
|
|
67
|
-
label: "tone-mapped",
|
|
68
|
-
format: "rgba8unorm"
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The SDR output with {@link ShadeToneMappingMode.PBR_NEUTRAL}: exposure, the Khronos PBR Neutral specification, the
|
|
3
|
-
* canvas's primaries, the sRGB transfer curve and an 8-bit dither. {@link shader_tonemap_HDR_pbr_neutral} is the same
|
|
4
|
-
* operator for an HDR display.
|
|
5
|
-
*
|
|
6
|
-
* @type {ImageShader}
|
|
7
|
-
*/
|
|
8
|
-
export const shader_tonemap_LDR_pbr_neutral: ImageShader;
|
|
9
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
10
|
-
//# sourceMappingURL=shader_tonemap_LDR_pbr_neutral.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_tonemap_LDR_pbr_neutral.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.js"],"names":[],"mappings":"AAwDA;;;;;;GAMG;AACH,6CAFU,WAAW,CAclB;4BAnEyB,6BAA6B"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { F32_CONTAINER_STRUCT } from "../../shader/type/F32_CONTAINER_STRUCT.js";
|
|
2
|
-
import { TONEMAP_SETTINGS_REC709 } from "./TonemapDisplaySettings.js";
|
|
3
|
-
import { chunk_sRGBTransferOETF } from "../../shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js";
|
|
4
|
-
import { chunk_tonemap_khronos_pbr } from "../../shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.js";
|
|
5
|
-
import {
|
|
6
|
-
chunk_dither_color_8bit_triangle_noise
|
|
7
|
-
} from "../../shader/chunk/texture/dither/chunk_dither_color_8bit_triangle_noise.js";
|
|
8
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
9
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
10
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
11
|
-
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
12
|
-
|
|
13
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
14
|
-
resources.setImmediate("settings", TONEMAP_SETTINGS_REC709);
|
|
15
|
-
resources.createGroup()
|
|
16
|
-
.addTexture("input_color", "float")
|
|
17
|
-
.addUniform("exposure", F32_CONTAINER_STRUCT)
|
|
18
|
-
|
|
19
|
-
const body = CodeChunk.from(
|
|
20
|
-
//language=WGSL
|
|
21
|
-
`
|
|
22
|
-
@fragment
|
|
23
|
-
fn main(
|
|
24
|
-
@builtin(position) coord : vec4<f32>,
|
|
25
|
-
) -> @location(0) vec4<f32> {
|
|
26
|
-
|
|
27
|
-
var color = textureLoad(input_color, vec2i(coord.xy), 0).rgb;
|
|
28
|
-
|
|
29
|
-
color *= exposure.value;
|
|
30
|
-
|
|
31
|
-
// the specification: its peak is SDR white. It takes non-negative input.
|
|
32
|
-
color = tonemap_khronos_pbr(max(color, vec3<f32>(0.0)), 1.0);
|
|
33
|
-
|
|
34
|
-
// into the primaries the canvas reports it was configured with (Renderer#configure_context): Display P3, or
|
|
35
|
-
// sRGB where the browser would not configure P3
|
|
36
|
-
let color_display = mat3x3<f32>(
|
|
37
|
-
settings.display_from_rec709_c0,
|
|
38
|
-
settings.display_from_rec709_c1,
|
|
39
|
-
settings.display_from_rec709_c2
|
|
40
|
-
) * color;
|
|
41
|
-
|
|
42
|
-
// apply gamma. Note that gamma is the same for "Display P3" and "sRGB"
|
|
43
|
-
color = sRGBTransferOETF(color_display);
|
|
44
|
-
|
|
45
|
-
// apply dither to remove color banding
|
|
46
|
-
color += dither_color_8bit_triangle_noise(coord.xy);
|
|
47
|
-
|
|
48
|
-
return vec4(color, 1.0);
|
|
49
|
-
}
|
|
50
|
-
`, [
|
|
51
|
-
chunk_tonemap_khronos_pbr,
|
|
52
|
-
chunk_dither_color_8bit_triangle_noise,
|
|
53
|
-
chunk_sRGBTransferOETF,
|
|
54
|
-
]
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* The SDR output with {@link ShadeToneMappingMode.PBR_NEUTRAL}: exposure, the Khronos PBR Neutral specification, the
|
|
59
|
-
* canvas's primaries, the sRGB transfer curve and an 8-bit dither. {@link shader_tonemap_HDR_pbr_neutral} is the same
|
|
60
|
-
* operator for an HDR display.
|
|
61
|
-
*
|
|
62
|
-
* @type {ImageShader}
|
|
63
|
-
*/
|
|
64
|
-
export const shader_tonemap_LDR_pbr_neutral = new ImageShader({
|
|
65
|
-
descriptor: ShaderDescriptor.from({
|
|
66
|
-
label: "Tonemap/LDR/pbr_neutral",
|
|
67
|
-
resources,
|
|
68
|
-
body
|
|
69
|
-
}),
|
|
70
|
-
targets: [
|
|
71
|
-
{
|
|
72
|
-
label: "tone-mapped",
|
|
73
|
-
format: "rgba8unorm"
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_tonemap_hdr_bt2390.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.js"],"names":[],"mappings":"AAGA,iDAwCC;0BA3CyB,gCAAgC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
-
import { chunk_rgb_to_luminance } from "../chunk_rgb_to_luminance.js";
|
|
3
|
-
|
|
4
|
-
export const chunk_tonemap_hdr_bt2390 = CodeChunk.from(
|
|
5
|
-
//language=WGSL
|
|
6
|
-
`
|
|
7
|
-
fn tonemap_hdr_bt2390(
|
|
8
|
-
color_rec709: vec3<f32>,
|
|
9
|
-
peak_nits: f32,
|
|
10
|
-
paperwhite_nits: f32
|
|
11
|
-
) -> vec3<f32> {
|
|
12
|
-
|
|
13
|
-
// Convert to luminance
|
|
14
|
-
let luma = rgb_to_luminance(color_rec709);
|
|
15
|
-
|
|
16
|
-
let nits = luma * paperwhite_nits;
|
|
17
|
-
|
|
18
|
-
let knee = peak_nits * 0.75;
|
|
19
|
-
|
|
20
|
-
if(nits <= knee){
|
|
21
|
-
// no compression below knee
|
|
22
|
-
// NOTE: we also avoid division by zero, if nits == 0, it falls into this clause
|
|
23
|
-
return color_rec709;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Highlight compression using rational knee (BT.2390-style rolloff)
|
|
27
|
-
|
|
28
|
-
// Normalized input signal (t goes from 0 to 1 as nits goes from knee to infinity)
|
|
29
|
-
// Formula: (x - knee) / (x - knee + const)
|
|
30
|
-
let range = peak_nits - knee;
|
|
31
|
-
let t = (nits - knee) / (nits - knee + range);
|
|
32
|
-
|
|
33
|
-
// Map t back to absolute nits
|
|
34
|
-
let compressed_nits = knee + (t * range);
|
|
35
|
-
|
|
36
|
-
// 7. Normalize back to engine units
|
|
37
|
-
let scale = compressed_nits / nits;
|
|
38
|
-
|
|
39
|
-
return color_rec709 * scale;
|
|
40
|
-
}
|
|
41
|
-
`, [
|
|
42
|
-
chunk_rgb_to_luminance,
|
|
43
|
-
]
|
|
44
|
-
)
|