UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.52 kB
import{CULLFACE_FRONT as e}from"../../platform/graphics/constants.js";import{ShaderProcessorOptions as s}from"../../platform/graphics/shader-processor-options.js";import{SHADER_FORWARDHDR as t,GAMMA_SRGBHDR as r,GAMMA_NONE as a,TONEMAP_LINEAR as m,LAYERID_SKYBOX as o}from"../constants.js";import{Material as n}from"../materials/material.js";import{MeshInstance as i}from"../mesh-instance.js";import{getProgramLibrary as p}from"../shader-lib/get-program-library.js";import{skybox as c}from"../shader-lib/programs/skybox.js";import{SkyGeometry as h}from"./sky-geometry.js";class y{constructor(y,l,g,f,u){this.meshInstance=null;const b=new n;b.name="SkyMaterial",b.getShaderVariant=function(e,o,n,i,h,g,b,d){const k={pass:h,encoding:f.encoding,gamma:h===t?l.gammaCorrection?r:a:l.gammaCorrection,toneMapping:h===t?m:l.toneMapping,skymesh:u};f.cubemap?(k.type="cubemap",k.mip=f.fixCubemapSeams?l.skyboxMip:0,k.fixSeams=f.fixCubemapSeams):k.type="envAtlas";const x=new s(b,d),I=p(y);return I.register("skybox",c),I.getProgram("skybox",k,x)},f.cubemap?b.setParameter("texture_cubeMap",f):(b.setParameter("texture_envAtlas",f),b.setParameter("mipLevel",l._skyboxMip)),b.cull=e,b.depthWrite=!1;const d=l.layers.getLayerById(o);if(d){const e=h.create(y,u),s=new i(e,b,g);this.meshInstance=s,s.cull=!1,s.pick=!1,d.addMeshInstances([s]),this.skyLayer=d}}destroy(){this.meshInstance&&(this.skyLayer&&this.skyLayer.removeMeshInstances([this.meshInstance]),this.meshInstance.destroy(),this.meshInstance=null)}}export{y as SkyMesh};