UNPKG

@thi.ng/webgl

Version:

WebGL & GLSL abstraction layer

48 lines (47 loc) 1.39 kB
import { S2D, V2 } from "@thi.ng/shader-ast/api/types"; import { assign } from "@thi.ng/shader-ast/ast/assign"; import { defMain } from "@thi.ng/shader-ast/ast/function"; import { FLOAT0, FLOAT1, vec4 } from "@thi.ng/shader-ast/ast/lit"; import { $xy } from "@thi.ng/shader-ast/ast/swizzle"; import { texture } from "@thi.ng/shader-ast/builtin/texture"; const PASSTHROUGH_VS = (gl, _, ins) => [ defMain(() => [assign(gl.gl_Position, vec4(ins.position, FLOAT0, FLOAT1))]) ]; const PASSTHROUGH_VS_UV = (gl, _, ins, outs) => [ defMain(() => [ assign(outs.v_uv, ins.uv), assign(gl.gl_Position, vec4(ins.position, FLOAT0, FLOAT1)) ]) ]; const PASSTHROUGH_FS = (gl, _, __, outs) => [ defMain(() => [assign(outs.fragColor, $xy(gl.gl_FragCoord))]) ]; const PASSTHROUGH_FS_UV = (_, unis, ins, outs) => [ defMain(() => [assign(outs.fragColor, texture(unis.tex, ins.v_uv))]) ]; const FX_SHADER_SPEC = { vs: PASSTHROUGH_VS, fs: PASSTHROUGH_FS, attribs: { position: V2 }, varying: {}, uniforms: {}, state: { depth: false }, ext: {} }; const FX_SHADER_SPEC_UV = { vs: PASSTHROUGH_VS_UV, fs: PASSTHROUGH_FS_UV, attribs: { position: V2, uv: V2 }, varying: { v_uv: V2 }, uniforms: { tex: S2D }, state: { depth: false }, ext: {} }; export { FX_SHADER_SPEC, FX_SHADER_SPEC_UV, PASSTHROUGH_FS, PASSTHROUGH_FS_UV, PASSTHROUGH_VS, PASSTHROUGH_VS_UV };