Skip to content

Commit

Permalink
Examples: GTAOPass - Ground Truth Ambient Occlusion
Browse files Browse the repository at this point in the history
  • Loading branch information
Methuselah96 committed Dec 14, 2023
1 parent d24c099 commit 8adfebb
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
Box3,
Camera,
Color,
ColorRepresentation,
Expand All @@ -21,16 +22,19 @@ export class HBAOPass extends Pass {
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?: number | 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 8adfebb

Please sign in to comment.