sdfsdfs
This commit is contained in:
65
node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.mjs
generated
vendored
Normal file
65
node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.mjs
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
import { addBits } from './utils/addBits.mjs';
|
||||
import { compileHooks } from './utils/compileHooks.mjs';
|
||||
import { compileInputs } from './utils/compileInputs.mjs';
|
||||
import { compileOutputs } from './utils/compileOutputs.mjs';
|
||||
import { injectBits } from './utils/injectBits.mjs';
|
||||
|
||||
"use strict";
|
||||
const cacheMap = /* @__PURE__ */ Object.create(null);
|
||||
const bitCacheMap = /* @__PURE__ */ new Map();
|
||||
let CACHE_UID = 0;
|
||||
function compileHighShader({
|
||||
template,
|
||||
bits
|
||||
}) {
|
||||
const cacheId = generateCacheId(template, bits);
|
||||
if (cacheMap[cacheId])
|
||||
return cacheMap[cacheId];
|
||||
const { vertex, fragment } = compileInputsAndOutputs(template, bits);
|
||||
cacheMap[cacheId] = compileBits(vertex, fragment, bits);
|
||||
return cacheMap[cacheId];
|
||||
}
|
||||
function compileHighShaderGl({
|
||||
template,
|
||||
bits
|
||||
}) {
|
||||
const cacheId = generateCacheId(template, bits);
|
||||
if (cacheMap[cacheId])
|
||||
return cacheMap[cacheId];
|
||||
cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);
|
||||
return cacheMap[cacheId];
|
||||
}
|
||||
function compileInputsAndOutputs(template, bits) {
|
||||
const vertexFragments = bits.map((shaderBit) => shaderBit.vertex).filter((v) => !!v);
|
||||
const fragmentFragments = bits.map((shaderBit) => shaderBit.fragment).filter((v) => !!v);
|
||||
let compiledVertex = compileInputs(vertexFragments, template.vertex, true);
|
||||
compiledVertex = compileOutputs(vertexFragments, compiledVertex);
|
||||
const compiledFragment = compileInputs(fragmentFragments, template.fragment, true);
|
||||
return {
|
||||
vertex: compiledVertex,
|
||||
fragment: compiledFragment
|
||||
};
|
||||
}
|
||||
function generateCacheId(template, bits) {
|
||||
return bits.map((highFragment) => {
|
||||
if (!bitCacheMap.has(highFragment)) {
|
||||
bitCacheMap.set(highFragment, CACHE_UID++);
|
||||
}
|
||||
return bitCacheMap.get(highFragment);
|
||||
}).sort((a, b) => a - b).join("-") + template.vertex + template.fragment;
|
||||
}
|
||||
function compileBits(vertex, fragment, bits) {
|
||||
const vertexParts = compileHooks(vertex);
|
||||
const fragmentParts = compileHooks(fragment);
|
||||
bits.forEach((shaderBit) => {
|
||||
addBits(shaderBit.vertex, vertexParts, shaderBit.name);
|
||||
addBits(shaderBit.fragment, fragmentParts, shaderBit.name);
|
||||
});
|
||||
return {
|
||||
vertex: injectBits(vertex, vertexParts),
|
||||
fragment: injectBits(fragment, fragmentParts)
|
||||
};
|
||||
}
|
||||
|
||||
export { compileHighShader, compileHighShaderGl };
|
||||
//# sourceMappingURL=compileHighShader.mjs.map
|
Reference in New Issue
Block a user