@flighthq/effects 0.1.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/dist/autoExposureEffect.d.ts +3 -0
- package/dist/autoExposureEffect.d.ts.map +1 -0
- package/dist/autoExposureEffect.js +4 -0
- package/dist/autoExposureEffect.js.map +1 -0
- package/dist/barrelDistortionEffect.d.ts +3 -0
- package/dist/barrelDistortionEffect.d.ts.map +1 -0
- package/dist/barrelDistortionEffect.js +4 -0
- package/dist/barrelDistortionEffect.js.map +1 -0
- package/dist/bloomEffect.d.ts +6 -0
- package/dist/bloomEffect.d.ts.map +1 -0
- package/dist/bloomEffect.js +16 -0
- package/dist/bloomEffect.js.map +1 -0
- package/dist/bokehDepthOfFieldEffect.d.ts +3 -0
- package/dist/bokehDepthOfFieldEffect.d.ts.map +1 -0
- package/dist/bokehDepthOfFieldEffect.js +4 -0
- package/dist/bokehDepthOfFieldEffect.js.map +1 -0
- package/dist/brightnessContrastEffect.d.ts +3 -0
- package/dist/brightnessContrastEffect.d.ts.map +1 -0
- package/dist/brightnessContrastEffect.js +4 -0
- package/dist/brightnessContrastEffect.js.map +1 -0
- package/dist/cameraMotionBlurEffect.d.ts +3 -0
- package/dist/cameraMotionBlurEffect.d.ts.map +1 -0
- package/dist/cameraMotionBlurEffect.js +4 -0
- package/dist/cameraMotionBlurEffect.js.map +1 -0
- package/dist/channelMixerEffect.d.ts +3 -0
- package/dist/channelMixerEffect.d.ts.map +1 -0
- package/dist/channelMixerEffect.js +4 -0
- package/dist/channelMixerEffect.js.map +1 -0
- package/dist/chromaticAberrationEffect.d.ts +3 -0
- package/dist/chromaticAberrationEffect.d.ts.map +1 -0
- package/dist/chromaticAberrationEffect.js +4 -0
- package/dist/chromaticAberrationEffect.js.map +1 -0
- package/dist/colorBlindSimulationEffect.d.ts +3 -0
- package/dist/colorBlindSimulationEffect.d.ts.map +1 -0
- package/dist/colorBlindSimulationEffect.js +4 -0
- package/dist/colorBlindSimulationEffect.js.map +1 -0
- package/dist/colorGradeEffect.d.ts +3 -0
- package/dist/colorGradeEffect.d.ts.map +1 -0
- package/dist/colorGradeEffect.js +4 -0
- package/dist/colorGradeEffect.js.map +1 -0
- package/dist/colorScienceMath.d.ts +9 -0
- package/dist/colorScienceMath.d.ts.map +1 -0
- package/dist/colorScienceMath.js +135 -0
- package/dist/colorScienceMath.js.map +1 -0
- package/dist/colorTemperatureMath.d.ts +5 -0
- package/dist/colorTemperatureMath.d.ts.map +1 -0
- package/dist/colorTemperatureMath.js +45 -0
- package/dist/colorTemperatureMath.js.map +1 -0
- package/dist/contactShadowsEffect.d.ts +3 -0
- package/dist/contactShadowsEffect.d.ts.map +1 -0
- package/dist/contactShadowsEffect.js +4 -0
- package/dist/contactShadowsEffect.js.map +1 -0
- package/dist/crtEffect.d.ts +3 -0
- package/dist/crtEffect.d.ts.map +1 -0
- package/dist/crtEffect.js +4 -0
- package/dist/crtEffect.js.map +1 -0
- package/dist/customShaderEffect.d.ts +3 -0
- package/dist/customShaderEffect.d.ts.map +1 -0
- package/dist/customShaderEffect.js +4 -0
- package/dist/customShaderEffect.js.map +1 -0
- package/dist/depthMath.d.ts +4 -0
- package/dist/depthMath.d.ts.map +1 -0
- package/dist/depthMath.js +55 -0
- package/dist/depthMath.js.map +1 -0
- package/dist/directionalBlurEffect.d.ts +3 -0
- package/dist/directionalBlurEffect.d.ts.map +1 -0
- package/dist/directionalBlurEffect.js +4 -0
- package/dist/directionalBlurEffect.js.map +1 -0
- package/dist/displacementEffect.d.ts +3 -0
- package/dist/displacementEffect.d.ts.map +1 -0
- package/dist/displacementEffect.js +4 -0
- package/dist/displacementEffect.js.map +1 -0
- package/dist/ditherEffect.d.ts +3 -0
- package/dist/ditherEffect.d.ts.map +1 -0
- package/dist/ditherEffect.js +4 -0
- package/dist/ditherEffect.js.map +1 -0
- package/dist/edgeDetectMath.d.ts +6 -0
- package/dist/edgeDetectMath.d.ts.map +1 -0
- package/dist/edgeDetectMath.js +72 -0
- package/dist/edgeDetectMath.js.map +1 -0
- package/dist/exposureEffect.d.ts +3 -0
- package/dist/exposureEffect.d.ts.map +1 -0
- package/dist/exposureEffect.js +4 -0
- package/dist/exposureEffect.js.map +1 -0
- package/dist/filmEmulationEffect.d.ts +3 -0
- package/dist/filmEmulationEffect.d.ts.map +1 -0
- package/dist/filmEmulationEffect.js +4 -0
- package/dist/filmEmulationEffect.js.map +1 -0
- package/dist/filmGrainEffect.d.ts +3 -0
- package/dist/filmGrainEffect.d.ts.map +1 -0
- package/dist/filmGrainEffect.js +4 -0
- package/dist/filmGrainEffect.js.map +1 -0
- package/dist/fxaaEffect.d.ts +3 -0
- package/dist/fxaaEffect.d.ts.map +1 -0
- package/dist/fxaaEffect.js +4 -0
- package/dist/fxaaEffect.js.map +1 -0
- package/dist/gaussianMath.d.ts +5 -0
- package/dist/gaussianMath.d.ts.map +1 -0
- package/dist/gaussianMath.js +42 -0
- package/dist/gaussianMath.js.map +1 -0
- package/dist/glitchEffect.d.ts +3 -0
- package/dist/glitchEffect.d.ts.map +1 -0
- package/dist/glitchEffect.js +4 -0
- package/dist/glitchEffect.js.map +1 -0
- package/dist/godRaysEffect.d.ts +3 -0
- package/dist/godRaysEffect.d.ts.map +1 -0
- package/dist/godRaysEffect.js +4 -0
- package/dist/godRaysEffect.js.map +1 -0
- package/dist/godRaysMath.d.ts +8 -0
- package/dist/godRaysMath.d.ts.map +1 -0
- package/dist/godRaysMath.js +49 -0
- package/dist/godRaysMath.js.map +1 -0
- package/dist/grayscaleEffect.d.ts +3 -0
- package/dist/grayscaleEffect.d.ts.map +1 -0
- package/dist/grayscaleEffect.js +4 -0
- package/dist/grayscaleEffect.js.map +1 -0
- package/dist/halftoneEffect.d.ts +3 -0
- package/dist/halftoneEffect.d.ts.map +1 -0
- package/dist/halftoneEffect.js +4 -0
- package/dist/halftoneEffect.js.map +1 -0
- package/dist/hueSaturationEffect.d.ts +3 -0
- package/dist/hueSaturationEffect.d.ts.map +1 -0
- package/dist/hueSaturationEffect.js +4 -0
- package/dist/hueSaturationEffect.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/invertEffect.d.ts +3 -0
- package/dist/invertEffect.d.ts.map +1 -0
- package/dist/invertEffect.js +4 -0
- package/dist/invertEffect.js.map +1 -0
- package/dist/kuwaharaEffect.d.ts +3 -0
- package/dist/kuwaharaEffect.d.ts.map +1 -0
- package/dist/kuwaharaEffect.js +4 -0
- package/dist/kuwaharaEffect.js.map +1 -0
- package/dist/kuwaharaMath.d.ts +6 -0
- package/dist/kuwaharaMath.d.ts.map +1 -0
- package/dist/kuwaharaMath.js +70 -0
- package/dist/kuwaharaMath.js.map +1 -0
- package/dist/lensDirtEffect.d.ts +3 -0
- package/dist/lensDirtEffect.d.ts.map +1 -0
- package/dist/lensDirtEffect.js +4 -0
- package/dist/lensDirtEffect.js.map +1 -0
- package/dist/lensDistortionEffect.d.ts +3 -0
- package/dist/lensDistortionEffect.d.ts.map +1 -0
- package/dist/lensDistortionEffect.js +4 -0
- package/dist/lensDistortionEffect.js.map +1 -0
- package/dist/lensFlareEffect.d.ts +3 -0
- package/dist/lensFlareEffect.d.ts.map +1 -0
- package/dist/lensFlareEffect.js +4 -0
- package/dist/lensFlareEffect.js.map +1 -0
- package/dist/liftGammaGainEffect.d.ts +3 -0
- package/dist/liftGammaGainEffect.d.ts.map +1 -0
- package/dist/liftGammaGainEffect.js +4 -0
- package/dist/liftGammaGainEffect.js.map +1 -0
- package/dist/lookupTableGradeEffect.d.ts +3 -0
- package/dist/lookupTableGradeEffect.d.ts.map +1 -0
- package/dist/lookupTableGradeEffect.js +4 -0
- package/dist/lookupTableGradeEffect.js.map +1 -0
- package/dist/lutMath.d.ts +7 -0
- package/dist/lutMath.d.ts.map +1 -0
- package/dist/lutMath.js +39 -0
- package/dist/lutMath.js.map +1 -0
- package/dist/motionBlurEffect.d.ts +3 -0
- package/dist/motionBlurEffect.d.ts.map +1 -0
- package/dist/motionBlurEffect.js +4 -0
- package/dist/motionBlurEffect.js.map +1 -0
- package/dist/outlineEffect.d.ts +3 -0
- package/dist/outlineEffect.d.ts.map +1 -0
- package/dist/outlineEffect.js +4 -0
- package/dist/outlineEffect.js.map +1 -0
- package/dist/panniniProjectionEffect.d.ts +3 -0
- package/dist/panniniProjectionEffect.d.ts.map +1 -0
- package/dist/panniniProjectionEffect.js +4 -0
- package/dist/panniniProjectionEffect.js.map +1 -0
- package/dist/pixelateEffect.d.ts +3 -0
- package/dist/pixelateEffect.d.ts.map +1 -0
- package/dist/pixelateEffect.js +4 -0
- package/dist/pixelateEffect.js.map +1 -0
- package/dist/posterizeEffect.d.ts +3 -0
- package/dist/posterizeEffect.d.ts.map +1 -0
- package/dist/posterizeEffect.js +4 -0
- package/dist/posterizeEffect.js.map +1 -0
- package/dist/radialBlurEffect.d.ts +3 -0
- package/dist/radialBlurEffect.d.ts.map +1 -0
- package/dist/radialBlurEffect.js +4 -0
- package/dist/radialBlurEffect.js.map +1 -0
- package/dist/renderEffectDefaults.d.ts +4 -0
- package/dist/renderEffectDefaults.d.ts.map +1 -0
- package/dist/renderEffectDefaults.js +111 -0
- package/dist/renderEffectDefaults.js.map +1 -0
- package/dist/renderEffectInputs.d.ts +5 -0
- package/dist/renderEffectInputs.d.ts.map +1 -0
- package/dist/renderEffectInputs.js +87 -0
- package/dist/renderEffectInputs.js.map +1 -0
- package/dist/renderEffectInterpolation.d.ts +4 -0
- package/dist/renderEffectInterpolation.d.ts.map +1 -0
- package/dist/renderEffectInterpolation.js +75 -0
- package/dist/renderEffectInterpolation.js.map +1 -0
- package/dist/renderEffectValidation.d.ts +3 -0
- package/dist/renderEffectValidation.d.ts.map +1 -0
- package/dist/renderEffectValidation.js +18 -0
- package/dist/renderEffectValidation.js.map +1 -0
- package/dist/scanlinesEffect.d.ts +3 -0
- package/dist/scanlinesEffect.d.ts.map +1 -0
- package/dist/scanlinesEffect.js +4 -0
- package/dist/scanlinesEffect.js.map +1 -0
- package/dist/screenSpaceFogEffect.d.ts +3 -0
- package/dist/screenSpaceFogEffect.d.ts.map +1 -0
- package/dist/screenSpaceFogEffect.js +4 -0
- package/dist/screenSpaceFogEffect.js.map +1 -0
- package/dist/sepiaEffect.d.ts +3 -0
- package/dist/sepiaEffect.d.ts.map +1 -0
- package/dist/sepiaEffect.js +4 -0
- package/dist/sepiaEffect.js.map +1 -0
- package/dist/sharpenEffect.d.ts +3 -0
- package/dist/sharpenEffect.d.ts.map +1 -0
- package/dist/sharpenEffect.js +4 -0
- package/dist/sharpenEffect.js.map +1 -0
- package/dist/sketchEffect.d.ts +3 -0
- package/dist/sketchEffect.d.ts.map +1 -0
- package/dist/sketchEffect.js +4 -0
- package/dist/sketchEffect.js.map +1 -0
- package/dist/smaaEffect.d.ts +3 -0
- package/dist/smaaEffect.d.ts.map +1 -0
- package/dist/smaaEffect.js +4 -0
- package/dist/smaaEffect.js.map +1 -0
- package/dist/ssaoEffect.d.ts +3 -0
- package/dist/ssaoEffect.d.ts.map +1 -0
- package/dist/ssaoEffect.js +4 -0
- package/dist/ssaoEffect.js.map +1 -0
- package/dist/ssrEffect.d.ts +3 -0
- package/dist/ssrEffect.d.ts.map +1 -0
- package/dist/ssrEffect.js +4 -0
- package/dist/ssrEffect.js.map +1 -0
- package/dist/stylizeMath.d.ts +9 -0
- package/dist/stylizeMath.d.ts.map +1 -0
- package/dist/stylizeMath.js +77 -0
- package/dist/stylizeMath.js.map +1 -0
- package/dist/taaEffect.d.ts +3 -0
- package/dist/taaEffect.d.ts.map +1 -0
- package/dist/taaEffect.js +4 -0
- package/dist/taaEffect.js.map +1 -0
- package/dist/tiltShiftEffect.d.ts +3 -0
- package/dist/tiltShiftEffect.d.ts.map +1 -0
- package/dist/tiltShiftEffect.js +4 -0
- package/dist/tiltShiftEffect.js.map +1 -0
- package/dist/toneMapEffect.d.ts +3 -0
- package/dist/toneMapEffect.d.ts.map +1 -0
- package/dist/toneMapEffect.js +4 -0
- package/dist/toneMapEffect.js.map +1 -0
- package/dist/toneMapMath.d.ts +12 -0
- package/dist/toneMapMath.d.ts.map +1 -0
- package/dist/toneMapMath.js +110 -0
- package/dist/toneMapMath.js.map +1 -0
- package/dist/vignetteEffect.d.ts +3 -0
- package/dist/vignetteEffect.d.ts.map +1 -0
- package/dist/vignetteEffect.js +4 -0
- package/dist/vignetteEffect.js.map +1 -0
- package/dist/volumetricLightEffect.d.ts +3 -0
- package/dist/volumetricLightEffect.d.ts.map +1 -0
- package/dist/volumetricLightEffect.js +4 -0
- package/dist/volumetricLightEffect.js.map +1 -0
- package/dist/whiteBalanceEffect.d.ts +3 -0
- package/dist/whiteBalanceEffect.d.ts.map +1 -0
- package/dist/whiteBalanceEffect.js +4 -0
- package/dist/whiteBalanceEffect.js.map +1 -0
- package/package.json +37 -0
- package/src/autoExposureEffect.test.ts +11 -0
- package/src/barrelDistortionEffect.test.ts +11 -0
- package/src/bloomEffect.test.ts +41 -0
- package/src/bokehDepthOfFieldEffect.test.ts +15 -0
- package/src/brightnessContrastEffect.test.ts +14 -0
- package/src/cameraMotionBlurEffect.test.ts +14 -0
- package/src/channelMixerEffect.test.ts +12 -0
- package/src/chromaticAberrationEffect.test.ts +14 -0
- package/src/colorBlindSimulationEffect.test.ts +13 -0
- package/src/colorGradeEffect.test.ts +11 -0
- package/src/colorScienceMath.test.ts +160 -0
- package/src/colorTemperatureMath.test.ts +67 -0
- package/src/contactShadowsEffect.test.ts +14 -0
- package/src/crtEffect.test.ts +16 -0
- package/src/customShaderEffect.test.ts +14 -0
- package/src/depthMath.test.ts +71 -0
- package/src/directionalBlurEffect.test.ts +11 -0
- package/src/displacementEffect.test.ts +15 -0
- package/src/ditherEffect.test.ts +11 -0
- package/src/edgeDetectMath.test.ts +84 -0
- package/src/exposureEffect.test.ts +7 -0
- package/src/filmEmulationEffect.test.ts +14 -0
- package/src/filmGrainEffect.test.ts +15 -0
- package/src/fxaaEffect.test.ts +14 -0
- package/src/gaussianMath.test.ts +93 -0
- package/src/glitchEffect.test.ts +16 -0
- package/src/godRaysEffect.test.ts +15 -0
- package/src/godRaysMath.test.ts +63 -0
- package/src/grayscaleEffect.test.ts +11 -0
- package/src/halftoneEffect.test.ts +11 -0
- package/src/hueSaturationEffect.test.ts +15 -0
- package/src/invertEffect.test.ts +11 -0
- package/src/kuwaharaEffect.test.ts +11 -0
- package/src/kuwaharaMath.test.ts +65 -0
- package/src/lensDirtEffect.test.ts +15 -0
- package/src/lensDistortionEffect.test.ts +11 -0
- package/src/lensFlareEffect.test.ts +16 -0
- package/src/liftGammaGainEffect.test.ts +15 -0
- package/src/lookupTableGradeEffect.test.ts +11 -0
- package/src/lutMath.test.ts +67 -0
- package/src/motionBlurEffect.test.ts +11 -0
- package/src/outlineEffect.test.ts +15 -0
- package/src/panniniProjectionEffect.test.ts +14 -0
- package/src/pixelateEffect.test.ts +11 -0
- package/src/posterizeEffect.test.ts +11 -0
- package/src/radialBlurEffect.test.ts +15 -0
- package/src/renderEffectDefaults.test.ts +70 -0
- package/src/renderEffectInputs.test.ts +60 -0
- package/src/renderEffectInterpolation.test.ts +71 -0
- package/src/renderEffectValidation.test.ts +37 -0
- package/src/scanlinesEffect.test.ts +11 -0
- package/src/screenSpaceFogEffect.test.ts +14 -0
- package/src/sepiaEffect.test.ts +11 -0
- package/src/sharpenEffect.test.ts +11 -0
- package/src/sketchEffect.test.ts +11 -0
- package/src/smaaEffect.test.ts +11 -0
- package/src/ssaoEffect.test.ts +11 -0
- package/src/ssrEffect.test.ts +11 -0
- package/src/stylizeMath.test.ts +99 -0
- package/src/taaEffect.test.ts +11 -0
- package/src/tiltShiftEffect.test.ts +15 -0
- package/src/toneMapEffect.test.ts +7 -0
- package/src/toneMapMath.test.ts +145 -0
- package/src/vignetteEffect.test.ts +16 -0
- package/src/volumetricLightEffect.test.ts +14 -0
- package/src/whiteBalanceEffect.test.ts +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoExposureEffect.d.ts","sourceRoot":"","sources":["../src/autoExposureEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAM,GAAG,kBAAkB,CAErH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoExposureEffect.js","sourceRoot":"","sources":["../src/autoExposureEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,UAAsD,EAAE;IAC/F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barrelDistortionEffect.d.ts","sourceRoot":"","sources":["../src/barrelDistortionEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAM,GAC3D,sBAAsB,CAExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barrelDistortionEffect.js","sourceRoot":"","sources":["../src/barrelDistortionEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,UAA0D,EAAE;IAE5D,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BloomEffect } from '@flighthq/types';
|
|
2
|
+
export declare function computeBloomBlurRadius(effect: Readonly<BloomEffect>): number;
|
|
3
|
+
export declare function computeBloomIntensity(effect: Readonly<BloomEffect>): number;
|
|
4
|
+
export declare function computeBloomThreshold(effect: Readonly<BloomEffect>): number;
|
|
5
|
+
export declare function createBloomEffect(options?: Readonly<Omit<BloomEffect, 'kind'>>): BloomEffect;
|
|
6
|
+
//# sourceMappingURL=bloomEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bloomEffect.d.ts","sourceRoot":"","sources":["../src/bloomEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAM,GAAG,WAAW,CAEhG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// HDR bloom intent and its shared recipe math. The parameter math is substrate-agnostic so the Gl and
|
|
2
|
+
// Wgpu bloom recipes derive identical bright-pass cutoff, additive strength, and blur radius from the
|
|
3
|
+
// same intent.
|
|
4
|
+
export function computeBloomBlurRadius(effect) {
|
|
5
|
+
return Math.max(0, effect.radius ?? 8);
|
|
6
|
+
}
|
|
7
|
+
export function computeBloomIntensity(effect) {
|
|
8
|
+
return effect.intensity ?? 1;
|
|
9
|
+
}
|
|
10
|
+
export function computeBloomThreshold(effect) {
|
|
11
|
+
return effect.threshold ?? 0.8;
|
|
12
|
+
}
|
|
13
|
+
export function createBloomEffect(options = {}) {
|
|
14
|
+
return { kind: 'BloomEffect', ...options };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=bloomEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../src/bloomEffect.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,sGAAsG;AACtG,eAAe;AAEf,MAAM,UAAU,sBAAsB,CAAC,MAA6B;IAClE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAA+C,EAAE;IACjF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bokehDepthOfFieldEffect.d.ts","sourceRoot":"","sources":["../src/bokehDepthOfFieldEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAM,GAC5D,uBAAuB,CAEzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bokehDepthOfFieldEffect.js","sourceRoot":"","sources":["../src/bokehDepthOfFieldEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,UAA2D,EAAE;IAE7D,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brightnessContrastEffect.d.ts","sourceRoot":"","sources":["../src/brightnessContrastEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAM,GAC7D,wBAAwB,CAE1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brightnessContrastEffect.js","sourceRoot":"","sources":["../src/brightnessContrastEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,8BAA8B,CAC5C,UAA4D,EAAE;IAE9D,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/cameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAM,GAC3D,sBAAsB,CAExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/cameraMotionBlurEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,UAA0D,EAAE;IAE5D,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelMixerEffect.d.ts","sourceRoot":"","sources":["../src/channelMixerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAEhH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelMixerEffect.js","sourceRoot":"","sources":["../src/channelMixerEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,OAAmD;IAC1F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/chromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAM,GAC9D,yBAAyB,CAE3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chromaticAberrationEffect.js","sourceRoot":"","sources":["../src/chromaticAberrationEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,+BAA+B,CAC7C,UAA6D,EAAE;IAE/D,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorBlindSimulationEffect.d.ts","sourceRoot":"","sources":["../src/colorBlindSimulationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElE,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAM,GAC/D,0BAA0B,CAE5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorBlindSimulationEffect.js","sourceRoot":"","sources":["../src/colorBlindSimulationEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAC9C,UAA8D,EAAE;IAEhE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorGradeEffect.d.ts","sourceRoot":"","sources":["../src/colorGradeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAM,GAAG,gBAAgB,CAE/G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorGradeEffect.js","sourceRoot":"","sources":["../src/colorGradeEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,UAAoD,EAAE;IAC3F,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function computeHslToRgb(h: number, s: number, l: number, out: [number, number, number]): void;
|
|
2
|
+
export declare function computeLinearToSrgb(x: number): number;
|
|
3
|
+
export declare function computeOklabToRgb(L: number, a: number, b: number, out: [number, number, number]): void;
|
|
4
|
+
export declare function computeRgbToHsl(r: number, g: number, b: number, out: [number, number, number]): void;
|
|
5
|
+
export declare function computeRgbToOklab(r: number, g: number, b: number, out: [number, number, number]): void;
|
|
6
|
+
export declare function computeSrgbToLinear(x: number): number;
|
|
7
|
+
export declare function getRec2020LuminanceWeights(out: [number, number, number]): void;
|
|
8
|
+
export declare function getRec709LuminanceWeights(out: [number, number, number]): void;
|
|
9
|
+
//# sourceMappingURL=colorScienceMath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorScienceMath.d.ts","sourceRoot":"","sources":["../src/colorScienceMath.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAoCpG;AAID,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAatG;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAwBpG;AAKD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAatG;AAID,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAID,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI9E;AAID,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI7E"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Color-science recipe math. Complete working-space functions for HDR rendering, color grading,
|
|
2
|
+
// and perceptual operations. All functions are alias-safe and zero-allocation (out-param pattern).
|
|
3
|
+
// These are the substrate-agnostic primitives shared across all backends.
|
|
4
|
+
// Converts HSL [h∈[0..360), s∈[0..1], l∈[0..1]] to sRGB [0..1]. Writes into `out`.
|
|
5
|
+
// Alias-safe.
|
|
6
|
+
export function computeHslToRgb(h, s, l, out) {
|
|
7
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
8
|
+
const hh = (((h % 360) + 360) % 360) / 60;
|
|
9
|
+
const x = c * (1 - Math.abs((hh % 2) - 1));
|
|
10
|
+
let r1;
|
|
11
|
+
let g1;
|
|
12
|
+
let b1;
|
|
13
|
+
if (hh < 1) {
|
|
14
|
+
r1 = c;
|
|
15
|
+
g1 = x;
|
|
16
|
+
b1 = 0;
|
|
17
|
+
}
|
|
18
|
+
else if (hh < 2) {
|
|
19
|
+
r1 = x;
|
|
20
|
+
g1 = c;
|
|
21
|
+
b1 = 0;
|
|
22
|
+
}
|
|
23
|
+
else if (hh < 3) {
|
|
24
|
+
r1 = 0;
|
|
25
|
+
g1 = c;
|
|
26
|
+
b1 = x;
|
|
27
|
+
}
|
|
28
|
+
else if (hh < 4) {
|
|
29
|
+
r1 = 0;
|
|
30
|
+
g1 = x;
|
|
31
|
+
b1 = c;
|
|
32
|
+
}
|
|
33
|
+
else if (hh < 5) {
|
|
34
|
+
r1 = x;
|
|
35
|
+
g1 = 0;
|
|
36
|
+
b1 = c;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
r1 = c;
|
|
40
|
+
g1 = 0;
|
|
41
|
+
b1 = x;
|
|
42
|
+
}
|
|
43
|
+
const m = l - c / 2;
|
|
44
|
+
out[0] = r1 + m;
|
|
45
|
+
out[1] = g1 + m;
|
|
46
|
+
out[2] = b1 + m;
|
|
47
|
+
}
|
|
48
|
+
// sRGB transfer function: converts a single linear-light channel value to gamma-encoded sRGB.
|
|
49
|
+
// The piecewise IEC 61966-2-1 formula. Input in [0..∞], output in [0..1].
|
|
50
|
+
export function computeLinearToSrgb(x) {
|
|
51
|
+
const v = Math.max(0, x);
|
|
52
|
+
return v <= 0.0031308 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055;
|
|
53
|
+
}
|
|
54
|
+
// Converts Oklab back to linear sRGB [0..1]. Alias-safe.
|
|
55
|
+
export function computeOklabToRgb(L, a, b, out) {
|
|
56
|
+
// Oklab → LMS.
|
|
57
|
+
const lc = L + 0.3963377774 * a + 0.2158037573 * b;
|
|
58
|
+
const mc = L - 0.1055613458 * a - 0.0638541728 * b;
|
|
59
|
+
const sc = L - 0.0894841775 * a - 1.291485548 * b;
|
|
60
|
+
// Cube.
|
|
61
|
+
const l = lc * lc * lc;
|
|
62
|
+
const m = mc * mc * mc;
|
|
63
|
+
const s = sc * sc * sc;
|
|
64
|
+
// LMS → linear sRGB.
|
|
65
|
+
out[0] = Math.max(0, 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s);
|
|
66
|
+
out[1] = Math.max(0, -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s);
|
|
67
|
+
out[2] = Math.max(0, -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s);
|
|
68
|
+
}
|
|
69
|
+
// Converts sRGB [0..1] to HSL [h∈[0..360), s∈[0..1], l∈[0..1]]. Writes into `out`.
|
|
70
|
+
// Alias-safe: reads all inputs before writing.
|
|
71
|
+
export function computeRgbToHsl(r, g, b, out) {
|
|
72
|
+
const rc = Math.max(0, Math.min(1, r));
|
|
73
|
+
const gc = Math.max(0, Math.min(1, g));
|
|
74
|
+
const bc = Math.max(0, Math.min(1, b));
|
|
75
|
+
const max = Math.max(rc, gc, bc);
|
|
76
|
+
const min = Math.min(rc, gc, bc);
|
|
77
|
+
const d = max - min;
|
|
78
|
+
const l = (max + min) / 2;
|
|
79
|
+
let h = 0;
|
|
80
|
+
let s = 0;
|
|
81
|
+
if (d > 1e-10) {
|
|
82
|
+
s = d / (1 - Math.abs(2 * l - 1));
|
|
83
|
+
if (max === rc) {
|
|
84
|
+
h = ((gc - bc) / d + 6) % 6;
|
|
85
|
+
}
|
|
86
|
+
else if (max === gc) {
|
|
87
|
+
h = (bc - rc) / d + 2;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
h = (rc - gc) / d + 4;
|
|
91
|
+
}
|
|
92
|
+
h *= 60;
|
|
93
|
+
}
|
|
94
|
+
out[0] = h;
|
|
95
|
+
out[1] = s;
|
|
96
|
+
out[2] = l;
|
|
97
|
+
}
|
|
98
|
+
// Converts linear sRGB [0..1] to Oklab [L∈[0..1], a∈~[-0.5..0.5], b∈~[-0.5..0.5]].
|
|
99
|
+
// Oklab is a perceptually uniform space; changes in L, a, b produce visually equal steps.
|
|
100
|
+
// Reference: Ottosson 2020. Alias-safe.
|
|
101
|
+
export function computeRgbToOklab(r, g, b, out) {
|
|
102
|
+
// sRGB (linear) → LMS via a 3×3 matrix.
|
|
103
|
+
const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
|
|
104
|
+
const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
|
|
105
|
+
const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
|
|
106
|
+
// Cube-root compress.
|
|
107
|
+
const lc = Math.cbrt(Math.max(0, l));
|
|
108
|
+
const mc = Math.cbrt(Math.max(0, m));
|
|
109
|
+
const sc = Math.cbrt(Math.max(0, s));
|
|
110
|
+
// LMS → Oklab.
|
|
111
|
+
out[0] = 0.2104542553 * lc + 0.793617785 * mc - 0.0040720468 * sc;
|
|
112
|
+
out[1] = 1.9779984951 * lc - 2.428592205 * mc + 0.4505937099 * sc;
|
|
113
|
+
out[2] = 0.0259040371 * lc + 0.7827717662 * mc - 0.808675766 * sc;
|
|
114
|
+
}
|
|
115
|
+
// sRGB transfer function: converts a gamma-encoded sRGB channel to linear light.
|
|
116
|
+
// The piecewise IEC 61966-2-1 inverse. Input in [0..1], output in [0..∞).
|
|
117
|
+
export function computeSrgbToLinear(x) {
|
|
118
|
+
const v = Math.max(0, x);
|
|
119
|
+
return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
|
|
120
|
+
}
|
|
121
|
+
// Rec. 2020 luminance weights (ITU-R BT.2020). Writes [r, g, b] weights into `out`.
|
|
122
|
+
// L = 0.2627 * R + 0.6780 * G + 0.0593 * B.
|
|
123
|
+
export function getRec2020LuminanceWeights(out) {
|
|
124
|
+
out[0] = 0.2627;
|
|
125
|
+
out[1] = 0.678;
|
|
126
|
+
out[2] = 0.0593;
|
|
127
|
+
}
|
|
128
|
+
// Rec. 709 / sRGB luminance weights (ITU-R BT.709). Writes [r, g, b] weights into `out`.
|
|
129
|
+
// L = 0.2126 * R + 0.7152 * G + 0.0722 * B.
|
|
130
|
+
export function getRec709LuminanceWeights(out) {
|
|
131
|
+
out[0] = 0.2126;
|
|
132
|
+
out[1] = 0.7152;
|
|
133
|
+
out[2] = 0.0722;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=colorScienceMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorScienceMath.js","sourceRoot":"","sources":["../src/colorScienceMath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function computeColorTemperatureRgb(kelvin: number, out: [number, number, number]): void;
|
|
2
|
+
export declare function computeWhiteBalanceMultipliers(temperature: number, // [-1..1]. Negative = cool (bluish), positive = warm (yellowish).
|
|
3
|
+
tint: number, // [-1..1]. Negative = green, positive = magenta.
|
|
4
|
+
out: [number, number, number]): void;
|
|
5
|
+
//# sourceMappingURL=colorTemperatureMath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorTemperatureMath.d.ts","sourceRoot":"","sources":["../src/colorTemperatureMath.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB9F;AAMD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EAAE,kEAAkE;AACvF,IAAI,EAAE,MAAM,EAAE,iDAAiD;AAC/D,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC5B,IAAI,CAUN"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Color-temperature recipe math. Substrate-agnostic helpers shared by WhiteBalanceEffect and
|
|
2
|
+
// ColorGradeEffect backends so temperature/tint handling is one implementation, not re-derived per
|
|
3
|
+
// backend. All functions are alias-safe.
|
|
4
|
+
// Converts a color temperature in Kelvin to approximate linear-light RGB multipliers using the
|
|
5
|
+
// Tanner-Helland approximation (widely used in real-time; accurate to within ~1 % over 1000–40000 K).
|
|
6
|
+
// Writes [r, g, b] into `out` (values near 1). The returned multipliers are un-normalized — the
|
|
7
|
+
// green channel is pinned to 1.0 so the result is a tint rather than a luminance change.
|
|
8
|
+
// Alias-safe: writes each channel after computing all inputs.
|
|
9
|
+
export function computeColorTemperatureRgb(kelvin, out) {
|
|
10
|
+
const temp = Math.max(1000, Math.min(40000, kelvin)) / 100;
|
|
11
|
+
let r;
|
|
12
|
+
let g;
|
|
13
|
+
let b;
|
|
14
|
+
if (temp <= 66) {
|
|
15
|
+
r = 1.0;
|
|
16
|
+
g = (99.4708025861 * Math.log(temp) - 161.1195681661) / 255;
|
|
17
|
+
b = temp <= 19 ? 0 : (138.5177312231 * Math.log(temp - 10) - 305.0447927307) / 255;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
r = (329.698727446 * Math.pow(temp - 60, -0.1332047592)) / 255;
|
|
21
|
+
g = (288.1221695283 * Math.pow(temp - 60, -0.0755148492)) / 255;
|
|
22
|
+
b = 1.0;
|
|
23
|
+
}
|
|
24
|
+
out[0] = Math.max(0, Math.min(1, r));
|
|
25
|
+
out[1] = Math.max(0, Math.min(1, g));
|
|
26
|
+
out[2] = Math.max(0, Math.min(1, b));
|
|
27
|
+
}
|
|
28
|
+
// Derives per-channel [r, g, b] white-balance multipliers from a normalized temperature and tint
|
|
29
|
+
// offset (both in [-1, 1] as used by WhiteBalanceEffect). Maps the offsets to Kelvin deviations
|
|
30
|
+
// around a daylight reference (6500 K) and adds a chromatic tint on the green-magenta axis.
|
|
31
|
+
// Writes [r, g, b] into `out`. Alias-safe.
|
|
32
|
+
export function computeWhiteBalanceMultipliers(temperature, // [-1..1]. Negative = cool (bluish), positive = warm (yellowish).
|
|
33
|
+
tint, // [-1..1]. Negative = green, positive = magenta.
|
|
34
|
+
out) {
|
|
35
|
+
// Map [-1..1] temperature to [2000..11000] K centered at 6500 K daylight.
|
|
36
|
+
// Positive = warm = lower K (toward incandescent 2700 K); negative = cool = higher K (toward 11000 K).
|
|
37
|
+
const kelvin = 6500 - temperature * 4500;
|
|
38
|
+
computeColorTemperatureRgb(kelvin, out);
|
|
39
|
+
// Apply tint: positive tint adds magenta (boosts R/B, reduces G); negative adds green (boosts G).
|
|
40
|
+
const greenShift = -tint * 0.1;
|
|
41
|
+
out[0] = Math.max(0, out[0]);
|
|
42
|
+
out[1] = Math.max(0, out[1] + greenShift);
|
|
43
|
+
out[2] = Math.max(0, out[2]);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=colorTemperatureMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorTemperatureMath.js","sourceRoot":"","sources":["../src/colorTemperatureMath.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,mGAAmG;AACnG,yCAAyC;AAEzC,+FAA+F;AAC/F,sGAAsG;AACtG,gGAAgG;AAChG,yFAAyF;AACzF,8DAA8D;AAC9D,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,GAA6B;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3D,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,GAAG,CAAC;QACR,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC;QAC5D,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;QAC/D,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;QAChE,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;IACD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,iGAAiG;AACjG,gGAAgG;AAChG,4FAA4F;AAC5F,2CAA2C;AAC3C,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EAAE,kEAAkE;AACvF,IAAY,EAAE,iDAAiD;AAC/D,GAA6B;IAE7B,0EAA0E;IAC1E,uGAAuG;IACvG,MAAM,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;IACzC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,kGAAkG;IAClG,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;IAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactShadowsEffect.d.ts","sourceRoot":"","sources":["../src/contactShadowsEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAM,GACzD,oBAAoB,CAEtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactShadowsEffect.js","sourceRoot":"","sources":["../src/contactShadowsEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CACxC,UAAwD,EAAE;IAE1D,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crtEffect.d.ts","sourceRoot":"","sources":["../src/crtEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,eAAe,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAM,GAAG,SAAS,CAE1F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crtEffect.js","sourceRoot":"","sources":["../src/crtEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,UAA6C,EAAE;IAC7E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customShaderEffect.d.ts","sourceRoot":"","sources":["../src/customShaderEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAEhH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customShaderEffect.js","sourceRoot":"","sources":["../src/customShaderEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,OAAmD;IAC1F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function computeDepthOfFieldCoc(depth: number, focusDistance: number, aperture: number, focalLength: number): number;
|
|
2
|
+
export declare function computeLinearDepthFromNonlinear(depth: number, near: number, far: number): number;
|
|
3
|
+
export declare function computeSsaoSampleKernel(samples: number, out: Float32Array): number;
|
|
4
|
+
//# sourceMappingURL=depthMath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depthMath.d.ts","sourceRoot":"","sources":["../src/depthMath.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,CAOR;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhG;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAiBlF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Screen-space depth recipe math. Substrate-agnostic helpers shared by depth-dependent effects
|
|
2
|
+
// (SSAO, SSR, depth-of-field, screen-space fog). All functions are alias-safe.
|
|
3
|
+
// Computes the circle-of-confusion (CoC) radius in normalized image-space for a depth-of-field
|
|
4
|
+
// effect, using the thin-lens formula. Returns a signed value; positive = behind focus.
|
|
5
|
+
// focusDistance: distance to the in-focus plane (same units as depth).
|
|
6
|
+
// aperture: lens aperture diameter (f-number denominator, e.g. 1.4 for f/1.4).
|
|
7
|
+
// focalLength: lens focal length in mm (for a 35 mm sensor equivalent).
|
|
8
|
+
export function computeDepthOfFieldCoc(depth, focusDistance, aperture, focalLength) {
|
|
9
|
+
// Thin lens: CoC = |focalLength * aperture * (depth - focusDistance)| / (depth * (focusDistance - focalLength)).
|
|
10
|
+
const fd = Math.max(1e-5, focusDistance);
|
|
11
|
+
const fl = Math.max(1e-5, focalLength) / 1000; // mm → m
|
|
12
|
+
const d = Math.max(1e-5, depth);
|
|
13
|
+
const a = fl / Math.max(1e-5, aperture);
|
|
14
|
+
return (a * (d - fd)) / (d * (fd - fl));
|
|
15
|
+
}
|
|
16
|
+
// Converts a nonlinear (hyperbolic) depth buffer value [0..1] to a linear eye-space depth.
|
|
17
|
+
// The standard projection formula: linear = (near * far) / (far - depth * (far - near)).
|
|
18
|
+
export function computeLinearDepthFromNonlinear(depth, near, far) {
|
|
19
|
+
return (near * far) / (far - depth * (far - near));
|
|
20
|
+
}
|
|
21
|
+
// Generates a hemisphere SSAO sample kernel and writes the samples (xyz triplets) into `out`.
|
|
22
|
+
// Samples are distributed in a unit hemisphere oriented along +Z, with more samples near the
|
|
23
|
+
// origin for better occlusion at small radii. Returns the number of samples written.
|
|
24
|
+
// `out` must have capacity >= samples * 3. Alias-safe (no shared mutable state).
|
|
25
|
+
export function computeSsaoSampleKernel(samples, out) {
|
|
26
|
+
const n = Math.max(1, Math.round(samples));
|
|
27
|
+
// Deterministic Halton-like distribution (no Math.random) so results are reproducible.
|
|
28
|
+
for (let i = 0; i < n; i++) {
|
|
29
|
+
// Spread samples over the hemisphere using a Halton-2 (x) and Halton-3 (y) sequence.
|
|
30
|
+
const h2 = halton(i + 1, 2);
|
|
31
|
+
const h3 = halton(i + 1, 3);
|
|
32
|
+
const theta = h2 * 2 * Math.PI; // azimuth.
|
|
33
|
+
const phi = Math.acos(1 - h3); // polar angle, biased toward origin.
|
|
34
|
+
// Apply a lerp-based distance falloff: samples close to origin get more weight.
|
|
35
|
+
const scale = i / n;
|
|
36
|
+
const dist = 0.1 + 0.9 * scale * scale; // accelerating lerp.
|
|
37
|
+
out[i * 3 + 0] = Math.sin(phi) * Math.cos(theta) * dist;
|
|
38
|
+
out[i * 3 + 1] = Math.sin(phi) * Math.sin(theta) * dist;
|
|
39
|
+
out[i * 3 + 2] = Math.cos(phi) * dist;
|
|
40
|
+
}
|
|
41
|
+
return n;
|
|
42
|
+
}
|
|
43
|
+
// Halton low-discrepancy sequence for a given index and base.
|
|
44
|
+
function halton(index, base) {
|
|
45
|
+
let result = 0;
|
|
46
|
+
let f = 1;
|
|
47
|
+
let i = index;
|
|
48
|
+
while (i > 0) {
|
|
49
|
+
f /= base;
|
|
50
|
+
result += f * (i % base);
|
|
51
|
+
i = Math.floor(i / base);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=depthMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depthMath.js","sourceRoot":"","sources":["../src/depthMath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directionalBlurEffect.d.ts","sourceRoot":"","sources":["../src/directionalBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAM,GAC1D,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directionalBlurEffect.js","sourceRoot":"","sources":["../src/directionalBlurEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,2BAA2B,CACzC,UAAyD,EAAE;IAE3D,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displacementEffect.d.ts","sourceRoot":"","sources":["../src/displacementEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAM,GAAG,kBAAkB,CAErH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displacementEffect.js","sourceRoot":"","sources":["../src/displacementEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,UAAsD,EAAE;IAC/F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
|