From 3ea6feb84ce278acdc0eed3cdbb7dbb8aa41c78f Mon Sep 17 00:00:00 2001 From: tschw Date: Tue, 7 Jul 2015 01:04:29 +0200 Subject: [PATCH] WebGLProgram: Compilation errors go to .diagnostics. --- src/renderers/webgl/WebGLProgram.js | 44 ++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/src/renderers/webgl/WebGLProgram.js b/src/renderers/webgl/WebGLProgram.js index c872fc1c9e..8d8f7a3de3 100644 --- a/src/renderers/webgl/WebGLProgram.js +++ b/src/renderers/webgl/WebGLProgram.js @@ -379,22 +379,52 @@ THREE.WebGLProgram = ( function () { gl.linkProgram( program ); - var programLogInfo = gl.getProgramInfoLog( program ); - var vertexErrorLogInfo = gl.getShaderInfoLog( glVertexShader ); - var fragmentErrorLogInfo = gl.getShaderInfoLog( glFragmentShader ); + var programLog = gl.getProgramInfoLog( program ); + var vertexLog = gl.getShaderInfoLog( glVertexShader ); + var fragmentLog = gl.getShaderInfoLog( glFragmentShader ); + + var runnable = true; + var haveDiagnostics = true; if ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) { - console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLogInfo, vertexErrorLogInfo, fragmentErrorLogInfo ); + runnable = false; - } + console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); + + } else if ( programLog !== '' ) { - else if ( programLogInfo !== '' ) { + console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); - console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLogInfo ); + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; } + if ( haveDiagnostics ) this.diagnostics = { + + runnable: runnable, + material: material, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + // clean up gl.deleteShader( glVertexShader ); -- GitLab