@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.55 kB
JavaScript
import{extends as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{Shader as r}from"../../platform/graphics/shader.js";import{ShaderUtils as t}from"../../platform/graphics/shader-utils.js";import{shaderChunks as o}from"./chunks/chunks.js";import{getProgramLibrary as n}from"./get-program-library.js";import{ShaderGenerator as a}from"./programs/shader-generator.js";import{SHADERLANGUAGE_WGSL as i}from"../../platform/graphics/constants.js";function s(n,a,i,s=!1,m={}){return"boolean"==typeof s?m.useTransformFeedback=s:"object"==typeof s&&(m=e({},m,s)),new r(n,t.createDefinition(n,e({},m,{name:`${a}_${i}`,vertexCode:o[a],fragmentCode:o[i]})))}function m(o,a,i,s,m,f=!1,d={}){"boolean"==typeof f?d.useTransformFeedback=f:"object"==typeof f&&(d=e({},d,f));const h=n(o);let c=h.getCachedShader(s);return c||(c=new r(o,t.createDefinition(o,e({},d,{name:s,vertexCode:a,fragmentCode:i,attributes:m}))),h.setCachedShader(s,c)),c}class f extends a{constructor(e,r){super(),this.key=e,this.shaderDefinition=r}generateKey(e){return this.key}createShaderDefinition(e,r){return this.shaderDefinition}}function d(e,r){var t;const o=e.definition,a=`${null!=(t=o.name)?t:"shader"}-id-${e.id}`,s=new f(a,o),m="shader",d=n(e.device);d.register(m,s);const h=d.getProgram(m,{},r);return e.definition.shaderLanguage===i&&(h.meshUniformBufferFormat=o.meshUniformBufferFormat,h.meshBindGroupFormat=o.meshBindGroupFormat),d.unregister(m),h}o.createShader=s,o.createShaderFromCode=m;export{s as createShader,m as createShaderFromCode,d as processShader};