@@ -7316,74 +7316,110 @@ protected PShader getPolyShader(boolean lit, boolean tex) {
7316
7316
PShader shader ;
7317
7317
PGraphicsOpenGL ppg = getPrimaryPG ();
7318
7318
boolean useDefault = polyShader == null ;
7319
- if (polyShader != null ) {
7320
- polyShader .setRenderer (this );
7321
- polyShader .loadAttributes ();
7322
- polyShader .loadUniforms ();
7323
- }
7319
+ // if (polyShader != null) {
7320
+ // polyShader.setRenderer(this);
7321
+ // polyShader.loadAttributes();
7322
+ // polyShader.loadUniforms();
7323
+ // }
7324
7324
if (lit ) {
7325
7325
if (tex ) {
7326
- if (useDefault || !polyShader . checkPolyType ( PShader . TEXLIGHT )) {
7326
+ if (useDefault || !isPolyShaderTexLight ( polyShader )) {
7327
7327
if (ppg .defTexlightShader == null ) {
7328
- String [] vertSource = pgl .loadVertexShader (defTexlightShaderVertURL );
7329
- String [] fragSource = pgl .loadFragmentShader (defTexlightShaderFragURL );
7330
- ppg .defTexlightShader = new PShader (parent , vertSource , fragSource );
7328
+ ppg .defTexlightShader = loadShaderFromURL (defTexlightShaderFragURL ,
7329
+ defTexlightShaderVertURL );
7331
7330
}
7332
7331
shader = ppg .defTexlightShader ;
7333
7332
} else {
7334
7333
shader = polyShader ;
7335
7334
}
7336
7335
} else {
7337
- if (useDefault || !polyShader . checkPolyType ( PShader . LIGHT )) {
7336
+ if (useDefault || !isPolyShaderLight ( polyShader )) {
7338
7337
if (ppg .defLightShader == null ) {
7339
- String [] vertSource = pgl .loadVertexShader (defLightShaderVertURL );
7340
- String [] fragSource = pgl .loadFragmentShader (defLightShaderFragURL );
7341
- ppg .defLightShader = new PShader (parent , vertSource , fragSource );
7338
+ ppg .defLightShader = loadShaderFromURL (defLightShaderFragURL ,
7339
+ defLightShaderVertURL );
7342
7340
}
7343
7341
shader = ppg .defLightShader ;
7344
7342
} else {
7345
7343
shader = polyShader ;
7346
7344
}
7347
7345
}
7348
7346
} else {
7349
- if (polyShader != null && polyShader . accessLightAttribs ( )) {
7347
+ if (isPolyShaderUsingLights ( polyShader )) {
7350
7348
PGraphics .showWarning (SHADER_NEED_LIGHT_ATTRIBS );
7351
7349
useDefault = true ;
7352
7350
}
7353
7351
7354
7352
if (tex ) {
7355
- if (useDefault || !polyShader . checkPolyType ( PShader . TEXTURE )) {
7353
+ if (useDefault || !isPolyShaderTex ( polyShader )) {
7356
7354
if (ppg .defTextureShader == null ) {
7357
- String [] vertSource = pgl .loadVertexShader (defTextureShaderVertURL );
7358
- String [] fragSource = pgl .loadFragmentShader (defTextureShaderFragURL );
7359
- ppg .defTextureShader = new PShader (parent , vertSource , fragSource );
7355
+ ppg .defTextureShader = loadShaderFromURL (defTextureShaderFragURL ,
7356
+ defTextureShaderVertURL );
7360
7357
}
7361
7358
shader = ppg .defTextureShader ;
7362
7359
} else {
7363
7360
shader = polyShader ;
7364
7361
}
7365
7362
} else {
7366
- if (useDefault || !polyShader . checkPolyType ( PShader . COLOR )) {
7363
+ if (useDefault || !isPolyShaderColor ( polyShader )) {
7367
7364
if (ppg .defColorShader == null ) {
7368
- String [] vertSource = pgl .loadVertexShader (defColorShaderVertURL );
7369
- String [] fragSource = pgl .loadFragmentShader (defColorShaderFragURL );
7370
- ppg .defColorShader = new PShader (parent , vertSource , fragSource );
7365
+ ppg .defColorShader = loadShaderFromURL (defColorShaderFragURL ,
7366
+ defColorShaderVertURL );
7371
7367
}
7372
7368
shader = ppg .defColorShader ;
7373
7369
} else {
7374
7370
shader = polyShader ;
7375
7371
}
7376
7372
}
7377
7373
}
7378
- if (shader != polyShader ) {
7379
- shader .setRenderer (this );
7380
- shader .loadAttributes ();
7381
- shader .loadUniforms ();
7382
- }
7374
+ // if (shader != polyShader) {
7375
+ // shader.setRenderer(this);
7376
+ // shader.loadAttributes();
7377
+ // shader.loadUniforms();
7378
+ // }
7379
+ updateShader (shader );
7383
7380
return shader ;
7384
7381
}
7385
7382
7386
7383
7384
+ protected void updateShader (PShader shader ) {
7385
+ shader .setRenderer (this );
7386
+ shader .loadAttributes ();
7387
+ shader .loadUniforms ();
7388
+ }
7389
+
7390
+
7391
+ protected PShader loadShaderFromURL (URL fragURL , URL vertURL ) {
7392
+ String [] vertSource = pgl .loadVertexShader (vertURL );
7393
+ String [] fragSource = pgl .loadFragmentShader (fragURL );
7394
+ return new PShader (parent , vertSource , fragSource );
7395
+ }
7396
+
7397
+
7398
+ protected boolean isPolyShaderTexLight (PShader shader ) {
7399
+ return shader .checkPolyType (PShader .TEXLIGHT );
7400
+ }
7401
+
7402
+
7403
+ protected boolean isPolyShaderLight (PShader shader ) {
7404
+ return shader .checkPolyType (PShader .LIGHT );
7405
+ }
7406
+
7407
+
7408
+ protected boolean isPolyShaderTex (PShader shader ) {
7409
+ return shader .checkPolyType (PShader .TEXTURE );
7410
+ }
7411
+
7412
+
7413
+ protected boolean isPolyShaderColor (PShader shader ) {
7414
+ return shader .checkPolyType (PShader .COLOR );
7415
+ }
7416
+
7417
+
7418
+ protected boolean isPolyShaderUsingLights (PShader shader ) {
7419
+ return shader != null && shader .accessLightAttribs ();
7420
+ }
7421
+
7422
+
7387
7423
protected PShader getLineShader () {
7388
7424
PShader shader ;
7389
7425
PGraphicsOpenGL ppg = getPrimaryPG ();
0 commit comments