first commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import * as THREE from 'three';
|
||||
import vertexShader from '../shaders/petDepth.vert?raw';
|
||||
import fragmentShader from '../shaders/petDepth.frag?raw';
|
||||
|
||||
export class PetDepthMesh extends THREE.Mesh<THREE.BufferGeometry, THREE.ShaderMaterial> {
|
||||
constructor(texture: THREE.Texture, depthMap: THREE.Texture, depthScale = 0.25, depthBias = 0) {
|
||||
const geometry = new THREE.PlaneGeometry(1, 1, 128, 128);
|
||||
const uniforms = {
|
||||
uTexture: { value: texture },
|
||||
uDepthMap: { value: depthMap },
|
||||
uDepthScale: { value: THREE.MathUtils.clamp(depthScale, 0, 0.4) },
|
||||
uDepthBias: { value: depthBias },
|
||||
uIsVideo: { value: false },
|
||||
};
|
||||
const material = new THREE.ShaderMaterial({ uniforms, vertexShader, fragmentShader });
|
||||
super(geometry, material);
|
||||
}
|
||||
|
||||
setTexture(texture: THREE.Texture): void { this.material.uniforms.uTexture.value = texture; }
|
||||
setDepthMap(depthMap: THREE.Texture): void { this.material.uniforms.uDepthMap.value = depthMap; }
|
||||
setDepthScale(scale: number): void { this.material.uniforms.uDepthScale.value = THREE.MathUtils.clamp(scale, 0, 0.4); }
|
||||
setVideo(isVideo: boolean): void { this.material.uniforms.uIsVideo.value = isVideo; }
|
||||
get depthMap(): THREE.Texture { return this.material.uniforms.uDepthMap.value; }
|
||||
}
|
||||
Reference in New Issue
Block a user