@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
35 lines • 2.62 kB
JavaScript
import { expandFunctions, tgdCodeStringify as tgdCodeToString, expandVariables, } from "./code.js";
/**
* Helper to create a Vertex Shader.
*
* Sometime you need to add some code to a shader depending on
* what you want to display. This can be the case when you use
* different materials. All the 3D transformations are common,
* but you may need more or less varyings and uniforms.
* @see https://registry.khronos.org/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf
*/
export class TgdShaderVertex {
constructor({ precision = "highp", uniforms = {}, attributes = {}, varying = {}, functions = {}, mainCode = [], } = {}) {
this.precision = precision;
this.uniforms = uniforms;
this.attributes = attributes;
this.varying = varying;
this.functions = functions;
this.mainCode = mainCode;
}
get code() {
return tgdCodeToString([
`#version 300 es`,
`precision ${this.precision} float;`,
...expandVariables(this.uniforms, "uniform"),
...expandVariables(this.attributes, "in"),
...expandVariables(this.varying, "out"),
...expandFunctions(this.functions),
"",
`void main() {`,
this.mainCode,
"}",
]);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYWRlci92ZXJ0ZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlILGVBQWUsRUFDZixnQkFBZ0IsSUFBSSxlQUFlLEVBQ25DLGVBQWUsR0FDbEIsTUFBTSxRQUFRLENBQUE7QUFFZjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBUXhCLFlBQVksRUFDUixTQUFTLEdBQUcsT0FBTyxFQUNuQixRQUFRLEdBQUcsRUFBRSxFQUNiLFVBQVUsR0FBRyxFQUFFLEVBQ2YsT0FBTyxHQUFHLEVBQUUsRUFDWixTQUFTLEdBQUcsRUFBRSxFQUNkLFFBQVEsR0FBRyxFQUFFLE1BUVosRUFBRTtRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzVCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLGVBQWUsQ0FBQztZQUNuQixpQkFBaUI7WUFDakIsYUFBYSxJQUFJLENBQUMsU0FBUyxTQUFTO1lBQ3BDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBQzVDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO1lBQ3pDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1lBQ3ZDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbEMsRUFBRTtZQUNGLGVBQWU7WUFDZixJQUFJLENBQUMsUUFBUTtZQUNiLEdBQUc7U0FDTixDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0oifQ==