@woosh/meep-engine 3.63.3 → 3.64.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 (139) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/package.json +1 -1
  3. package/src/core/color/xyz/m3_chromatic_adaptation_bradford.d.ts +14 -0
  4. package/src/core/color/xyz/m3_chromatic_adaptation_bradford.d.ts.map +1 -0
  5. package/src/core/color/xyz/m3_chromatic_adaptation_bradford.js +51 -0
  6. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts +2 -1
  7. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts.map +1 -1
  8. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.js +51 -70
  9. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -1
  10. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +8 -64
  11. package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.d.ts +17 -0
  12. package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.d.ts.map +1 -0
  13. package/src/core/math/linalg/eigen/matrix_symmetric_jacobi_rotate_in_place.js +64 -0
  14. package/src/core/math/linalg/solve_box_constrained_qp.d.ts +30 -0
  15. package/src/core/math/linalg/solve_box_constrained_qp.d.ts.map +1 -0
  16. package/src/core/math/linalg/solve_box_constrained_qp.js +205 -0
  17. package/src/engine/physics/constraint/soft_spring_coefficients.d.ts +24 -0
  18. package/src/engine/physics/constraint/soft_spring_coefficients.d.ts.map +1 -0
  19. package/src/engine/physics/constraint/soft_spring_coefficients.js +38 -0
  20. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  21. package/src/engine/physics/constraint/solve_constraints.js +16 -8
  22. package/src/engine/physics/ecs/PhysicsSystem.d.ts +54 -0
  23. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  24. package/src/engine/physics/ecs/PhysicsSystem.js +192 -7
  25. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  26. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +3 -5
  27. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  28. package/src/engine/physics/inertia/world_inverse_inertia.js +3 -5
  29. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +183 -12
  30. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  31. package/src/engine/physics/vehicle/RaycastVehicle.js +1046 -121
  32. package/src/shade/playground/tonemap_sdr/README.md +11 -8
  33. package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +2 -2
  34. package/src/shade/renderer/Renderer.d.ts +5 -6
  35. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  36. package/src/shade/renderer/Renderer.js +15 -88
  37. package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.d.ts +14 -0
  38. package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.d.ts.map +1 -0
  39. package/src/shade/renderer/animation/chunk_animation_curve_evaluate_keys.js +62 -0
  40. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts +158 -0
  41. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -0
  42. package/src/shade/renderer/deferred/tonemap/ColorGrade.js +337 -0
  43. package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.d.ts +9 -0
  44. package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.d.ts.map +1 -0
  45. package/src/shade/renderer/deferred/tonemap/SAMPLER_TONEMAP_LUT.js +15 -0
  46. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.d.ts +6 -0
  47. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.d.ts.map +1 -0
  48. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_ACES.js +84 -0
  49. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.d.ts +10 -0
  50. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.d.ts.map +1 -0
  51. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_GT7.js +25 -0
  52. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.d.ts +9 -0
  53. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.d.ts.map +1 -0
  54. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_NONE.js +20 -0
  55. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.d.ts +14 -0
  56. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.d.ts.map +1 -0
  57. package/src/shade/renderer/deferred/tonemap/TONE_MAP_OPERATOR_PBR_NEUTRAL.js +30 -0
  58. package/src/shade/renderer/deferred/tonemap/ToneMapOperator.d.ts +54 -0
  59. package/src/shade/renderer/deferred/tonemap/ToneMapOperator.d.ts.map +1 -0
  60. package/src/shade/renderer/deferred/tonemap/ToneMapOperator.js +63 -0
  61. package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts +106 -0
  62. package/src/shade/renderer/deferred/tonemap/ToneMapper.d.ts.map +1 -0
  63. package/src/shade/renderer/deferred/tonemap/ToneMapper.js +474 -0
  64. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts +5 -13
  65. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts.map +1 -1
  66. package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.js +5 -44
  67. package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts +7 -25
  68. package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts.map +1 -1
  69. package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.js +11 -51
  70. package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.d.ts +20 -0
  71. package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.d.ts.map +1 -0
  72. package/src/shade/renderer/deferred/tonemap/m3_white_balance_rec709.js +103 -0
  73. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts +9 -0
  74. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_lut.d.ts.map +1 -0
  75. package/src/shade/renderer/deferred/tonemap/{shader_tonemap_HDR_none.js → shader_tonemap_HDR_lut.js} +22 -18
  76. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts +9 -0
  77. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_lut.d.ts.map +1 -0
  78. package/src/shade/renderer/deferred/tonemap/{shader_tonemap_LDR_aces.js → shader_tonemap_LDR_lut.js} +24 -24
  79. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.d.ts +23 -0
  80. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.d.ts.map +1 -0
  81. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_bake.js +92 -0
  82. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.d.ts +15 -0
  83. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.d.ts.map +1 -0
  84. package/src/shade/renderer/deferred/tonemap/shader_tonemap_lut_sdr_from_hdr.js +73 -0
  85. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  86. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  87. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  88. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  89. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  90. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +1 -1
  91. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  92. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  93. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts +22 -0
  94. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.d.ts.map +1 -0
  95. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_REC709_AP1.js +62 -0
  96. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts +13 -0
  97. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.d.ts.map +1 -0
  98. package/src/shade/renderer/shader/chunk/color/grade/chunk_color_grade.js +140 -0
  99. package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.d.ts +11 -0
  100. package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.d.ts.map +1 -0
  101. package/src/shade/renderer/shader/chunk/color/oklab/chunk_oklab_compute_max_saturation.js +65 -0
  102. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.d.ts +14 -0
  103. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.d.ts.map +1 -0
  104. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_bt2390_eetf.js +38 -0
  105. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.d.ts +16 -0
  106. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.d.ts.map +1 -0
  107. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_lut.js +41 -0
  108. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  109. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -8
  110. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  111. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +2 -0
  112. package/src/shade/renderer/ShadeToneMappingMode.d.ts +0 -15
  113. package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +0 -1
  114. package/src/shade/renderer/ShadeToneMappingMode.js +0 -41
  115. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts +0 -9
  116. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts.map +0 -1
  117. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.js +0 -79
  118. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts +0 -17
  119. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts.map +0 -1
  120. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.js +0 -101
  121. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts +0 -9
  122. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts.map +0 -1
  123. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts +0 -10
  124. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts.map +0 -1
  125. package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.js +0 -80
  126. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts +0 -9
  127. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts.map +0 -1
  128. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.js +0 -80
  129. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts +0 -10
  130. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts.map +0 -1
  131. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts +0 -9
  132. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts.map +0 -1
  133. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.js +0 -71
  134. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts +0 -10
  135. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts.map +0 -1
  136. package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.js +0 -76
  137. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.d.ts +0 -3
  138. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.d.ts.map +0 -1
  139. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_hdr_bt2390.js +0 -44
@@ -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,3 +0,0 @@
1
- export const chunk_tonemap_hdr_bt2390: CodeChunk;
2
- import { CodeChunk } from "../../../compiler/CodeChunk.js";
3
- //# sourceMappingURL=chunk_tonemap_hdr_bt2390.d.ts.map
@@ -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
- )