@@ -341,6 +341,7 @@ define([
341
341
var ShaderProgram = function ( options ) {
342
342
this . _gl = options . gl ;
343
343
this . _logShaderCompilation = options . logShaderCompilation ;
344
+ this . _debugShaders = options . debugShaders ;
344
345
this . _attributeLocations = options . attributeLocations ;
345
346
346
347
this . _program = undefined ;
@@ -419,6 +420,8 @@ define([
419
420
}
420
421
} ) ;
421
422
423
+ var consolePrefix = '[Cesium WebGL] ' ;
424
+
422
425
function createAndLinkProgram ( gl , shader ) {
423
426
var vsSource = shader . _vertexShaderText ;
424
427
var fsSource = shader . _fragmentShaderText ;
@@ -451,24 +454,49 @@ define([
451
454
452
455
var log ;
453
456
if ( ! gl . getProgramParameter ( program , gl . LINK_STATUS ) ) {
457
+ var debugShaders = shader . _debugShaders ;
458
+
454
459
// For performance, only check compile errors if there is a linker error.
455
460
if ( ! gl . getShaderParameter ( fragmentShader , gl . COMPILE_STATUS ) ) {
456
461
log = gl . getShaderInfoLog ( fragmentShader ) ;
462
+ console . error ( consolePrefix + 'Fragment shader compile log: ' + log ) ;
463
+ if ( defined ( debugShaders ) ) {
464
+ var fragmentSourceTranslation = debugShaders . getTranslatedShaderSource ( fragmentShader ) ;
465
+ if ( fragmentSourceTranslation !== '' ) {
466
+ console . error ( consolePrefix + 'Translated fragment shader source:\n' + fragmentSourceTranslation ) ;
467
+ } else {
468
+ console . error ( consolePrefix + 'Fragment shader translation failed.' ) ;
469
+ }
470
+ }
471
+
457
472
gl . deleteProgram ( program ) ;
458
- console . error ( '[GL] Fragment shader compile log: ' + log ) ;
459
473
throw new RuntimeError ( 'Fragment shader failed to compile. Compile log: ' + log ) ;
460
474
}
461
475
462
476
if ( ! gl . getShaderParameter ( vertexShader , gl . COMPILE_STATUS ) ) {
463
477
log = gl . getShaderInfoLog ( vertexShader ) ;
478
+ console . error ( consolePrefix + 'Vertex shader compile log: ' + log ) ;
479
+ if ( defined ( debugShaders ) ) {
480
+ var vertexSourceTranslation = debugShaders . getTranslatedShaderSource ( vertexShader ) ;
481
+ if ( vertexSourceTranslation !== '' ) {
482
+ console . error ( consolePrefix + 'Translated vertex shader source:\n' + vertexSourceTranslation ) ;
483
+ } else {
484
+ console . error ( consolePrefix + 'Vertex shader translation failed.' ) ;
485
+ }
486
+ }
487
+
464
488
gl . deleteProgram ( program ) ;
465
- console . error ( '[GL] Vertex shader compile log: ' + log ) ;
466
489
throw new RuntimeError ( 'Vertex shader failed to compile. Compile log: ' + log ) ;
467
490
}
468
491
469
492
log = gl . getProgramInfoLog ( program ) ;
493
+ console . error ( consolePrefix + 'Shader program link log: ' + log ) ;
494
+ if ( defined ( debugShaders ) ) {
495
+ console . error ( consolePrefix + 'Translated vertex shader source:\n' + debugShaders . getTranslatedShaderSource ( vertexShader ) ) ;
496
+ console . error ( consolePrefix + 'Translated fragment shader source:\n' + debugShaders . getTranslatedShaderSource ( fragmentShader ) ) ;
497
+ }
498
+
470
499
gl . deleteProgram ( program ) ;
471
- console . error ( '[GL] Shader program link log: ' + log ) ;
472
500
throw new RuntimeError ( 'Program failed to link. Link log: ' + log ) ;
473
501
}
474
502
@@ -477,21 +505,21 @@ define([
477
505
if ( logShaderCompilation ) {
478
506
log = gl . getShaderInfoLog ( vertexShader ) ;
479
507
if ( defined ( log ) && ( log . length > 0 ) ) {
480
- console . log ( '[GL] Vertex shader compile log: ' + log ) ;
508
+ console . log ( consolePrefix + ' Vertex shader compile log: ' + log ) ;
481
509
}
482
510
}
483
511
484
512
if ( logShaderCompilation ) {
485
513
log = gl . getShaderInfoLog ( fragmentShader ) ;
486
514
if ( defined ( log ) && ( log . length > 0 ) ) {
487
- console . log ( '[GL] Fragment shader compile log: ' + log ) ;
515
+ console . log ( consolePrefix + ' Fragment shader compile log: ' + log ) ;
488
516
}
489
517
}
490
518
491
519
if ( logShaderCompilation ) {
492
520
log = gl . getProgramInfoLog ( program ) ;
493
521
if ( defined ( log ) && ( log . length > 0 ) ) {
494
- console . log ( '[GL] Shader program link log: ' + log ) ;
522
+ console . log ( consolePrefix + ' Shader program link log: ' + log ) ;
495
523
}
496
524
}
497
525
@@ -644,7 +672,7 @@ define([
644
672
}
645
673
646
674
var gl = shader . _gl ;
647
- var program = createAndLinkProgram ( gl , shader ) ;
675
+ var program = createAndLinkProgram ( gl , shader , shader . _debugShaders ) ;
648
676
var numberOfVertexAttributes = gl . getProgramParameter ( program , gl . ACTIVE_ATTRIBUTES ) ;
649
677
var uniforms = findUniforms ( gl , program ) ;
650
678
var partitionedUniforms = partitionUniforms ( uniforms . uniformsByName ) ;
0 commit comments