UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

71 lines (70 loc) 2.28 kB
"use strict"; import { UniformsUtils, ShaderMaterial, ShaderLib, RGBADepthPacking, BasicDepthPacking } from "three"; import { ShaderAssemblerMaterial } from "../../_BaseMaterial"; import TemplateVertex from "../../../../templates/custom/line/CustomLineDepth.vert.glsl"; import TemplateFragment from "../../../../templates/custom/mesh/CustomMeshDepth.frag.glsl"; import { ShaderName } from "../../../../../../utils/shaders/ShaderName"; const INSERT_DEFINE_AFTER_MAP = /* @__PURE__ */ new Map([ [ShaderName.VERTEX, "// INSERT DEFINES"], [ShaderName.FRAGMENT, "// INSERT DEFINES"] ]); const INSERT_BODY_AFTER_MAP = /* @__PURE__ */ new Map([ [ShaderName.VERTEX, "// INSERT BODY"], [ShaderName.FRAGMENT, "// INSERT BODY"] ]); const LINES_TO_REMOVE_MAP = /* @__PURE__ */ new Map([ [ShaderName.VERTEX, ["#include <begin_vertex>", "#include <project_vertex>"]], [ShaderName.FRAGMENT, []] ]); export class ShaderAssemblerCustomLineDepth extends ShaderAssemblerMaterial { // _color_declaration() { return 'vec4 diffuseColor' } // _template_shader(){ return ShaderLib.standard } templateShader() { const template = ShaderLib.depth; const uniforms = UniformsUtils.clone(template.uniforms); return { vertexShader: TemplateVertex, fragmentShader: TemplateFragment, uniforms }; } insertDefineAfter(shader_name) { return INSERT_DEFINE_AFTER_MAP.get(shader_name); } insertBodyAfter(shader_name) { return INSERT_BODY_AFTER_MAP.get(shader_name); } linesToRemove(shader_name) { return LINES_TO_REMOVE_MAP.get(shader_name); } depthPacking() { return RGBADepthPacking; } createMaterial() { const template_shader = this.templateShader(); return new ShaderMaterial({ // vertexColors: VertexColors, // side: FrontSide, // transparent: true, // fog: true, // lights: true, defines: { DEPTH_PACKING: this.depthPacking() }, uniforms: UniformsUtils.clone(template_shader.uniforms), vertexShader: template_shader.vertexShader, fragmentShader: template_shader.fragmentShader }); } } export class ShaderAssemblerCustomLineDepthForRender extends ShaderAssemblerCustomLineDepth { depthPacking() { return BasicDepthPacking; } }