diff options
author | Sven Göthel <sgothel@jausoft.com> | 2024-01-16 05:02:24 +0100 |
---|---|---|
committer | Sven Göthel <sgothel@jausoft.com> | 2024-01-16 05:02:24 +0100 |
commit | 6b1979992a7da2573c420ce3eb22f35abcbd35b7 (patch) | |
tree | 5786a3286a773ccc3082977e1888c13b3f481dc9 /src/test | |
parent | 33ec9480da3d414a4c973607970afa06b5ed79ca (diff) |
Graph/GraphUI AA-Quality + SampleCount (shader): Push params down to RegionRenderer's RenderState usually rarely set from top of user API, reducing complexity.
Discussion:
Alternative was to pass AA-Quality same as SampleCount from the top (e.g. GraphUI Scene),
however, this convolutes the API even more.
Both parameter modify the resulting shader code in pass2 rendering (only).
The used 'renderMode' is still maintained within the Region,
since it contains more dynamic states individual to each Region instance (color-texture, ..).
This despite 'renderMode' also changes the RenderState's shader program.
In the end, it really doesn't matter and is a choice of frequency - the pipeline is
usually rendering from on OpenGL rendering thread sequentially.
AA-Quality and SampleCount simply usually don't change that often
and are set only once.
Diffstat (limited to 'src/test')
11 files changed, 45 insertions, 53 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/graph/FontViewListener01.java b/src/test/com/jogamp/opengl/test/junit/graph/FontViewListener01.java index 11343b4ee..aa172743e 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/FontViewListener01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/FontViewListener01.java @@ -27,7 +27,6 @@ */ package com.jogamp.opengl.test.junit.graph; -import com.jogamp.graph.curve.Region; import com.jogamp.graph.font.Font; import com.jogamp.graph.font.FontScale; import com.jogamp.graph.ui.Group; @@ -38,7 +37,6 @@ import com.jogamp.graph.ui.layout.BoxLayout; import com.jogamp.graph.ui.layout.Gap; import com.jogamp.graph.ui.layout.GridLayout; import com.jogamp.graph.ui.shapes.GlyphShape; -import com.jogamp.graph.ui.shapes.Rectangle; import com.jogamp.math.geom.AABBox; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.GL; @@ -55,7 +53,6 @@ public class FontViewListener01 implements GLEventListener { private boolean useDPI = false; private final int renderModes; - private final int graphAAQuality; private final char startCharSymbol; private final Font font; private final Scene scene; @@ -63,13 +60,13 @@ public class FontViewListener01 implements GLEventListener { public FontViewListener01(final int renderModes, final int graphAAQuality, final int graphSampleCount, final Font font, final char startCharSymbol) { this.renderModes = renderModes; - this.graphAAQuality = Region.clipAAQuality(graphAAQuality); this.startCharSymbol = startCharSymbol; this.font = font; scene = new Scene(graphSampleCount); scene.setClearParams(new float[] { 1f, 1f, 1f, 1f}, GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); scene.setFrustumCullingEnabled(true); + scene.setAAQuality(graphAAQuality); } public void setMMPerCell(final float mmPerCell) { @@ -139,7 +136,6 @@ public class FontViewListener01 implements GLEventListener { grid = new Group(new GridLayout(gridCols, netGridSize, netGridSize, Alignment.FillCenter, new Gap(netGridSize/0.90f*0.10f))); scene.addShape(grid); - scene.setAAQuality(graphAAQuality); for(int idx=0; idx<Character.MAX_VALUE && grid.getShapeCount() < cellCount ; ++idx) { final char codepoint = (char)(startCharSymbol+idx); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java index eba3ecec6..40ae9244e 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java @@ -60,8 +60,9 @@ public class GPURegionGLListener01 extends GPURendererListenerBase01 { super(RegionRenderer.create(RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable), renderModes, debug, trace); this.shape_ctor_mode = shape_ctor_mode; this.getRenderer().setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); - setMatrix(-20, 00, -50, 0f, sampleCount); - setAAQuality(aaQuality); + setMatrix(-20, 00, -50, 0f); + getRenderer().setAAQuality(aaQuality); + getRenderer().setSampleCount(sampleCount); } private void createTestOutline00(){ @@ -291,7 +292,7 @@ public class GPURegionGLListener01 extends GPURendererListenerBase01 { regionRenderer.setWeight(weight); } regionRenderer.enable(gl, true); - region.draw(gl, regionRenderer, getAAQuality(), getSampleCount()); + region.draw(gl, regionRenderer); regionRenderer.enable(gl, false); } } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java index dc2fa4df0..de2d59c1e 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java @@ -53,8 +53,9 @@ public class GPURegionGLListener10 extends GPURendererListenerBase01 { public GPURegionGLListener10 (final int renderModes, final int aaQuality, final int sampleCount, final boolean debug, final boolean trace) { super(RegionRenderer.create(RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable), renderModes, debug, trace); this.getRenderer().setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); - setMatrix(-20, 00, -50, 0f, sampleCount); - setAAQuality(aaQuality); + setMatrix(-20, 00, -50, 0f); + getRenderer().setAAQuality(aaQuality); + getRenderer().setSampleCount(sampleCount); } private void createTestOutline(final GLProfile glp){ @@ -131,7 +132,7 @@ public class GPURegionGLListener10 extends GPURendererListenerBase01 { regionRenderer.setWeight(weight); } regionRenderer.enable(gl, true); - region.draw(gl, regionRenderer, getAAQuality(), getSampleCount()); + region.draw(gl, regionRenderer); regionRenderer.enable(gl, false); } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java index 48f8d8a65..1c3d40c61 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java @@ -90,8 +90,6 @@ public abstract class GPURendererListenerBase01 implements GLEventListener { private float yTran = 10; private float ang = 0f; private float zTran = -70f; - private int graphAAQuality = Region.DEFAULT_AA_QUALITY; - private final int[] sampleCount = new int[] { 4 }; protected volatile float weight = 1.0f; boolean ignoreInput = false; @@ -112,18 +110,13 @@ public abstract class GPURendererListenerBase01 implements GLEventListener { public final float getYTran() { return yTran; } public final float getAngleDeg() { return ang; } public final float getAngleRad() { return FloatUtil.adegToRad(ang); } - public final int[] getSampleCount() { return sampleCount; } public final float[] getPosition() { return position; } - public final void setAAQuality(final int v) { graphAAQuality = Region.clipAAQuality(v); } - public final int getAAQuality() { return graphAAQuality; } - - public void setMatrix(final float xtrans, final float ytrans, final float zTran, final float angle, final int sampleCount) { + public void setMatrix(final float xtrans, final float ytrans, final float zTran, final float angle) { this.xTran = xtrans; this.yTran = ytrans; this.zTran = zTran; this.ang = angle; - this.sampleCount[0] = Region.clipAASampleCount(sampleCount); } @Override @@ -243,7 +236,9 @@ public abstract class GPURendererListenerBase01 implements GLEventListener { } public void printScreen(final GLAutoDrawable drawable, final String dir, final String tech, final String objName, final boolean exportAlpha) throws GLException, IOException { - final String sw = String.format("_q%01d_s%02d-%s-Z%04d-snap%02d-%03dx%03d", graphAAQuality, sampleCount[0], objName, (int)Math.abs(zTran), screenshot_num++, drawable.getSurfaceWidth(), drawable.getSurfaceHeight()); + final String sw = String.format("_q%01d_s%02d-%s-Z%04d-snap%02d-%03dx%03d", + getRenderer().getAAQuality(), getRenderer().getSampleCount(), objName, (int)Math.abs(zTran), + screenshot_num++, drawable.getSurfaceWidth(), drawable.getSurfaceHeight()); final String filename = dir + tech + sw +".png"; if(screenshot.readPixels(drawable.getGL(), false)) { screenshot.write(new File(filename)); @@ -300,12 +295,12 @@ public abstract class GPURendererListenerBase01 implements GLEventListener { move(1, 0); } else if(arg0.getKeyCode() == KeyEvent.VK_6){ - sampleCount[0] -= 1; - System.err.println("Sample Count: " + sampleCount[0]); + getRenderer().setSampleCount( getRenderer().getSampleCount() - 1 ); + System.err.println("Sample Count: " + getRenderer().getSampleCount()); } else if(arg0.getKeyCode() == KeyEvent.VK_7){ - sampleCount[0] += 1; - System.err.println("Sample Count: " + sampleCount[0]); + getRenderer().setSampleCount( getRenderer().getSampleCount() + 1 ); + System.err.println("Sample Count: " + getRenderer().getSampleCount()); } else if(arg0.getKeyCode() == KeyEvent.VK_0){ rotate(1); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java index c3bff3408..9b23e1fb7 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java @@ -158,8 +158,9 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB this.regionHead = GLRegion.create(glp, renderModes, null, 0, 0); this.regionBottom = GLRegion.create(glp, renderModes, null, 0, 0); setFontSet(fontSet, FontSet.FAMILY_LIGHT, FontSet.STYLE_NONE); - setMatrix(0, 0, 0, 0f, sampleCount); - setAAQuality(aaQuality); + setMatrix(0, 0, 0, 0f); + getRenderer().setAAQuality(aaQuality); + getRenderer().setSampleCount(sampleCount); } void switchHeadBox() { @@ -309,6 +310,8 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB final float mmSizeHead = pixelSizeHead / ppmmV; final float pixelSizeCenter = FontScale.toPixels(fontSizeCenter, dpiV); final float mmSizeCenter = pixelSizeCenter / ppmmV; + final int pass2AAQual = getRenderer().getAAQuality(); + final int pass2Samples = getRenderer().getSampleCount(); renderer.enable(gl, true); @@ -324,12 +327,12 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB lfps = 0f; tfps = 0f; } - final String modeS = Region.getRenderModeString(regionFPS.getRenderModes())+"-q"+getAAQuality(); - final String text = String.format("%03.1f/%03.1f fps, v-sync %d, dpiV %.2f %.2f px/mm, font[head %.1fpt %.2fpx %.2fmm, center %.1fpt %.2fpx %.2fmm], %s-samples[%d, this %d], blend %b, alpha %d", + final String modeS = Region.getRenderModeString(regionFPS.getRenderModes())+"-q"+pass2AAQual; + final String text = String.format("%03.1f/%03.1f fps, v-sync %d, dpiV %.2f %.2f px/mm, font[head %.1fpt %.2fpx %.2fmm, center %.1fpt %.2fpx %.2fmm], %s-samples[%d], blend %b, alpha %d", lfps, tfps, gl.getSwapInterval(), dpiV, ppmmV, fontSizeHead, pixelSizeHead, mmSizeHead, fontSizeCenter, pixelSizeCenter, mmSizeCenter, - modeS, getSampleCount()[0], sampleCountFPS[0], + modeS, pass2Samples, renderer.isHintMaskSet(RenderState.BITHINT_BLENDING_ENABLED), drawable.getChosenGLCapabilities().getAlphaBits()); @@ -340,7 +343,7 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB pmv.scaleMv(sxy, sxy, 1.0f); } // No cache, keep region alive! - TextRegionUtil.drawString3D(gl, regionFPS.clear(gl), renderer, font, text, null, getAAQuality(), sampleCountFPS, tempT1, tempT2); + TextRegionUtil.drawString3D(gl, regionFPS.clear(gl), renderer, font, text, null, tempT1, tempT2); pmv.popMv(); } @@ -355,7 +358,7 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB pmv.scaleMv(sxy, sxy, 1.0f); } // System.err.printf("FontN: [%f %f] -> [%f %f]%n", dx, dy, nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy)); - textRegionUtil.drawString3D(gl, renderer, font, fontName, null, getAAQuality(), getSampleCount()); + textRegionUtil.drawString3D(gl, renderer, font, fontName, null); pmv.popMv(); } @@ -371,7 +374,7 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB pmv.scaleMv(sxy, sxy, 1.0f); } // pmv.glTranslatef(x0, y1, z0); - textRegionUtil.drawString3D(gl, renderer, font, headtext, null, getAAQuality(), getSampleCount()); + textRegionUtil.drawString3D(gl, renderer, font, headtext, null); pmv.popMv(); } @@ -394,15 +397,15 @@ public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerB } if(!userInput) { if( bottomTextUseFrustum ) { - TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, text2, null, getAAQuality(), getSampleCount(), tempT1, tempT2); + TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, text2, null, tempT1, tempT2); } else { - textRegionUtil.drawString3D(gl, renderer, font, text2, null, getAAQuality(), getSampleCount()); + textRegionUtil.drawString3D(gl, renderer, font, text2, null); } } else { if( bottomTextUseFrustum ) { - TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, userString.toString(), null, getAAQuality(), getSampleCount(), tempT1, tempT2); + TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, userString.toString(), null, tempT1, tempT2); } else { - textRegionUtil.drawString3D(gl, renderer, font, userString.toString(), null, getAAQuality(), getSampleCount()); + textRegionUtil.drawString3D(gl, renderer, font, userString.toString(), null); } } pmv.popMv(); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java index 4f2161c7d..4ab99fbda 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/PerfTextRendererNEWT00.java @@ -242,6 +242,8 @@ public class PerfTextRendererNEWT00 { final RegionRenderer renderer = RegionRenderer.create(RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable); renderer.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); + renderer.setAAQuality(Region.DEFAULT_AA_QUALITY); + renderer.setSampleCount(sampleCount); final GLRegion region = GLRegion.create(gl.getGLProfile(), renderModes, null, font, text); System.err.println("Region post ctor w/ pre-calculated buffer size"); @@ -276,7 +278,6 @@ public class PerfTextRendererNEWT00 { renderer.reshapeOrtho(drawable.getSurfaceWidth(), drawable.getSurfaceHeight(), 0.1f, 1000.0f); final int z0 = -1000; - final int[] sampleCountIO = { sampleCount }; // display gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); region.clear(gl); @@ -308,7 +309,7 @@ public class PerfTextRendererNEWT00 { pmv.loadMvIdentity(); pmv.translateMv(dx, dy, z0); pmv.scaleMv(fontScale, fontScale, 1f); - region.draw(gl, renderer, Region.DEFAULT_AA_QUALITY, sampleCountIO); + region.draw(gl, renderer); final long t5 = Clock.currentNanos(); // text added to region if( null != perf ) { final long td_graph = t3 - t2; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java b/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java index 8d7fdb852..c9d53d1d9 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java @@ -279,7 +279,8 @@ public class TestRegionRendererNEWT01 extends UITestCase { } public void setTech(final float xt, final float yt, final int zt, final float angle, final int sampleCount){ - impl.setMatrix(xt, yt, zt, angle, sampleCount); + impl.setMatrix(xt, yt, zt, angle); + impl.getRenderer().setSampleCount(sampleCount); } @Override diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT01.java b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT01.java index 3a2aa47a2..d7afc3f2a 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT01.java @@ -256,7 +256,7 @@ public class TestTextRendererNEWT01 extends UITestCase { pmv.loadMvIdentity(); pmv.translateMv(dx, dy, z0); pmv.scaleMv(fontSize, fontSize, 1.0f); - textRenderUtil.drawString3D(gl, renderer, font, text, null, Region.DEFAULT_AA_QUALITY, sampleCount); + textRenderUtil.drawString3D(gl, renderer, font, text, null); lastRow = row; } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java index 27e9e055e..1c1f14eb1 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java @@ -50,7 +50,6 @@ import org.junit.runners.MethodSorters; import com.jogamp.common.os.Platform; import com.jogamp.common.util.VersionUtil; import com.jogamp.graph.curve.Region; -import com.jogamp.graph.curve.opengl.RenderState; import com.jogamp.graph.font.Font; import com.jogamp.graph.font.FontFactory; import com.jogamp.newt.opengl.GLWindow; @@ -191,9 +190,9 @@ public class TestTextRendererNEWT20 extends UITestCase { for(final Font f : fontSet) { if( textGLListener.setFont(f) ) { for(final int aaQuality : aaQualitySet ) { - textGLListener.setAAQuality(aaQuality); + textGLListener.getRenderer().setAAQuality(aaQuality); for(final int sampleCount : sampleSet ) { - textGLListener.setSampleCount(sampleCount); + textGLListener.getRenderer().setSampleCount(sampleCount); action_per_font.run(); } } @@ -247,7 +246,7 @@ public class TestTextRendererNEWT20 extends UITestCase { for(final Font f : fontSet) { if( textGLListener.setFont(f) ) { for(final int sampleCount : sampleSet ) { - textGLListener.setSampleCount(sampleCount); + textGLListener.getRenderer().setSampleCount(sampleCount); action_per_font.run(); } } @@ -347,10 +346,6 @@ public class TestTextRendererNEWT20 extends UITestCase { public void attachInputListenerTo(final GLWindow window) { super.attachInputListenerTo(window); } - public void setSampleCount(final int sampleCount){ - // setMatrix(xt, yt, zoom, angle, sampleCount); - setMatrix(0, 0, 0, 0f, sampleCount); - } @Override public void init(final GLAutoDrawable drawable) { diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWTBugXXXX.java b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWTBugXXXX.java index b5b8b1820..a024a33eb 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWTBugXXXX.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWTBugXXXX.java @@ -201,7 +201,7 @@ public class TestTextRendererNEWTBugXXXX extends UITestCase { final float sxy = fontSize / font.getMetrics().getUnitsPerEM(); pmv.scaleMv(sxy, sxy, 1.0f); } - textRenderUtil.drawString3D(gl, renderer, font, text, null, Region.DEFAULT_AA_QUALITY, sampleCount); + textRenderUtil.drawString3D(gl, renderer, font, text, null); lastRow = row; } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TextRendererGLELBase.java b/src/test/com/jogamp/opengl/test/junit/graph/TextRendererGLELBase.java index 73dfb716c..a248dd810 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TextRendererGLELBase.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TextRendererGLELBase.java @@ -32,7 +32,6 @@ import java.io.IOException; import com.jogamp.opengl.GL2ES2; import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLEventListener; -import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.GLRegion; import com.jogamp.graph.curve.opengl.RenderState; import com.jogamp.graph.curve.opengl.RegionRenderer; @@ -258,11 +257,11 @@ public abstract class TextRendererGLELBase implements GLEventListener { } renderer.enable(gl, true); if( cacheRegion ) { - textRenderUtil.drawString3D(gl, renderer, font, text, null, Region.DEFAULT_AA_QUALITY, vbaaSampleCount); + textRenderUtil.drawString3D(gl, renderer, font, text, null); } else if( null != region ) { - TextRegionUtil.drawString3D(gl, region, renderer, font, text, null, Region.DEFAULT_AA_QUALITY, vbaaSampleCount, tempT1, tempT2); + TextRegionUtil.drawString3D(gl, region, renderer, font, text, null, tempT1, tempT2); } else { - TextRegionUtil.drawString3D(gl, renderModes, renderer, font, text, null, Region.DEFAULT_AA_QUALITY, vbaaSampleCount, tempT1, tempT2); + TextRegionUtil.drawString3D(gl, renderModes, renderer, font, text, null, tempT1, tempT2); } renderer.enable(gl, false); |