@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.48 kB
JavaScript
import{Color as r}from"../../core/math/color.js";import{ShaderProcessorOptions as o}from"../../platform/graphics/shader-processor-options.js";import{SHADERDEF_SKIN as s,SHADERDEF_SCREENSPACE as t,SHADERDEF_INSTANCING as e,SHADERDEF_MORPH_POSITION as i,SHADERDEF_MORPH_NORMAL as a,SHADERDEF_MORPH_TEXTURE_BASED as l}from"../constants.js";import{getProgramLibrary as c}from"../shader-lib/get-program-library.js";import{basic as h}from"../shader-lib/programs/basic.js";import{Material as p}from"./material.js";class m extends p{constructor(...o){super(...o),this.color=new r(1,1,1,1),this.colorUniform=new Float32Array(4),this.colorMap=null,this.vertexColors=!1}copy(r){return super.copy(r),this.color.copy(r.color),this.colorMap=r.colorMap,this.vertexColors=r.vertexColors,this}updateUniforms(r,o){this.clearParameters(),this.colorUniform[0]=this.color.r,this.colorUniform[1]=this.color.g,this.colorUniform[2]=this.color.b,this.colorUniform[3]=this.color.a,this.setParameter("uColor",this.colorUniform),this.colorMap&&this.setParameter("texture_diffuseMap",this.colorMap)}getShaderVariant(r,p,m,n,f,u,M,d,g){const x={skin:m&&!!(m&s),screenSpace:m&&!!(m&t),useInstancing:m&&!!(m&e),useMorphPosition:m&&!!(m&i),useMorphNormal:m&&!!(m&a),useMorphTextureBased:m&&!!(m&l),alphaTest:this.alphaTest>0,vertexColors:this.vertexColors,diffuseMap:!!this.colorMap,pass:f},b=new o(M,d,g),U=c(r);return U.register("basic",h),U.getProgram("basic",x,b,this.userId)}}export{m as BasicMaterial};