28 lines
2.9 KiB
JavaScript
28 lines
2.9 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$generateProgram = function(global, require, module, exports) {
|
|
var warn = require("module$node_modules$pixi_DOT_js$lib$utils$logging$warn"), GlProgramData = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgramData"), compileShader = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$compileShader"), defaultValue = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$defaultValue"), extractAttributesFromGlProgram = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$extractAttributesFromGlProgram"),
|
|
getUboData = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$getUboData"), getUniformData = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$getUniformData"), logProgramError = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$logProgramError");
|
|
"use strict";
|
|
exports.generateProgram = function(gl, program) {
|
|
var glVertShader = compileShader.compileShader(gl, gl.VERTEX_SHADER, program.vertex), glFragShader = compileShader.compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);
|
|
const webGLProgram = gl.createProgram();
|
|
gl.attachShader(webGLProgram, glVertShader);
|
|
gl.attachShader(webGLProgram, glFragShader);
|
|
const transformFeedbackVaryings = program.transformFeedbackVaryings;
|
|
transformFeedbackVaryings && ("function" !== typeof gl.transformFeedbackVaryings ? warn.warn("TransformFeedback is not supported but TransformFeedbackVaryings are given.") : gl.transformFeedbackVaryings(webGLProgram, transformFeedbackVaryings.names, "separate" === transformFeedbackVaryings.bufferMode ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS));
|
|
gl.linkProgram(webGLProgram);
|
|
gl.getProgramParameter(webGLProgram, gl.LINK_STATUS) || logProgramError.logProgramError(gl, webGLProgram, glVertShader, glFragShader);
|
|
program._attributeData = extractAttributesFromGlProgram.extractAttributesFromGlProgram(webGLProgram, gl, !/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(program.vertex));
|
|
program._uniformData = getUniformData.getUniformData(webGLProgram, gl);
|
|
program._uniformBlockData = getUboData.getUboData(webGLProgram, gl);
|
|
gl.deleteShader(glVertShader);
|
|
gl.deleteShader(glFragShader);
|
|
glVertShader = {};
|
|
for (const i in program._uniformData) {
|
|
glFragShader = program._uniformData[i], glVertShader[i] = {location:gl.getUniformLocation(webGLProgram, i), value:defaultValue.defaultValue(glFragShader.type, glFragShader.size)};
|
|
}
|
|
return new GlProgramData.GlProgramData(webGLProgram, glVertShader);
|
|
};
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$generateProgram.js.map
|