@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
75 lines (71 loc) • 2.04 kB
JavaScript
import {
AddEquation,
CustomBlending,
GLSL3,
OneFactor,
OneMinusSrcAlphaFactor,
RawShaderMaterial,
Vector3
} from "three";
import shader_vx from './glsl/v1/vertex.glsl';
import shader_fg from './glsl/v1/flagment.glsl';
export class ImpostorShaderV1 extends RawShaderMaterial {
constructor() {
super({
fragmentShader: shader_fg,
vertexShader: shader_vx,
uniforms: {
/**
* RGB + Alpha
*/
tBase: {
value: null
},
/**
* Normal+Depth
*/
tGeometry: {
value: null
},
/**
* Material properties: Occlusion, Roughness, Metalness
* Alpha unused
*/
tMaterial: {
value: null
},
/**
* Number of frames
*/
uFrames: {
value: 0
},
/**
* Radius of bounding sphere of the impostor
*/
uRadius: {
value: 0
},
/**
* Impostor offset
*/
uOffset: {
value: new Vector3(0, 0, 0)
},
uIsFullSphere: {
value: false
},
uDepthScale:{
// value should be in range between 0 and 1
value:1
}
},
glslVersion: GLSL3
});
// Save some effort by disabling blending
this.blending = CustomBlending;
this.blendEquation = AddEquation;
this.blendSrc = OneFactor;
this.blendDst = OneMinusSrcAlphaFactor;
}
}