@flighthq/effects 0.1.0 → 0.2.1-next.410.a23f189
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/bevelEffect.d.ts +3 -0
- package/dist/bevelEffect.d.ts.map +1 -0
- package/dist/bevelEffect.js +5 -0
- package/dist/bevelEffect.js.map +1 -0
- package/dist/blendEffect.d.ts +3 -0
- package/dist/blendEffect.d.ts.map +1 -0
- package/dist/blendEffect.js +10 -0
- package/dist/blendEffect.js.map +1 -0
- package/dist/blendModeMath.d.ts +6 -0
- package/dist/blendModeMath.d.ts.map +1 -0
- package/dist/blendModeMath.js +172 -0
- package/dist/blendModeMath.js.map +1 -0
- package/dist/blurDownsample.d.ts +17 -0
- package/dist/blurDownsample.d.ts.map +1 -0
- package/dist/blurDownsample.js +35 -0
- package/dist/blurDownsample.js.map +1 -0
- package/dist/blurEffect.d.ts +3 -0
- package/dist/blurEffect.d.ts.map +1 -0
- package/dist/blurEffect.js +7 -0
- package/dist/blurEffect.js.map +1 -0
- package/dist/boxBlurMath.d.ts +27 -0
- package/dist/boxBlurMath.d.ts.map +1 -0
- package/dist/boxBlurMath.js +64 -0
- package/dist/boxBlurMath.js.map +1 -0
- package/dist/compositeEffect.d.ts +3 -0
- package/dist/compositeEffect.d.ts.map +1 -0
- package/dist/compositeEffect.js +10 -0
- package/dist/compositeEffect.js.map +1 -0
- package/dist/compositeOperatorMath.d.ts +3 -0
- package/dist/compositeOperatorMath.d.ts.map +1 -0
- package/dist/compositeOperatorMath.js +65 -0
- package/dist/compositeOperatorMath.js.map +1 -0
- package/dist/convolutionEffect.d.ts +3 -0
- package/dist/convolutionEffect.d.ts.map +1 -0
- package/dist/convolutionEffect.js +4 -0
- package/dist/convolutionEffect.js.map +1 -0
- package/dist/dropShadowEffect.d.ts +3 -0
- package/dist/dropShadowEffect.d.ts.map +1 -0
- package/dist/dropShadowEffect.js +5 -0
- package/dist/dropShadowEffect.js.map +1 -0
- package/dist/gaussianKernel.d.ts +17 -0
- package/dist/gaussianKernel.d.ts.map +1 -0
- package/dist/gaussianKernel.js +49 -0
- package/dist/gaussianKernel.js.map +1 -0
- package/dist/gradientBevelEffect.d.ts +3 -0
- package/dist/gradientBevelEffect.d.ts.map +1 -0
- package/dist/gradientBevelEffect.js +5 -0
- package/dist/gradientBevelEffect.js.map +1 -0
- package/dist/gradientGlowEffect.d.ts +3 -0
- package/dist/gradientGlowEffect.d.ts.map +1 -0
- package/dist/gradientGlowEffect.js +5 -0
- package/dist/gradientGlowEffect.js.map +1 -0
- package/dist/index.d.ts +18 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -13
- package/dist/index.js.map +1 -1
- package/dist/innerGlowEffect.d.ts +3 -0
- package/dist/innerGlowEffect.d.ts.map +1 -0
- package/dist/innerGlowEffect.js +5 -0
- package/dist/innerGlowEffect.js.map +1 -0
- package/dist/innerShadowEffect.d.ts +3 -0
- package/dist/innerShadowEffect.d.ts.map +1 -0
- package/dist/innerShadowEffect.js +5 -0
- package/dist/innerShadowEffect.js.map +1 -0
- package/dist/linearSampledGaussian.d.ts +22 -0
- package/dist/linearSampledGaussian.d.ts.map +1 -0
- package/dist/linearSampledGaussian.js +56 -0
- package/dist/linearSampledGaussian.js.map +1 -0
- package/dist/medianEffect.d.ts +3 -0
- package/dist/medianEffect.d.ts.map +1 -0
- package/dist/medianEffect.js +4 -0
- package/dist/medianEffect.js.map +1 -0
- package/dist/outerGlowEffect.d.ts +3 -0
- package/dist/outerGlowEffect.d.ts.map +1 -0
- package/dist/outerGlowEffect.js +5 -0
- package/dist/outerGlowEffect.js.map +1 -0
- package/dist/renderEffectDefaults.js +51 -20
- package/dist/renderEffectDefaults.js.map +1 -1
- package/dist/renderEffectInputs.js +11 -11
- package/dist/renderEffectInputs.js.map +1 -1
- package/package.json +7 -2
- package/src/bevelEffect.test.ts +14 -0
- package/src/blendEffect.test.ts +23 -0
- package/src/blendModeMath.test.ts +160 -0
- package/src/blurDownsample.test.ts +46 -0
- package/src/blurEffect.test.ts +17 -0
- package/src/boxBlurMath.test.ts +96 -0
- package/src/compositeEffect.test.ts +21 -0
- package/src/compositeOperatorMath.test.ts +45 -0
- package/src/convolutionEffect.test.ts +20 -0
- package/src/dropShadowEffect.test.ts +14 -0
- package/src/gaussianKernel.test.ts +80 -0
- package/src/gradientBevelEffect.test.ts +21 -0
- package/src/gradientGlowEffect.test.ts +21 -0
- package/src/innerGlowEffect.test.ts +15 -0
- package/src/innerShadowEffect.test.ts +15 -0
- package/src/linearSampledGaussian.test.ts +87 -0
- package/src/medianEffect.test.ts +11 -0
- package/src/outerGlowEffect.test.ts +14 -0
- package/src/renderEffectDefaults.test.ts +13 -5
- package/src/renderEffectInputs.test.ts +3 -5
- package/src/renderEffectInterpolation.test.ts +6 -9
- package/src/renderEffectValidation.test.ts +2 -2
- package/dist/brightnessContrastEffect.d.ts +0 -3
- package/dist/brightnessContrastEffect.d.ts.map +0 -1
- package/dist/brightnessContrastEffect.js +0 -4
- package/dist/brightnessContrastEffect.js.map +0 -1
- package/dist/channelMixerEffect.d.ts +0 -3
- package/dist/channelMixerEffect.d.ts.map +0 -1
- package/dist/channelMixerEffect.js +0 -4
- package/dist/channelMixerEffect.js.map +0 -1
- package/dist/colorBlindSimulationEffect.d.ts +0 -3
- package/dist/colorBlindSimulationEffect.d.ts.map +0 -1
- package/dist/colorBlindSimulationEffect.js +0 -4
- package/dist/colorBlindSimulationEffect.js.map +0 -1
- package/dist/colorGradeEffect.d.ts +0 -3
- package/dist/colorGradeEffect.d.ts.map +0 -1
- package/dist/colorGradeEffect.js +0 -4
- package/dist/colorGradeEffect.js.map +0 -1
- package/dist/colorScienceMath.d.ts +0 -9
- package/dist/colorScienceMath.d.ts.map +0 -1
- package/dist/colorScienceMath.js +0 -135
- package/dist/colorScienceMath.js.map +0 -1
- package/dist/exposureEffect.d.ts +0 -3
- package/dist/exposureEffect.d.ts.map +0 -1
- package/dist/exposureEffect.js +0 -4
- package/dist/exposureEffect.js.map +0 -1
- package/dist/grayscaleEffect.d.ts +0 -3
- package/dist/grayscaleEffect.d.ts.map +0 -1
- package/dist/grayscaleEffect.js +0 -4
- package/dist/grayscaleEffect.js.map +0 -1
- package/dist/hueSaturationEffect.d.ts +0 -3
- package/dist/hueSaturationEffect.d.ts.map +0 -1
- package/dist/hueSaturationEffect.js +0 -4
- package/dist/hueSaturationEffect.js.map +0 -1
- package/dist/invertEffect.d.ts +0 -3
- package/dist/invertEffect.d.ts.map +0 -1
- package/dist/invertEffect.js +0 -4
- package/dist/invertEffect.js.map +0 -1
- package/dist/liftGammaGainEffect.d.ts +0 -3
- package/dist/liftGammaGainEffect.d.ts.map +0 -1
- package/dist/liftGammaGainEffect.js +0 -4
- package/dist/liftGammaGainEffect.js.map +0 -1
- package/dist/lookupTableGradeEffect.d.ts +0 -3
- package/dist/lookupTableGradeEffect.d.ts.map +0 -1
- package/dist/lookupTableGradeEffect.js +0 -4
- package/dist/lookupTableGradeEffect.js.map +0 -1
- package/dist/lutMath.d.ts +0 -7
- package/dist/lutMath.d.ts.map +0 -1
- package/dist/lutMath.js +0 -39
- package/dist/lutMath.js.map +0 -1
- package/dist/sepiaEffect.d.ts +0 -3
- package/dist/sepiaEffect.d.ts.map +0 -1
- package/dist/sepiaEffect.js +0 -4
- package/dist/sepiaEffect.js.map +0 -1
- package/src/brightnessContrastEffect.test.ts +0 -14
- package/src/channelMixerEffect.test.ts +0 -12
- package/src/colorBlindSimulationEffect.test.ts +0 -13
- package/src/colorGradeEffect.test.ts +0 -11
- package/src/colorScienceMath.test.ts +0 -160
- package/src/exposureEffect.test.ts +0 -7
- package/src/grayscaleEffect.test.ts +0 -11
- package/src/hueSaturationEffect.test.ts +0 -15
- package/src/invertEffect.test.ts +0 -11
- package/src/liftGammaGainEffect.test.ts +0 -15
- package/src/lookupTableGradeEffect.test.ts +0 -11
- package/src/lutMath.test.ts +0 -67
- package/src/sepiaEffect.test.ts +0 -11
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { computeGaussianKernelWeights, getGaussianKernelSize } from './gaussianKernel';
|
|
2
|
+
import { computeLinearSampledGaussian, getLinearSampledGaussianTapCount } from './linearSampledGaussian';
|
|
3
|
+
|
|
4
|
+
describe('computeLinearSampledGaussian', () => {
|
|
5
|
+
const sumOf = (weights: ReadonlyArray<number>): number => weights.reduce((total, weight) => total + weight, 0);
|
|
6
|
+
|
|
7
|
+
it('produces combined weights that sum to 1', () => {
|
|
8
|
+
for (const sigma of [1, 2, 3.5, 6]) {
|
|
9
|
+
const weights: number[] = [];
|
|
10
|
+
const offsets: number[] = [];
|
|
11
|
+
computeLinearSampledGaussian(sigma, weights, offsets);
|
|
12
|
+
expect(sumOf(weights)).toBeCloseTo(1, 12);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('sizes both arrays to the tap count', () => {
|
|
17
|
+
const weights: number[] = [];
|
|
18
|
+
const offsets: number[] = [];
|
|
19
|
+
computeLinearSampledGaussian(3, weights, offsets);
|
|
20
|
+
const tapCount = getLinearSampledGaussianTapCount(3);
|
|
21
|
+
expect(weights.length).toBe(tapCount);
|
|
22
|
+
expect(offsets.length).toBe(tapCount);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('sets each paired offset to the weighted midpoint of its two texels', () => {
|
|
26
|
+
const sigma = 2;
|
|
27
|
+
const discrete: number[] = [];
|
|
28
|
+
computeGaussianKernelWeights(sigma, discrete);
|
|
29
|
+
const radius = (getGaussianKernelSize(sigma) - 1) / 2;
|
|
30
|
+
|
|
31
|
+
const weights: number[] = [];
|
|
32
|
+
const offsets: number[] = [];
|
|
33
|
+
computeLinearSampledGaussian(sigma, weights, offsets);
|
|
34
|
+
|
|
35
|
+
for (let tap = 0; tap < weights.length; tap++) {
|
|
36
|
+
const i = tap * 2;
|
|
37
|
+
const posA = i - radius;
|
|
38
|
+
if (i + 1 < discrete.length) {
|
|
39
|
+
const weightA = discrete[i];
|
|
40
|
+
const weightB = discrete[i + 1];
|
|
41
|
+
expect(weights[tap]).toBeCloseTo(weightA + weightB, 12);
|
|
42
|
+
const midpoint = (posA * weightA + (posA + 1) * weightB) / (weightA + weightB);
|
|
43
|
+
expect(offsets[tap]).toBeCloseTo(midpoint, 12);
|
|
44
|
+
// The bilinear tap samples strictly between its two source texels.
|
|
45
|
+
expect(offsets[tap]).toBeGreaterThanOrEqual(posA);
|
|
46
|
+
expect(offsets[tap]).toBeLessThanOrEqual(posA + 1);
|
|
47
|
+
} else {
|
|
48
|
+
// Odd kernel: the last texel is emitted alone at its integer offset.
|
|
49
|
+
expect(weights[tap]).toBeCloseTo(discrete[i], 12);
|
|
50
|
+
expect(offsets[tap]).toBe(posA);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('reconstructs the discrete kernel mass at each tap', () => {
|
|
56
|
+
// A bilinear read at a fractional offset returns the linear blend of the two texels weighted by
|
|
57
|
+
// the tap weight; summed over the pair that equals w[i]+w[i+1] applied at those two positions.
|
|
58
|
+
const sigma = 3;
|
|
59
|
+
const discrete: number[] = [];
|
|
60
|
+
computeGaussianKernelWeights(sigma, discrete);
|
|
61
|
+
const weights: number[] = [];
|
|
62
|
+
const offsets: number[] = [];
|
|
63
|
+
computeLinearSampledGaussian(sigma, weights, offsets);
|
|
64
|
+
expect(sumOf(weights)).toBeCloseTo(sumOf(discrete), 12);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('returns outWeights', () => {
|
|
68
|
+
const weights: number[] = [];
|
|
69
|
+
const offsets: number[] = [];
|
|
70
|
+
expect(computeLinearSampledGaussian(2, weights, offsets)).toBe(weights);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe('getLinearSampledGaussianTapCount', () => {
|
|
75
|
+
it('is ceil(kernelSize / 2)', () => {
|
|
76
|
+
for (const sigma of [1, 2, 3.5, 6]) {
|
|
77
|
+
expect(getLinearSampledGaussianTapCount(sigma)).toBe(Math.ceil(getGaussianKernelSize(sigma) / 2));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('roughly halves the discrete tap count', () => {
|
|
82
|
+
const discrete = getGaussianKernelSize(4);
|
|
83
|
+
const linear = getLinearSampledGaussianTapCount(4);
|
|
84
|
+
expect(linear).toBeLessThan(discrete);
|
|
85
|
+
expect(linear).toBe(Math.ceil(discrete / 2));
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createMedianEffect } from './medianEffect';
|
|
2
|
+
|
|
3
|
+
describe('createMedianEffect', () => {
|
|
4
|
+
it('tags the intent type', () => {
|
|
5
|
+
expect(createMedianEffect().kind).toBe('MedianEffect');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
it('carries options', () => {
|
|
9
|
+
expect(createMedianEffect({ radius: 2 })).toMatchObject({ radius: 2 });
|
|
10
|
+
});
|
|
11
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createOuterGlowEffect } from './outerGlowEffect';
|
|
2
|
+
|
|
3
|
+
describe('createOuterGlowEffect', () => {
|
|
4
|
+
it('tags the intent type', () => {
|
|
5
|
+
expect(createOuterGlowEffect().kind).toBe('OuterGlowEffect');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
it('carries options', () => {
|
|
9
|
+
expect(createOuterGlowEffect({ sourceMode: 'hide', strength: 2 })).toMatchObject({
|
|
10
|
+
sourceMode: 'hide',
|
|
11
|
+
strength: 2,
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { BloomEffect,
|
|
1
|
+
import type { BloomEffect, RenderEffect, ToneMapEffect, VignetteEffect } from '@flighthq/types';
|
|
2
2
|
|
|
3
3
|
import { createBloomEffect } from './bloomEffect';
|
|
4
|
-
import { createGrayscaleEffect } from './grayscaleEffect';
|
|
5
4
|
import { getRenderEffectDefaults, normalizeRenderEffect } from './renderEffectDefaults';
|
|
6
5
|
import { createToneMapEffect } from './toneMapEffect';
|
|
7
6
|
import { createVignetteEffect } from './vignetteEffect';
|
|
@@ -20,6 +19,15 @@ describe('getRenderEffectDefaults', () => {
|
|
|
20
19
|
expect(d.operator).toBe('aces');
|
|
21
20
|
expect(d.exposure).toBe(0);
|
|
22
21
|
});
|
|
22
|
+
it('returns sourceMode draw for composite source-mode effects', () => {
|
|
23
|
+
expect(getRenderEffectDefaults('DropShadowEffect').sourceMode).toBe('draw');
|
|
24
|
+
expect(getRenderEffectDefaults('OuterGlowEffect').sourceMode).toBe('draw');
|
|
25
|
+
expect(getRenderEffectDefaults('InnerGlowEffect').sourceMode).toBe('draw');
|
|
26
|
+
expect(getRenderEffectDefaults('InnerShadowEffect').sourceMode).toBe('draw');
|
|
27
|
+
expect(getRenderEffectDefaults('BevelEffect').sourceMode).toBe('draw');
|
|
28
|
+
expect(getRenderEffectDefaults('GradientGlowEffect').sourceMode).toBe('draw');
|
|
29
|
+
expect(getRenderEffectDefaults('GradientBevelEffect').sourceMode).toBe('draw');
|
|
30
|
+
});
|
|
23
31
|
it('returns a fresh copy each call (mutations do not persist)', () => {
|
|
24
32
|
const d1 = getRenderEffectDefaults('BloomEffect');
|
|
25
33
|
const d2 = getRenderEffectDefaults('BloomEffect');
|
|
@@ -42,10 +50,10 @@ describe('normalizeRenderEffect', () => {
|
|
|
42
50
|
expect(out.radius).toBe(8); // filled from defaults
|
|
43
51
|
});
|
|
44
52
|
it('preserves explicitly set zero and false', () => {
|
|
45
|
-
const effect =
|
|
46
|
-
const out = { kind: '
|
|
53
|
+
const effect = createBloomEffect({ threshold: 0 });
|
|
54
|
+
const out = { kind: 'BloomEffect' } as BloomEffect;
|
|
47
55
|
normalizeRenderEffect(effect, out);
|
|
48
|
-
expect(out.
|
|
56
|
+
expect(out.threshold).toBe(0); // 0 is explicit, should not be replaced by default 0.8
|
|
49
57
|
});
|
|
50
58
|
it('carries over fields not in the defaults table', () => {
|
|
51
59
|
const effect = createVignetteEffect({ intensity: 0.3 });
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { createBloomEffect } from './bloomEffect';
|
|
2
2
|
import { createBokehDepthOfFieldEffect } from './bokehDepthOfFieldEffect';
|
|
3
|
-
import { createColorGradeEffect } from './colorGradeEffect';
|
|
4
|
-
import { createGrayscaleEffect } from './grayscaleEffect';
|
|
5
3
|
import { getRenderEffectInputs, getRenderEffectKinds, RENDER_EFFECT_KINDS } from './renderEffectInputs';
|
|
6
4
|
import { createSsaoEffect } from './ssaoEffect';
|
|
7
5
|
import { createTaaEffect } from './taaEffect';
|
|
8
6
|
import { createToneMapEffect } from './toneMapEffect';
|
|
7
|
+
import { createVignetteEffect } from './vignetteEffect';
|
|
9
8
|
|
|
10
9
|
describe('getRenderEffectInputs', () => {
|
|
11
10
|
it('returns Hdr for BloomEffect', () => {
|
|
@@ -29,8 +28,7 @@ describe('getRenderEffectInputs', () => {
|
|
|
29
28
|
});
|
|
30
29
|
|
|
31
30
|
it('returns empty array for effects that need only the color buffer', () => {
|
|
32
|
-
expect(getRenderEffectInputs(
|
|
33
|
-
expect(getRenderEffectInputs(createColorGradeEffect())).toEqual([]);
|
|
31
|
+
expect(getRenderEffectInputs(createVignetteEffect())).toEqual([]);
|
|
34
32
|
});
|
|
35
33
|
|
|
36
34
|
it('returns empty array for unknown kind', () => {
|
|
@@ -44,7 +42,7 @@ describe('getRenderEffectKinds', () => {
|
|
|
44
42
|
expect(kinds).toContain('BloomEffect');
|
|
45
43
|
expect(kinds).toContain('ToneMapEffect');
|
|
46
44
|
expect(kinds).toContain('SsaoEffect');
|
|
47
|
-
expect(kinds).toContain('
|
|
45
|
+
expect(kinds).toContain('VignetteEffect');
|
|
48
46
|
});
|
|
49
47
|
|
|
50
48
|
it('returns the same reference as RENDER_EFFECT_KINDS', () => {
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import type { GrayscaleEffect } from '@flighthq/types';
|
|
2
|
-
|
|
3
1
|
import { createBloomEffect } from './bloomEffect';
|
|
4
|
-
import { createColorGradeEffect } from './colorGradeEffect';
|
|
5
|
-
import { createGrayscaleEffect } from './grayscaleEffect';
|
|
6
2
|
import { canLerpRenderEffects, lerpRenderEffect } from './renderEffectInterpolation';
|
|
3
|
+
import { createVignetteEffect } from './vignetteEffect';
|
|
7
4
|
|
|
8
5
|
describe('canLerpRenderEffects', () => {
|
|
9
6
|
it('returns true for same kind', () => {
|
|
10
7
|
expect(canLerpRenderEffects(createBloomEffect(), createBloomEffect())).toBe(true);
|
|
11
8
|
});
|
|
12
9
|
it('returns false for different kinds', () => {
|
|
13
|
-
expect(canLerpRenderEffects(createBloomEffect(),
|
|
10
|
+
expect(canLerpRenderEffects(createBloomEffect(), createVignetteEffect())).toBe(false);
|
|
14
11
|
});
|
|
15
12
|
});
|
|
16
13
|
|
|
17
14
|
describe('lerpRenderEffect', () => {
|
|
18
15
|
it('returns false and leaves out unchanged for mismatched kinds', () => {
|
|
19
16
|
const a = createBloomEffect({ threshold: 0.5 });
|
|
20
|
-
const b =
|
|
17
|
+
const b = createVignetteEffect({ intensity: 1 });
|
|
21
18
|
const out = createBloomEffect({ threshold: 0.99 });
|
|
22
19
|
const result = lerpRenderEffect(a, b, 0.5, out);
|
|
23
20
|
expect(result).toBe(false);
|
|
@@ -60,9 +57,9 @@ describe('lerpRenderEffect', () => {
|
|
|
60
57
|
expect(a.threshold).toBeCloseTo(0.5, 5);
|
|
61
58
|
});
|
|
62
59
|
it('boolean fields snap at t=0.5 boundary', () => {
|
|
63
|
-
const a =
|
|
64
|
-
const b =
|
|
65
|
-
const out =
|
|
60
|
+
const a = createVignetteEffect({ enabled: false } as never);
|
|
61
|
+
const b = createVignetteEffect({ enabled: true } as never);
|
|
62
|
+
const out = createVignetteEffect();
|
|
66
63
|
lerpRenderEffect(a, b, 0.4, out);
|
|
67
64
|
expect((out as unknown as Record<string, unknown>).enabled).toBe(false);
|
|
68
65
|
lerpRenderEffect(a, b, 0.5, out);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createBloomEffect } from './bloomEffect';
|
|
2
|
-
import { createColorGradeEffect } from './colorGradeEffect';
|
|
3
2
|
import { validateRenderEffectList } from './renderEffectValidation';
|
|
4
3
|
import { createSsaoEffect } from './ssaoEffect';
|
|
5
4
|
import { createToneMapEffect } from './toneMapEffect';
|
|
5
|
+
import { createVignetteEffect } from './vignetteEffect';
|
|
6
6
|
|
|
7
7
|
describe('validateRenderEffectList', () => {
|
|
8
8
|
it('returns null when all required inputs are available', () => {
|
|
@@ -11,7 +11,7 @@ describe('validateRenderEffectList', () => {
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('returns null for effects that need only the color buffer', () => {
|
|
14
|
-
const effects = [
|
|
14
|
+
const effects = [createVignetteEffect()];
|
|
15
15
|
expect(validateRenderEffectList(effects, [])).toBeNull();
|
|
16
16
|
});
|
|
17
17
|
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/colorGradeEffect.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/colorScienceMath.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colorScienceMath.js","sourceRoot":"","sources":["../src/colorScienceMath.ts"],"names":[],"mappings":"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"}
|
package/dist/exposureEffect.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exposureEffect.d.ts","sourceRoot":"","sources":["../src/exposureEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,CAEzG"}
|
package/dist/exposureEffect.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exposureEffect.js","sourceRoot":"","sources":["../src/exposureEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,UAAkD,EAAE;IACvF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grayscaleEffect.d.ts","sourceRoot":"","sources":["../src/grayscaleEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
|
package/dist/grayscaleEffect.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grayscaleEffect.js","sourceRoot":"","sources":["../src/grayscaleEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hueSaturationEffect.d.ts","sourceRoot":"","sources":["../src/hueSaturationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAM,GACxD,mBAAmB,CAErB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hueSaturationEffect.js","sourceRoot":"","sources":["../src/hueSaturationEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CACvC,UAAuD,EAAE;IAEzD,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;AACrD,CAAC"}
|
package/dist/invertEffect.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invertEffect.d.ts","sourceRoot":"","sources":["../src/invertEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAM,GAAG,YAAY,CAEnG"}
|
package/dist/invertEffect.js
DELETED
package/dist/invertEffect.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invertEffect.js","sourceRoot":"","sources":["../src/invertEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,UAAgD,EAAE;IACnF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"liftGammaGainEffect.d.ts","sourceRoot":"","sources":["../src/liftGammaGainEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAM,GACxD,mBAAmB,CAErB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"liftGammaGainEffect.js","sourceRoot":"","sources":["../src/liftGammaGainEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CACvC,UAAuD,EAAE;IAEzD,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lookupTableGradeEffect.d.ts","sourceRoot":"","sources":["../src/lookupTableGradeEffect.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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lookupTableGradeEffect.js","sourceRoot":"","sources":["../src/lookupTableGradeEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,UAA0D,EAAE;IAE5D,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;AACxD,CAAC"}
|
package/dist/lutMath.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare function computeLookupTableCoord(r: number, // normalized R channel [0..1].
|
|
2
|
-
g: number, // normalized G channel [0..1].
|
|
3
|
-
b: number, // normalized B channel [0..1].
|
|
4
|
-
lutSize: number, // cube size of the LUT (e.g. 16, 32, 64).
|
|
5
|
-
out: [number, number]): void;
|
|
6
|
-
export declare function getLookupTableTileLayout(lutSize: number, out: [number, number]): void;
|
|
7
|
-
//# sourceMappingURL=lutMath.d.ts.map
|
package/dist/lutMath.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lutMath.d.ts","sourceRoot":"","sources":["../src/lutMath.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,OAAO,EAAE,MAAM,EAAE,0CAA0C;AAC3D,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACpB,IAAI,CAiBN;AAKD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAIrF"}
|