Mock postprocessing passes and effects for testing.
This commit is contained in:
@@ -2,6 +2,7 @@ import {
|
|||||||
BoxGeometry,
|
BoxGeometry,
|
||||||
Group,
|
Group,
|
||||||
Mesh,
|
Mesh,
|
||||||
|
MeshBasicMaterial,
|
||||||
MeshStandardMaterial,
|
MeshStandardMaterial,
|
||||||
PerspectiveCamera,
|
PerspectiveCamera,
|
||||||
Scene,
|
Scene,
|
||||||
@@ -17,6 +18,15 @@ const postprocessingState = vi.hoisted(() => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("postprocessing", () => {
|
vi.mock("postprocessing", () => {
|
||||||
|
class MockPass {
|
||||||
|
name: string;
|
||||||
|
needsSwap = true;
|
||||||
|
|
||||||
|
constructor(name = "Pass") {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class MockEffectComposer {
|
class MockEffectComposer {
|
||||||
constructor(_renderer: unknown, options: Record<string, unknown>) {
|
constructor(_renderer: unknown, options: Record<string, unknown>) {
|
||||||
postprocessingState.composerOptions.push(options);
|
postprocessingState.composerOptions.push(options);
|
||||||
@@ -27,24 +37,51 @@ vi.mock("postprocessing", () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockRenderPass {
|
class MockRenderPass extends MockPass {
|
||||||
constructor(_scene: unknown, _camera: unknown) {}
|
clear = true;
|
||||||
|
ignoreBackground = false;
|
||||||
|
skipShadowMapUpdate = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
readonly scene: unknown,
|
||||||
|
readonly camera: unknown,
|
||||||
|
readonly overrideMaterial: unknown = null
|
||||||
|
) {
|
||||||
|
super("RenderPass");
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockNormalPass {
|
class MockNormalPass extends MockPass {
|
||||||
texture: Record<string, unknown>;
|
texture: Record<string, unknown>;
|
||||||
|
|
||||||
constructor(_scene: unknown, _camera: unknown) {
|
constructor(_scene: unknown, _camera: unknown) {
|
||||||
|
super("NormalPass");
|
||||||
this.texture = {
|
this.texture = {
|
||||||
kind: "normal-pass-texture",
|
kind: "normal-pass-texture",
|
||||||
index: postprocessingState.normalPassTextures.length
|
index: postprocessingState.normalPassTextures.length
|
||||||
};
|
};
|
||||||
postprocessingState.normalPassTextures.push(this.texture);
|
postprocessingState.normalPassTextures.push(this.texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
render() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockEffectPass {
|
class MockEffectPass extends MockPass {
|
||||||
constructor(_camera: unknown, ..._effects: unknown[]) {}
|
constructor(readonly camera: unknown, ...readonly effects: unknown[]) {
|
||||||
|
super("EffectPass");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MockCopyMaterial {
|
||||||
|
kind = "copy-material";
|
||||||
|
}
|
||||||
|
|
||||||
|
class MockShaderPass extends MockPass {
|
||||||
|
constructor(readonly material: unknown) {
|
||||||
|
super("ShaderPass");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockSSAOEffect {
|
class MockSSAOEffect {
|
||||||
@@ -71,11 +108,14 @@ vi.mock("postprocessing", () => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
BloomEffect: MockBloomEffect,
|
BloomEffect: MockBloomEffect,
|
||||||
|
CopyMaterial: MockCopyMaterial,
|
||||||
DepthOfFieldEffect: MockDepthOfFieldEffect,
|
DepthOfFieldEffect: MockDepthOfFieldEffect,
|
||||||
EffectComposer: MockEffectComposer,
|
EffectComposer: MockEffectComposer,
|
||||||
EffectPass: MockEffectPass,
|
EffectPass: MockEffectPass,
|
||||||
NormalPass: MockNormalPass,
|
NormalPass: MockNormalPass,
|
||||||
|
Pass: MockPass,
|
||||||
RenderPass: MockRenderPass,
|
RenderPass: MockRenderPass,
|
||||||
|
ShaderPass: MockShaderPass,
|
||||||
SMAAEffect: MockSMAAEffect,
|
SMAAEffect: MockSMAAEffect,
|
||||||
SMAAPreset: {
|
SMAAPreset: {
|
||||||
MEDIUM: "medium"
|
MEDIUM: "medium"
|
||||||
|
|||||||
Reference in New Issue
Block a user