@@ -7316,74 +7316,110 @@ protected PShader getPolyShader(boolean lit, boolean tex) {
73167316 PShader shader ;
73177317 PGraphicsOpenGL ppg = getPrimaryPG ();
73187318 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+ // }
73247324 if (lit ) {
73257325 if (tex ) {
7326- if (useDefault || !polyShader . checkPolyType ( PShader . TEXLIGHT )) {
7326+ if (useDefault || !isPolyShaderTexLight ( polyShader )) {
73277327 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 );
73317330 }
73327331 shader = ppg .defTexlightShader ;
73337332 } else {
73347333 shader = polyShader ;
73357334 }
73367335 } else {
7337- if (useDefault || !polyShader . checkPolyType ( PShader . LIGHT )) {
7336+ if (useDefault || !isPolyShaderLight ( polyShader )) {
73387337 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 );
73427340 }
73437341 shader = ppg .defLightShader ;
73447342 } else {
73457343 shader = polyShader ;
73467344 }
73477345 }
73487346 } else {
7349- if (polyShader != null && polyShader . accessLightAttribs ( )) {
7347+ if (isPolyShaderUsingLights ( polyShader )) {
73507348 PGraphics .showWarning (SHADER_NEED_LIGHT_ATTRIBS );
73517349 useDefault = true ;
73527350 }
73537351
73547352 if (tex ) {
7355- if (useDefault || !polyShader . checkPolyType ( PShader . TEXTURE )) {
7353+ if (useDefault || !isPolyShaderTex ( polyShader )) {
73567354 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 );
73607357 }
73617358 shader = ppg .defTextureShader ;
73627359 } else {
73637360 shader = polyShader ;
73647361 }
73657362 } else {
7366- if (useDefault || !polyShader . checkPolyType ( PShader . COLOR )) {
7363+ if (useDefault || !isPolyShaderColor ( polyShader )) {
73677364 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 );
73717367 }
73727368 shader = ppg .defColorShader ;
73737369 } else {
73747370 shader = polyShader ;
73757371 }
73767372 }
73777373 }
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 );
73837380 return shader ;
73847381 }
73857382
73867383
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+
73877423 protected PShader getLineShader () {
73887424 PShader shader ;
73897425 PGraphicsOpenGL ppg = getPrimaryPG ();
0 commit comments