44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
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'),
|
|
},
|
|
};
|
|
}
|