@itwin/core-frontend
Version:
iTwin.js frontend components
41 lines • 2.11 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module WebGL
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCombineTexturesProgram = createCombineTexturesProgram;
const RenderFlags_1 = require("../RenderFlags");
const Texture_1 = require("../Texture");
const ViewportQuad_1 = require("./ViewportQuad");
const computeBaseColor = "return vec4(1.0);";
const assignFragData = `
if (v_texCoord.y < .5)
FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));
else
FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));
`;
/** @internal */
function createCombineTexturesProgram(context) {
const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
const frag = builder.frag;
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeBaseColor);
frag.addUniform("u_texture0", 8 /* VariableType.Sampler2D */, (prog) => {
prog.addGraphicUniform("u_texture0", (uniform, params) => {
Texture_1.Texture2DHandle.bindSampler(uniform, params.geometry.texture0, RenderFlags_1.TextureUnit.Zero);
});
}, 3 /* VariablePrecision.High */);
frag.addUniform("u_texture1", 8 /* VariableType.Sampler2D */, (prog) => {
prog.addGraphicUniform("u_texture1", (uniform, params) => {
Texture_1.Texture2DHandle.bindSampler(uniform, params.geometry.texture1, RenderFlags_1.TextureUnit.One);
});
}, 3 /* VariablePrecision.High */);
frag.set(18 /* FragmentShaderComponent.AssignFragData */, assignFragData);
builder.vert.headerComment = "//!V! CombineTextures";
builder.frag.headerComment = "//!F! CombineTextures";
return builder.buildProgram(context);
}
//# sourceMappingURL=CombineTextures.js.map