Skip to content

Commit

Permalink
Examples: GTAOPass - Ground Truth Ambient Occlusion (#706)
Browse files Browse the repository at this point in the history
* Examples: GTAOPass - Ground Truth Ambient Occlusion

* Update three.js

* Add examples

* Fixes

* Update changes.patch

* Delete examples
  • Loading branch information
Methuselah96 authored Dec 14, 2023
1 parent d24c099 commit b9e5af4
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 28 deletions.
21 changes: 12 additions & 9 deletions examples-testing/changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -10946,19 +10946,22 @@ index 47e89f6..4329bfe 100644
} else {
renderer.setRenderTarget(null);
renderer.clear();
diff --git a/examples-testing/examples/webgl_postprocessing_hbao.ts b/examples-testing/examples/webgl_postprocessing_hbao.ts
index 191dba2..230d0f0 100644
--- a/examples-testing/examples/webgl_postprocessing_hbao.ts
+++ b/examples-testing/examples/webgl_postprocessing_hbao.ts
@@ -13,7 +13,7 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
import { HBAOPass } from 'three/addons/postprocessing/HBAOPass.js';
import { OutputPass } from 'three/addons/postprocessing/OutputPass.js';
diff --git a/examples-testing/examples/webgl_postprocessing_gtao.ts b/examples-testing/examples/webgl_postprocessing_gtao.ts
index 6148f63..437f902 100644
--- a/examples-testing/examples/webgl_postprocessing_gtao.ts
+++ b/examples-testing/examples/webgl_postprocessing_gtao.ts
@@ -17,9 +17,9 @@ const loader = new GLTFLoader();
loader.setDRACOLoader(dracoLoader);
loader.setPath('models/gltf/');

-let mixer;
+let mixer: THREE.AnimationMixer;

const clock = new THREE.Clock();
const container = document.createElement('div');
-const generateLittlestTokyoScene = scene => {
+const generateLittlestTokyoScene = (scene: THREE.Scene) => {
loader.load(
'LittlestTokyo.glb',
gltf => {
diff --git a/examples-testing/examples/webgl_postprocessing_masking.ts b/examples-testing/examples/webgl_postprocessing_masking.ts
index 3650bfe..88a3d81 100644
--- a/examples-testing/examples/webgl_postprocessing_masking.ts
Expand Down
2 changes: 1 addition & 1 deletion examples-testing/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ const files = {
'webgl_postprocessing_fxaa',
'webgl_postprocessing_glitch',
'webgl_postprocessing_godrays',
'webgl_postprocessing_hbao',
'webgl_postprocessing_gtao',
'webgl_postprocessing_rgb_halftone',
'webgl_postprocessing_masking',
'webgl_postprocessing_ssaa',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
Box3,
Camera,
Color,
ColorRepresentation,
Expand All @@ -14,23 +15,26 @@ import {

import { FullScreenQuad, Pass } from './Pass.js';

export class HBAOPass extends Pass {
export class GTAOPass extends Pass {
width: number;
height: number;
clear: boolean;
camera: Camera;
scene: Scene;
output: number;
blendIntensity: number;

rings: number;
samples: number;
pdRings: number;
pdRadiusExponent: number;
pdSamples: number;

noiseTexture: DataTexture;
gtaoNoiseTexture: DataTexture;
pdNoiseTexture: DataTexture;

hbaoRenderTarget: WebGLRenderTarget;
gtaoRenderTarget: WebGLRenderTarget;
pdRenderTarget: WebGLRenderTarget;

hbaoMaterial: ShaderMaterial;
gtaoMaterial: ShaderMaterial;

normalMaterial: MeshNormalMaterial;

Expand All @@ -40,6 +44,8 @@ export class HBAOPass extends Pass {

copyMaterial: ShaderMaterial;

blendMaterial: ShaderMaterial;

fsQuad: FullScreenQuad;

originalClearColor: Color;
Expand All @@ -55,20 +61,26 @@ export class HBAOPass extends Pass {
parameters?: { depthTexture?: DepthTexture | undefined; normalTexture?: Texture | undefined } | undefined,
);

setTextures(depthTexture?: DepthTexture | undefined, normalTexture?: Texture | undefined): void;
setGBuffer(depthTexture?: DepthTexture | undefined, normalTexture?: Texture | undefined): void;

setSceneClipBox(box: Box3): void;

updateHbaoMaterial(parameters: {
updateGtaoMaterial(parameters: {
radius?: number | undefined;
distanceExponent?: number | undefined;
thickness?: number | undefined;
bias?: number | undefined;
scale?: number | undefined;
samples?: number | undefined;
screenSpaceRadius?: boolean | undefined;
}): void;

updatePdMaterial(parameters: {
lumaPhi?: number | undefined;
depthPhi?: number | undefined;
normalPhi?: number | undefined;
radius?: number | undefined;
radiusExponent?: number | undefined;
rings?: number | undefined;
samples?: number | undefined;
}): void;
Expand Down Expand Up @@ -100,7 +112,7 @@ export class HBAOPass extends Pass {
Diffuse: 1;
Depth: 2;
Normal: 3;
HBAO: 4;
AO: 4;
Denoise: 5;
};
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { IUniform, Matrix4, Vector2 } from '../../../src/Three.js';
import { DataTexture, IUniform, Matrix4, Vector2, Vector3 } from '../../../src/Three.js';

export const HBAOShader: {
export const GTAOShader: {
name: string;
defines: {
PERSPECTIVE_CAMERA: number;
SAMPLES: number;
SAMPLE_VECTORS: string;
NORMAL_VECTOR_TYPE: number;
DEPTH_VALUE_SOURCE: number;
SAMPLING_FROM_NOISE: number;
DEPTH_SWIZZLING: string;
SCREEN_SPACE_RADIUS: number;
SCREEN_SPACE_RADIUS_SCALE: number;
SCENE_CLIP_BOX: number;
};
uniforms: {
tNormal: IUniform;
Expand All @@ -22,12 +23,15 @@ export const HBAOShader: {
radius: IUniform<number>;
distanceExponent: IUniform<number>;
bias: IUniform<number>;
scale: IUniform<number>;
sceneBoxMin: IUniform<Vector3>;
sceneBoxMax: IUniform<Vector3>;
};
vertexShader: string;
fragmentShader: string;
};

export const HBAODepthShader: {
export const GTAODepthShader: {
name: string;
defines: {
PERSPECTIVE_CAMERA: number;
Expand All @@ -41,4 +45,14 @@ export const HBAODepthShader: {
fragmentShader: string;
};

export function generateHaboSampleKernelInitializer(samples: number): string;
export const GTAOBlendShader: {
name: string;
uniforms: {
tDiffuse: IUniform;
intensity: IUniform<number>;
};
vertexShader: string;
fragmentShader: string;
};

export function generateMagicSquareNoise(samples?: number): DataTexture;
2 changes: 1 addition & 1 deletion types/three/examples/jsm/shaders/PoissonDenoiseShader.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ export const PoissonDenoiseShader: {
fragmentShader: string;
};

export function generatePdSamplePointInitializer(samples: number, rings: number): string;
export function generatePdSamplePointInitializer(samples: number, rings: number, radiusExponent: number): string;

0 comments on commit b9e5af4

Please sign in to comment.