import {initShaderProgram, unlinkShaderProgram} from './shaders'; /** * * @param {any} context the program context * @param {string} fsSource new fragment shader source * @param {string} vsSource current vsSource */ export function changeFragmentShader(context: any, fsSource: string, vsSource: string) { [context.shaderProgram, context.fragmentShader] = unlinkShaderProgram(context.gl, context.fragmentShader, context.shaderProgram); initShaderProgram(context, vsSource, fsSource); context.programInfo = { program: context.shaderProgram, attribLocations: { vertexPosition: context.gl.getAttribLocation(context.shaderProgram, 'aVertexPosition'), vertexColor: context.gl.getAttribLocation(context.shaderProgram, 'aVertexColor'), vertexNormal: context.gl.getAttribLocation(context.shaderProgram, 'aVertexNormal'), textureCoord: context.gl.getAttribLocation(context.shaderProgram, 'aTextureCoord'), }, uniformLocations: { projectionMatrix: context.gl.getUniformLocation( context.shaderProgram, 'uProjectionMatrix'), viewMatrix: context.gl.getUniformLocation( context.shaderProgram, 'uviewMatrix'), modelMatrix: context.gl.getUniformLocation( context.shaderProgram, 'umodelMatrix'), normalModelMatrix: context.gl.getUniformLocation( context.shaderProgram, 'unormalModelMatrix'), uSampler: context.gl.getUniformLocation( context.shaderProgram, 'uSampler'), }, }; }