UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.46 kB
import{Vec4 as r}from"../../core/math/vec4.js";import{BindGroup as s}from"../../platform/graphics/bind-group.js";import{BINDGROUP_MESH as t,PRIMITIVE_TRISTRIP as o}from"../../platform/graphics/constants.js";import{ShaderProcessorOptions as e}from"../../platform/graphics/shader-processor-options.js";import{UniformBuffer as i}from"../../platform/graphics/uniform-buffer.js";import{processShader as f}from"../shader-lib/utils.js";const n={type:o,base:0,count:4,indexed:!1},u=new r,h=new r;class p{constructor(r){this.uniformBuffer=void 0,this.bindGroup=void 0;const t=r.device;if(this.shader=r,t.supportsUniformBuffers){const o=new e;this.shader=f(r,o);const n=this.shader.meshUniformBufferFormat;n&&(this.uniformBuffer=new i(t,n,!1));const u=this.shader.meshBindGroupFormat;this.bindGroup=new s(t,u,this.uniformBuffer)}}destroy(){var r,s;null==(r=this.uniformBuffer)||r.destroy(),this.uniformBuffer=null,null==(s=this.bindGroup)||s.destroy(),this.bindGroup=null}render(r,s){const o=this.shader.device;var e;r&&(u.set(o.vx,o.vy,o.vw,o.vh),h.set(o.sx,o.sy,o.sw,o.sh),s=null!=(e=s)?e:r,o.setViewport(r.x,r.y,r.z,r.w),o.setScissor(s.x,s.y,s.z,s.w));o.setVertexBuffer(o.quadVertexBuffer,0);const i=this.shader;if(o.setShader(i),o.supportsUniformBuffers){var f;const r=this.bindGroup;null==(f=r.defaultUniformBuffer)||f.update(),r.update(),o.setBindGroup(t,r)}o.draw(n),r&&(o.setViewport(u.x,u.y,u.z,u.w),o.setScissor(h.x,h.y,h.z,h.w))}}export{p as QuadRender};