@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
42 lines (41 loc) • 1.45 kB
JavaScript
;
import { BaseShaderAssemblerRayMarchingRendered } from "../../_BaseRayMarchingRendered";
import { UniformsUtils, ShaderMaterial, ShaderLib, FrontSide } from "three";
import VERTEX from "../../../../../gl/raymarching/vert.glsl";
import FRAGMENT from "../../../../../gl/raymarching/frag.glsl";
import { RAYMARCHING_UNIFORMS } from "../../../../../gl/raymarching/uniforms";
export class ShaderAssemblerRayMarchingDistance extends BaseShaderAssemblerRayMarchingRendered {
templateShader() {
return {
vertexShader: VERTEX,
fragmentShader: FRAGMENT,
uniforms: UniformsUtils.clone(RAYMARCHING_UNIFORMS)
};
}
// override customAssemblerClassByCustomName() {
// return ASSEMBLER_MAP;
// }
createMaterial() {
const templateShader = this.templateShader();
const material = new ShaderMaterial({
vertexShader: templateShader.vertexShader,
fragmentShader: templateShader.fragmentShader,
side: FrontSide,
transparent: false,
// important
depthTest: true,
alphaTest: 0.5,
lights: false,
defines: {
SHADOW_DISTANCE: 1
},
uniforms: {
...UniformsUtils.clone(ShaderLib.standard.uniforms),
...UniformsUtils.clone(templateShader.uniforms)
}
});
this._gl_parent_node.scene().sceneTraverser.addLightsRayMarchingUniform(material.uniforms);
this._addCustomMaterials(material);
return material;
}
}