From 36c2546d678c59126aa8f847ab2c4dd075b9252e Mon Sep 17 00:00:00 2001 From: soywiz Date: Sun, 12 Feb 2023 22:18:22 +0100 Subject: [PATCH] Replace reference tests with screenshot tests and do some fixes and improvements --- .../soywiz/korlibs/root/RootKorlibsPlugin.kt | 8 + korge-sandbox/src/commonMain/kotlin/Main.kt | 4 + .../kotlin/com/soywiz/korge/Korge.kt | 8 +- .../kotlin/com/soywiz/korge/KorgeHeadless.kt | 37 +- .../com/soywiz/korge/render/BatchBuilder2D.kt | 4 + .../com/soywiz/korge/scene/DebugBitmapFont.kt | 8 +- .../kotlin/com/soywiz/korge/view/Stage.kt | 2 +- .../kotlin/com/soywiz/korge/view/Views.kt | 5 +- .../com/soywiz/korge/KorgeHeadlessTest.kt | 2 +- .../soywiz/korge/testing/BitmapAsserter.kt | 114 +- .../korge/testing/KorgeOffscreenTest.kt | 20 +- .../com/soywiz/korge/KorgeHeadlessJvmTest.kt | 2 +- .../soywiz/korge/bitmapfont/BitmapFontTest.kt | 25 +- .../length/BindLengthComponentJvmTest.kt | 13 +- .../particles/ParticleEmitterViewTest.kt | 39 +- .../soywiz/korge/render/BatchBuilderTest.kt | 30 - .../com/soywiz/korge/test/TtfFontTest.kt | 4 +- .../korge/testing/KorgeScreenshotTest.kt | 6 +- .../korge/view/ReferenceGraphicsTest.kt | 97 +- .../soywiz/korge/view/ReferenceOpenglTest.kt | 23 +- .../soywiz/korge/view/ReferenceViewsTest.kt | 29 +- .../soywiz/korge/view/TransitionViewTest.kt | 20 +- .../com/soywiz/korge/view/ViewsJvmTest.kt | 28 +- .../soywiz/korge/view/ViewsOpenglJvmTest.kt | 15 +- .../korge/view/ViewsRetinaFilterTest.kt | 28 +- .../soywiz/korge/view/fast/FSpritesJvmTest.kt | 10 +- .../korge/view/fast/MultiTextureFastRender.kt | 10 +- .../view/tiles/TileMapViewScreenshotTest.kt | 6 +- .../korge/render/BatchBuilderBatch2.log | 1 - .../korge/render/BatchBuilderSimpleBatch.log | 1 - .../korge/render/BlurFilterEmptyContainer.log | 4 - ...edContainerInFlippedContainerInTexture.log | 8 - .../render/ExternalTextureSampler.frag.log | 51 - .../resources/korge/render/FSprites1.log | 3 - .../resources/korge/render/FSprites2.log | 3 - .../resources/korge/render/FSprites3.log | 3 - .../resources/korge/render/FSprites4.log | 3 - .../resources/korge/render/GpuShapeView.log | 2719 ----------------- .../korge/render/GpuShapeViewFilter.log | 0 .../resources/korge/render/Graphics.log | 5 - .../jvmTest/resources/korge/render/OpenGL.log | 154 - .../korge/render/OpenGLShapeView.log | 158 - .../korge/render/ParticleEmitter.log | 30 - .../resources/korge/render/TileMapTest.log | 6 - .../korge/render/ViewFilterRetina.log | 28 - .../resources/korge/render/ViewsJvmTest1.log | 3 - .../korge/render/ViewsJvmTestFilter.log | 9 - ...glFilterIdentityDefaultFrameBufferSize.log | 186 -- ...vmTestOpenglRenderToTextureWithStencil.log | 314 -- .../korge/view/ref/TransitionTest.log | 7 - .../simple_0.png | Bin 0 -> 943 bytes .../testPercent_0.png | Bin 0 -> 961 bytes .../testPercent_1.png | Bin 0 -> 965 bytes .../test1_initial1.png | Bin 578 -> 362 bytes .../testBlurFilterInEmptyContainer_blur.png | Bin 0 -> 2579 bytes .../testFSpritesN_N1.png | Bin 0 -> 466 bytes .../testFSpritesN_N2.png | Bin 0 -> 466 bytes .../testFSpritesN_N3.png | Bin 0 -> 466 bytes .../testFSpritesN_N4.png | Bin 0 -> 466 bytes .../testGpuShapeViewFilter_0.png | Bin 0 -> 4599 bytes .../testGraphics_0.png | Bin 0 -> 1384 bytes .../testOpenglShapeView_0.png | Bin 0 -> 686 bytes .../testOpengl_0.png | Bin 0 -> 405 bytes ...ContainerInFlippedContainerInTexture_0.png | Bin 0 -> 500 bytes .../test_0.png | Bin 0 -> 450 bytes .../test_1.png | Bin 0 -> 290 bytes .../test_2.png | Bin 0 -> 110 bytes .../name_0.png | Bin 0 -> 114 bytes .../testFilter_0.png | Bin 0 -> 116 bytes .../testIdentityFilterFor128x128_0.png | Bin 0 -> 283 bytes .../testRenderToTextureWithStencil_0.png | Bin 0 -> 892 bytes .../test_0.png | Bin 0 -> 162 bytes .../test_0.png | Bin 0 -> 1139 bytes .../test_0.png | Bin 0 -> 323 bytes .../commonMain/kotlin/com/soywiz/korag/AG.kt | 9 + .../kotlin/com/soywiz/korev/Events.kt | 2 + .../kotlin/com/soywiz/korgw/GameWindow.kt | 5 +- .../com/soywiz/kgl/KmlGlContextDefault.kt | 89 +- .../com/soywiz/korgw/osx/MacosGLContext.kt | 4 +- .../com/soywiz/korgw/osx/MacosGameWindow.kt | 53 +- .../com/soywiz/korim/bitmap/Bitmap32.kt | 43 +- .../format/NativeImageFormatProviderJvm.kt | 18 +- .../com/soywiz/korinject/AsyncInjector.kt | 14 +- .../kotlin/com/soywiz/korio/async/AsyncExt.kt | 2 +- 84 files changed, 422 insertions(+), 4110 deletions(-) delete mode 100644 korge/src/jvmTest/kotlin/com/soywiz/korge/render/BatchBuilderTest.kt delete mode 100644 korge/src/jvmTest/resources/korge/render/BatchBuilderBatch2.log delete mode 100644 korge/src/jvmTest/resources/korge/render/BatchBuilderSimpleBatch.log delete mode 100644 korge/src/jvmTest/resources/korge/render/BlurFilterEmptyContainer.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ClippedContainerInFlippedContainerInTexture.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ExternalTextureSampler.frag.log delete mode 100644 korge/src/jvmTest/resources/korge/render/FSprites1.log delete mode 100644 korge/src/jvmTest/resources/korge/render/FSprites2.log delete mode 100644 korge/src/jvmTest/resources/korge/render/FSprites3.log delete mode 100644 korge/src/jvmTest/resources/korge/render/FSprites4.log delete mode 100644 korge/src/jvmTest/resources/korge/render/GpuShapeView.log delete mode 100644 korge/src/jvmTest/resources/korge/render/GpuShapeViewFilter.log delete mode 100644 korge/src/jvmTest/resources/korge/render/Graphics.log delete mode 100644 korge/src/jvmTest/resources/korge/render/OpenGL.log delete mode 100644 korge/src/jvmTest/resources/korge/render/OpenGLShapeView.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ParticleEmitter.log delete mode 100644 korge/src/jvmTest/resources/korge/render/TileMapTest.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ViewFilterRetina.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ViewsJvmTest1.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ViewsJvmTestFilter.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglFilterIdentityDefaultFrameBufferSize.log delete mode 100644 korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglRenderToTextureWithStencil.log delete mode 100644 korge/src/jvmTest/resources/korge/view/ref/TransitionTest.log create mode 100644 korge/testGoldens/com.soywiz.korge.bitmapfont.BitmapFontTest/simple_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.component.length.BindLengthComponentJvmTest/testPercent_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.component.length.BindLengthComponentJvmTest/testPercent_1.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testBlurFilterInEmptyContainer_blur.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N1.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N2.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N3.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N4.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testGpuShapeViewFilter_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testGraphics_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpenglShapeView_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpengl_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ReferenceViewsTest/testClippedContainerInFlippedContainerInTexture_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.TransitionViewTest/test_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.TransitionViewTest/test_1.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.TransitionViewTest/test_2.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/name_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/testFilter_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testIdentityFilterFor128x128_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testRenderToTextureWithStencil_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.ViewsRetinaFilterTest/test_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.fast.FSpritesJvmTest/test_0.png create mode 100644 korge/testGoldens/com.soywiz.korge.view.fast.MultiTextureFastRender/test_0.png diff --git a/buildSrc/src/main/kotlin/com/soywiz/korlibs/root/RootKorlibsPlugin.kt b/buildSrc/src/main/kotlin/com/soywiz/korlibs/root/RootKorlibsPlugin.kt index ab3a9a7611..61ea9a820a 100644 --- a/buildSrc/src/main/kotlin/com/soywiz/korlibs/root/RootKorlibsPlugin.kt +++ b/buildSrc/src/main/kotlin/com/soywiz/korlibs/root/RootKorlibsPlugin.kt @@ -672,6 +672,14 @@ object RootKorlibsPlugin { if (!JvmAddOpens.beforeJava9) jvmArgs(*JvmAddOpens.createAddOpensTypedArray()) if (headlessTests) systemProperty("java.awt.headless", "true") } + val jvmTestInteractive = tasks.createThis("jvmTestInteractive") { + group = "verification" + environment("INTERACTIVE_SCREENSHOT", "true") + testClassesDirs = jvmTest.testClassesDirs + classpath = jvmTest.classpath + bootstrapClasspath = jvmTest.bootstrapClasspath + if (!JvmAddOpens.beforeJava9) jvmArgs(*JvmAddOpens.createAddOpensTypedArray()) + } if (!JvmAddOpens.beforeJava9) jvmTest.jvmArgs(*JvmAddOpens.createAddOpensTypedArray()) if (headlessTests) jvmTest.systemProperty("java.awt.headless", "true") } diff --git a/korge-sandbox/src/commonMain/kotlin/Main.kt b/korge-sandbox/src/commonMain/kotlin/Main.kt index 16225fd492..6c46119e77 100644 --- a/korge-sandbox/src/commonMain/kotlin/Main.kt +++ b/korge-sandbox/src/commonMain/kotlin/Main.kt @@ -1,16 +1,20 @@ import com.soywiz.korge.* +import com.soywiz.korge.particle.* import com.soywiz.korge.scene.* +import com.soywiz.korge.time.* import com.soywiz.korge.ui.* import com.soywiz.korge.view.* import com.soywiz.korim.color.* import com.soywiz.korio.async.* +import com.soywiz.korio.file.std.* import com.soywiz.korio.lang.* import samples.* import samples.asteroids.* import samples.connect4.* import samples.minesweeper.* import samples.pong.* +import kotlin.random.* val DEFAULT_KORGE_BG_COLOR = Colors.DARKCYAN.mix(Colors.BLACK, 0.8) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/Korge.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/Korge.kt index 099ae297d8..8b5c0a21ab 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/Korge.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/Korge.kt @@ -170,6 +170,7 @@ object Korge { batchMaxQuads: Int = BatchBuilder2D.DEFAULT_BATCH_QUADS, multithreaded: Boolean? = null, forceRenderEveryFrame: Boolean = true, + stageBuilder: (Views) -> Stage = { Stage(it) }, entry: suspend Stage.() -> Unit ) { RegisteredImageFormats.register(imageFormats) @@ -218,7 +219,8 @@ object Korge { gameWindow = gameWindow, gameId = gameId, settingsFolder = settingsFolder, - batchMaxQuads = batchMaxQuads + batchMaxQuads = batchMaxQuads, + stageBuilder = stageBuilder ).also { it.init() } @@ -526,6 +528,7 @@ object Korge { val firstRenderDeferred = CompletableDeferred() fun renderBlock(event: RenderEvent) { + //println("renderBlock: $event") try { views.frameUpdateAndRender( fixedSizeStep = fixedSizeStep, @@ -549,10 +552,9 @@ object Korge { } views.gameWindow.onRenderEvent { event -> - //println("RenderEvent: $it") + //println("RenderEvent: $event") if (!event.render) { renderBlock(event) - } else { views.renderContext.doRender { if (!renderShown) { diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/KorgeHeadless.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/KorgeHeadless.kt index 3c99193de5..4bfbf655c7 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/KorgeHeadless.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/KorgeHeadless.kt @@ -11,18 +11,43 @@ import com.soywiz.korim.color.* import com.soywiz.korim.format.* import com.soywiz.korinject.* import com.soywiz.korma.geom.* +import kotlinx.coroutines.* object KorgeHeadless { + class HeadlessGameWindowCoroutineDispatcher(val gameWindow: HeadlessGameWindow) : GameWindowCoroutineDispatcher() { + //init { + // frameRenderLoop() + //} +// + //fun frameRenderLoop() { + // this.invokeOnTimeout(16L, Runnable { + // //println("frameRenderLoop") + // gameWindow.frameRender() + // frameRenderLoop() + // }, gameWindow.coroutineDispatcher) + //} + + override fun executePending(availableTime: TimeSpan) { + //println("HeadlessGameWindowCoroutineDispatcher.executePending: timedTasks=${_timedTasks.size}, tasks=${_tasks.size}") + super.executePending(availableTime) + } + } + class HeadlessGameWindow( override val width: Int = 640, override val height: Int = 480, val draw: Boolean = false, override val ag: AG = AGDummy(width, height), - exitProcessOnClose: Boolean = false + exitProcessOnClose: Boolean = false, + override val devicePixelRatio: Double = 1.0, ) : GameWindow() { init { this.exitProcessOnClose = exitProcessOnClose } + + override val coroutineDispatcher: GameWindowCoroutineDispatcher = HeadlessGameWindowCoroutineDispatcher(this) + + //override val ag: AG = if (draw) AGSoftware(width, height) else DummyAG(width, height) //override val ag: AG = AGDummy(width, height) } @@ -54,17 +79,19 @@ object KorgeHeadless { debugAg: Boolean = false, draw: Boolean = false, ag: AG = AGDummy(width, height), - entry: suspend Stage.() -> Unit + devicePixelRatio: Double = 1.0, + stageBuilder: (Views) -> Stage = { Stage(it) }, + entry: suspend Stage.() -> Unit, ): HeadlessGameWindow { - val gameWindow = HeadlessGameWindow(width, height, draw = draw, ag = ag) + val gameWindow = HeadlessGameWindow(width, height, draw = draw, ag = ag, devicePixelRatio = devicePixelRatio) gameWindow.exitProcessOnClose = false Korge( title, width, height, virtualWidth, virtualHeight, icon, iconPath, /*iconDrawable,*/ imageFormats, quality, targetFps, scaleAnchor, scaleMode, clipBorders, bgcolor, debug, debugFontExtraScale, debugFontColor, fullscreen, args, gameWindow, timeProvider, injector, - blocking = blocking, debugAg = debugAg, entry = { + blocking = blocking, debugAg = debugAg, stageBuilder = stageBuilder, entry = { entry() - } + }, forceRenderEveryFrame = true ) return gameWindow } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/render/BatchBuilder2D.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/render/BatchBuilder2D.kt index 341487a344..f614ac775c 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/render/BatchBuilder2D.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/render/BatchBuilder2D.kt @@ -875,10 +875,13 @@ class BatchBuilder2D constructor( private val batches = fastArrayListOf() private var lastIndexPos = 0 + var batchCount = 0 + var fullBatchCount = 0 fun createBatchIfRequired() { if (lastIndexPos == indexPos) return updateStandardUniforms() + batchCount++ //println("BATCH: currentBuffers.vertexData=${currentBuffers.vertexData}") batches += AGBatch( @@ -930,6 +933,7 @@ class BatchBuilder2D constructor( ag.draw(AGMultiBatch(batches.toList())) batches.clear() beforeFlush(this) + fullBatchCount++ buffersListToReturn += currentBuffers currentBuffers = buffersList.alloc() diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/scene/DebugBitmapFont.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/scene/DebugBitmapFont.kt index 0c3988e11b..5a0f9f6222 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/scene/DebugBitmapFont.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/scene/DebugBitmapFont.kt @@ -4,8 +4,7 @@ import com.soywiz.kds.IntMap import com.soywiz.kds.toIntMap import com.soywiz.korim.bitmap.* import com.soywiz.korim.font.BitmapFont -import com.soywiz.korim.format.PNG -import com.soywiz.korim.format.readBitmap +import com.soywiz.korim.format.* import com.soywiz.korio.stream.openAsync import com.soywiz.krypto.encoding.fromBase64 import kotlin.native.concurrent.ThreadLocal @@ -41,7 +40,10 @@ fun debugBmpFont(tex: BmpSlice): BitmapFont { }.toIntMap(), IntMap()) } -suspend fun debugBmpFont(): BitmapFont = debugBmpFont(DEBUG_FONT_BYTES.openAsync().readBitmap().slice()) +suspend fun debugBmpFont(): BitmapFont { + //debugBmpFontSync + return debugBmpFont(DEBUG_FONT_BYTES.openAsync().readBitmap(ImageDecodingProps(preferKotlinDecoder = true)).slice()) +} @Deprecated("Use debugBmpFont() instead") val debugBmpFontSync: BitmapFont get() { diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Stage.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Stage.kt index 355b92c778..62b87aa89b 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Stage.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Stage.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.* * Singleton root [View] and [Container] that contains a reference to the [Views] singleton and doesn't have any parent. */ @RootViewDslMarker -class Stage(override val views: Views) : FixedSizeContainer() +open class Stage internal constructor(override val views: Views) : FixedSizeContainer() , View.Reference , CoroutineScope by views , EventDispatcher by EventDispatcher.Mixin() diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Views.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Views.kt index 6664f7b191..171f318343 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Views.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Views.kt @@ -56,6 +56,7 @@ class Views constructor( val settingsFolder: String? = null, val batchMaxQuads: Int = BatchBuilder2D.DEFAULT_BATCH_QUADS, val bp: BoundsProvider = BoundsProvider.Base(), + val stageBuilder: (Views) -> Stage = { Stage(it) } ) : Extra by Extra.Mixin(), EventDispatcher by EventDispatcher.Mixin(), @@ -198,7 +199,7 @@ class Views constructor( private val resizedEvent = ReshapeEvent(0, 0) /** Reference to the root node [Stage] */ - val stage: Stage = Stage(this) + val stage: Stage = stageBuilder(this) /** Reference to the root node [Stage] (alias) */ val root = stage @@ -531,7 +532,7 @@ class ViewsLog constructor( suspend fun init() { if (!initialized) { initialized = true - RegisteredImageFormats.register(PNG) // This might be required for Node.JS debug bitmap font in tests + RegisteredImageFormats.register(QOI, PNG) // This might be required for Node.JS debug bitmap font in tests views.init() } } diff --git a/korge/src/commonTest/kotlin/com/soywiz/korge/KorgeHeadlessTest.kt b/korge/src/commonTest/kotlin/com/soywiz/korge/KorgeHeadlessTest.kt index f76f6cc9f3..b94cf1127a 100644 --- a/korge/src/commonTest/kotlin/com/soywiz/korge/KorgeHeadlessTest.kt +++ b/korge/src/commonTest/kotlin/com/soywiz/korge/KorgeHeadlessTest.kt @@ -32,7 +32,7 @@ class KorgeHeadlessTest { } while (true) { - println("STEP") + //println("STEP") image.tween(image::rotation[minDegrees], time = 0.5.seconds, easing = Easing.EASE_IN_OUT) image.tween(image::rotation[maxDegrees], time = 0.5.seconds, easing = Easing.EASE_IN_OUT) views.gameWindow.close() // We close the window, finalizing the test here diff --git a/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/BitmapAsserter.kt b/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/BitmapAsserter.kt index cafd37b752..2652673f14 100644 --- a/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/BitmapAsserter.kt +++ b/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/BitmapAsserter.kt @@ -1,5 +1,6 @@ package com.soywiz.korge.testing +import com.soywiz.kds.* import com.soywiz.korge.view.* import com.soywiz.korim.awt.* import com.soywiz.korim.bitmap.* @@ -9,23 +10,31 @@ import com.soywiz.korio.file.std.* import com.soywiz.korio.lang.* import java.awt.* import java.io.* +import java.nio.file.Files import javax.swing.* import kotlin.math.* object BitmapComparer { data class CompareResult( - val pixelDiffCount: Int = 0, - val pixelTotalDistance: Int = 0, - val pixelMaxDistance: Int = 0, + val pixelDiffCount: Int = -1, + val pixelTotalDistance: Int = -1, + val pixelMaxDistance: Int = -1, val psnr: Double = 0.0, + val error: String = "" ) { - val strictEquals: Boolean get() = pixelDiffCount == 0 - val reasonablySimilar: Boolean get() = pixelMaxDistance <= 3 || psnr >= 45.0 + //val strictEquals: Boolean get() = pixelDiffCount == 0 + //val reasonablySimilar: Boolean get() = pixelMaxDistance <= 3 || psnr >= 45.0 } fun compare(left: Bitmap, right: Bitmap): CompareResult { - if (left.premultiplied != right.premultiplied) error("premultiplied left=${left.premultiplied}, right=${right.premultiplied}") - if (left.width != right.width || left.height != right.height) error("dimensions left=${left.width}x${left.height}, right=${right.width}x${right.height}") + if (left.premultiplied != right.premultiplied) { + return CompareResult(error = "premultiplied left=${left.premultiplied}, right=${right.premultiplied}") + } + if (left.width != right.width || left.height != right.height) { + return CompareResult( + error = "dimensions left=${left.width}x${left.height}, right=${right.width}x${right.height}" + ) + } var pixelDiffCount = 0 var pixelTotalDistance = 0 var pixelMaxDistance = 0 @@ -51,28 +60,9 @@ object BitmapComparer { } } -private fun showBitmapDiffDialog(referenceBitmap: Bitmap32, actualBitmap: Bitmap32, title: String): Boolean? { +private fun showBitmapDiffDialog(referenceBitmap: Bitmap32, actualBitmap: Bitmap32, title: String): Boolean { var doAccept: Boolean? = null - val diff = Bitmap32.diff(actualBitmap, referenceBitmap) - var maxR = 0 - var maxG = 0 - var maxB = 0 - - diff.forEach { n, x, y -> - val c = diff[x, y] - maxR = max(maxR, c.r) - maxG = max(maxG, c.g) - maxB = max(maxB, c.b) - } - diff.forEach { n, x, y -> - val c = diff[x, y] - diff[x, y] = RGBA.float( - if (maxR == 0) 0f else c.rf / maxR.toFloat(), - if (maxG == 0) 0f else c.gf / maxG.toFloat(), - if (maxB == 0) 0f else c.bf / maxB.toFloat(), - 1f - ) - } + val diff = Bitmap32.diffEx(actualBitmap, referenceBitmap) val frame = JFrame() lateinit var accept: JButton lateinit var discard: JButton @@ -94,41 +84,63 @@ private fun showBitmapDiffDialog(referenceBitmap: Bitmap32, actualBitmap: Bitmap frame.toFront() frame.repaint() while (frame.isVisible) Thread.sleep(100L) - return doAccept + return doAccept ?: false } -suspend fun Stage.assertScreenshot(view: View, name: String, psnr: Double = 50.0, scale: Double = 1.0, posterize: Int = 0) { +private var OffscreenStage.testIndex: Int by extraProperty { 0 } + +suspend fun OffscreenStage.assertScreenshot( + view: View = this, + name: String = "$testIndex", + psnr: Double = 50.0, + //scale: Double = 1.0, + posterize: Int = 0, + includeBackground: Boolean = true +) { + testIndex++ val updateTestRef = Environment["UPDATE_TEST_REF"] == "true" - val context = injector.getOrNull() ?: OffscreenContext() + val interactive = Environment["INTERACTIVE_SCREENSHOT"] == "true" + val context = injector.getSyncOrNull() ?: OffscreenContext() val outFile = File("testGoldens/${context.testClassName}/${context.testMethodName}_$name.png") - val actualBitmap = view.renderToBitmap(views).depremultiplied().posterizeInplace(posterize) - var doAccept: Boolean? = null - var updateReference = true + val actualBitmap = views.ag.startEndFrame { view.unsafeRenderToBitmapSync(views.renderContext, bgcolor = if (includeBackground) views.clearColor else Colors.TRANSPARENT).depremultiplied().posterizeInplace(posterize) } + var doAccept: Boolean? = false + var updateReference = updateTestRef if (outFile.exists()) { - val referenceBitmap = outFile.toVfs().readNativeImage(ImageDecodingProps.DEFAULT_STRAIGHT).toBMP32().posterizeInplace(posterize) - val ref = referenceBitmap.scaleLinear(scale, scale) - val act = actualBitmap.scaleLinear(scale) - val result = BitmapComparer.compare(ref, act) + val referenceBitmap = runBlockingNoJs { outFile.toVfs().readNativeImage(ImageDecodingProps.DEFAULT_STRAIGHT).toBMP32().posterizeInplace(posterize) } + //val ref = referenceBitmap.scaleLinear(scale, scale) + //val act = actualBitmap.scaleLinear(scale) + val result = BitmapComparer.compare(referenceBitmap, actualBitmap) if (!updateTestRef) { val similar = result.psnr >= psnr - if (!similar) { - //if (true) { - if (Environment["INTERACTIVE_SCREENSHOT"] == "true") { - //if (true) { - doAccept = showBitmapDiffDialog(referenceBitmap, actualBitmap, "Bitmaps are not equal $referenceBitmap-$actualBitmap\n$result") - - } - } - if (doAccept != null) { - assert(similar) { "Bitmaps are not equal $ref-$act : $result.\nRun ./gradlew jvmTestFix to update goldens\nOr set INTERACTIVE_SCREENSHOT=true" } + if (!similar && interactive) { + updateReference = showBitmapDiffDialog(referenceBitmap, actualBitmap, "Bitmaps are not equal $referenceBitmap-$actualBitmap\n$result\n${result.error}") } - - if (doAccept == true) { - updateReference = false + if (!updateReference) { + val baseName = "${context.testClassName}_${context.testMethodName}_$name.png" + val tempFile = File(Environment.tempPath, baseName) + val tempDiffFile = File(Environment.tempPath, "diff_$baseName") + if (!similar) { + tempFile.writeBytes(PNG.encode(actualBitmap.tryToExactBitmap8() ?: actualBitmap, ImageEncodingProps(quality = 1.0))) + tempDiffFile.writeBytes(PNG.encode(Bitmap32.diffEx(actualBitmap, referenceBitmap), ImageEncodingProps(quality = 1.0))) + } + assert(similar) { + "Bitmaps are not equal $referenceBitmap-$actualBitmap : $result.\n" + + "${result.error}\n" + + "Run ./gradlew jvmTestFix to update goldens\n" + + "Or set INTERACTIVE_SCREENSHOT=true\n" + + "\n" + + "Generated: ${tempFile.absoluteFile}\n" + + "Diff: ${tempDiffFile.absoluteFile}\n" + + "Expected Directory: ${outFile.parentFile.absoluteFile}\n" + + "Expected File: ${outFile.absoluteFile}" + } } } } if (updateReference) { + outFile.parentFile.mkdirs() outFile.writeBytes(PNG.encode(actualBitmap.tryToExactBitmap8() ?: actualBitmap, ImageEncodingProps(quality = 1.0))) + println("Folder ${outFile.parentFile.absoluteFile}") + println("Updated ${outFile.absoluteFile}") } } diff --git a/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/KorgeOffscreenTest.kt b/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/KorgeOffscreenTest.kt index cb88af5411..3c4e31a7cc 100644 --- a/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/KorgeOffscreenTest.kt +++ b/korge/src/jvmMain/kotlin/com/soywiz/korge/testing/KorgeOffscreenTest.kt @@ -3,7 +3,6 @@ package com.soywiz.korge.testing import com.soywiz.kgl.* import com.soywiz.korag.* import com.soywiz.korge.* -import com.soywiz.korge.internal.* import com.soywiz.korge.view.* import com.soywiz.korgw.awt.* import com.soywiz.korim.color.* @@ -28,11 +27,14 @@ class OffscreenContext(val testClassName: String, val testMethodName: String) { } } -inline fun korgeOffscreenTest( - width: Int = DefaultViewport.WIDTH, height: Int = DefaultViewport.HEIGHT, +class OffscreenStage(views: Views, val offscreenContext: OffscreenContext) : Stage(views) + +inline fun korgeScreenshotTest( + width: Int = 512, height: Int = 512, virtualWidth: Int = width, virtualHeight: Int = height, bgcolor: RGBA? = Colors.BLACK, - noinline callback: suspend Stage.() -> Unit + devicePixelRatio: Double = 1.0, + noinline callback: suspend OffscreenStage.() -> Unit ) { val offscreenContext = OffscreenContext() @@ -43,10 +45,16 @@ inline fun korgeOffscreenTest( var exception: Throwable? = null suspendTestWithOffscreenAG { ag -> - KorgeHeadless(width = width, height = height, virtualWidth = virtualWidth, virtualHeight = virtualHeight, bgcolor = bgcolor, ag = ag) { + val korge = KorgeHeadless( + width = width, height = height, + virtualWidth = virtualWidth, virtualHeight = virtualHeight, + bgcolor = bgcolor, + ag = ag, devicePixelRatio = devicePixelRatio, + stageBuilder = { OffscreenStage(it, offscreenContext) } + ) { injector.mapInstance(offscreenContext) try { - callback() + callback(this as OffscreenStage) } catch (e: Throwable) { exception = e } finally { diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/KorgeHeadlessJvmTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/KorgeHeadlessJvmTest.kt index ce30e494a7..cd81e8a3a1 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/KorgeHeadlessJvmTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/KorgeHeadlessJvmTest.kt @@ -17,7 +17,7 @@ class KorgeHeadlessJvmTest { if (Environment["DISABLE_HEADLESS_TEST"] == "true") return var wasCalled = false logger.info { "1" } - korgeOffscreenTest(width = 256, height = 256, bgcolor = Colors["#2b2b2b"]) { + korgeScreenshotTest(width = 256, height = 256, bgcolor = Colors["#2b2b2b"]) { val image = solidRect(100, 100, Colors.RED) { rotation = 16.degrees anchor(.5, .5) diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/bitmapfont/BitmapFontTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/bitmapfont/BitmapFontTest.kt index 81141c2ff1..a6c7a3271a 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/bitmapfont/BitmapFontTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/bitmapfont/BitmapFontTest.kt @@ -1,26 +1,15 @@ package com.soywiz.korge.bitmapfont -import com.soywiz.korag.log.* -import com.soywiz.korge.render.* -import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* +import com.soywiz.korge.view.* import com.soywiz.korim.font.* import com.soywiz.korio.async.* import com.soywiz.korio.file.std.* -import kotlin.coroutines.* import kotlin.test.* class BitmapFontTest { - val ag = object : AGLog() { - override fun log(str: String, kind: Kind) { - if (kind != Kind.SHADER) { - super.log(str, kind) - } - } - } - val ctx = RenderContext(ag, coroutineContext = EmptyCoroutineContext) - @Test - fun simple() = suspendTest { + fun simple() = korgeScreenshotTest(64, 20) { val font = resourcesVfs["font/font.fnt"].readBitmapFont() assertEquals(81, font.glyphs.size) val glyph = font[64] @@ -30,10 +19,12 @@ class BitmapFontTest { assertEquals(4, glyph.yoffset) assertEquals(73, glyph.xadvance) - font.drawText(ctx, 72.0 / 4.0, "ABF,", 0, 0) - ctx.flush() + renderableView(viewRenderer = ViewRenderer { + font.drawText(ctx, 72.0 / 4.0, "ABF,", 0, 0) + ctx.flush() + }) - assertEqualsFileReference("korge/bitmapfont/BitmapFontSimple.log", ag.getLogAsString()) + assertScreenshot() } @Test diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/component/length/BindLengthComponentJvmTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/component/length/BindLengthComponentJvmTest.kt index 5a263e860b..ddd8f71bbb 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/component/length/BindLengthComponentJvmTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/component/length/BindLengthComponentJvmTest.kt @@ -1,21 +1,24 @@ package com.soywiz.korge.component.length -import com.soywiz.korge.test.* -import com.soywiz.korge.tests.* +import com.soywiz.korge.testing.* +import com.soywiz.korge.time.* import com.soywiz.korge.view.* +import com.soywiz.korim.color.* import kotlin.test.* -class BindLengthComponentJvmTest : ViewsForTesting(log = true) { +class BindLengthComponentJvmTest { @Test - fun testPercent() = viewsTest { + fun testPercent() = korgeScreenshotTest(512, 512) { val container = fixedSizeContainer(300.0, 500.0) + container.solidRect(container.width, container.height, Colors.BLUE) val rect = container.solidRect(100, 100) rect.bindLength(View::x) { 50.percent } rect.bindLength(View::y) { 50.percent } assertEquals(0.0, rect.x) assertEquals(0.0, rect.y) + assertScreenshot() delayFrame() - assertEqualsFileReference("korge/bindlength/BindLengthComponentJvmTest.log", logAg!!.getLogAsString()) + assertScreenshot() assertEquals(150.0, rect.x) assertEquals(250.0, rect.y) } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/particles/ParticleEmitterViewTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/particles/ParticleEmitterViewTest.kt index 23ae0b59c9..8e21a7ffaf 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/particles/ParticleEmitterViewTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/particles/ParticleEmitterViewTest.kt @@ -4,6 +4,7 @@ import com.soywiz.klock.* import com.soywiz.korag.log.* import com.soywiz.korge.particle.* import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* import com.soywiz.korge.view.* import com.soywiz.korio.async.* @@ -74,27 +75,19 @@ class ParticleEmitterViewTest : ViewsForTesting(log = true) { assertEquals(0, viewsLog.gameWindow.updatedSinceFrame) } - @Test - fun test() = viewsTest { - val emitter = particleEmitter(particleEmitter, random = Random(0L) - ) { - xy(100, 100) - } - - for (n in 0 until 20) { - delayFrame() - emitter.xy(120 + n * 5, 100) - } - - logAg.log.clear() - delayFrame() - - assertEqualsFileReference( - "korge/render/ParticleEmitter.log", - listOf( - emitter.simulator.particles.toString(), - logAg.getLogAsString(), - ).joinToString("\n") + "\n" - ) - } + //@Test + //fun test() = korgeOffscreenTest(512, 512) { + // val emitter = particleEmitter(particleEmitter, random = Random(0L) + // ) { + // xy(100, 100) + // } + // emitter.updateSingleView(1.seconds) + // assertScreenshot(this, "particles", includeBackground = true) + // /* + // for (n in 0 until 20) { + // delayFrame() + // emitter.xy(120 + n * 5, 100) + // } + // */ + //} } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/render/BatchBuilderTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/render/BatchBuilderTest.kt deleted file mode 100644 index 4474014994..0000000000 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/render/BatchBuilderTest.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.soywiz.korge.render - -import com.soywiz.korag.* -import com.soywiz.korag.log.* -import com.soywiz.korge.test.* -import kotlin.test.* - -class BatchBuilderTest { - val ag = AGLog(16, 16) - val bb = BatchBuilder2D(RenderContext(ag)) - - @Test - fun simpleBatch() { - val tex = Texture(AGTexture(), 100, 100) - bb.drawQuad(tex, 0f, 0f, premultiplied = tex.premultiplied, wrap = false) - bb.flush() - - assertEqualsFileReference("korge/render/BatchBuilderSimpleBatch.log", ag.getLogAsString()) - } - - @Test - fun batch2() { - val tex = Texture(AGTexture(), 100, 100) - bb.drawQuad(tex, 0f, 0f, premultiplied = tex.premultiplied, wrap = false) - bb.drawQuad(tex, 100f, 0f, premultiplied = tex.premultiplied, wrap = false) - bb.flush() - - assertEqualsFileReference("korge/render/BatchBuilderBatch2.log", ag.getLogAsString()) - } -} diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/test/TtfFontTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/test/TtfFontTest.kt index 11e0aa63d8..50ccbf31b5 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/test/TtfFontTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/test/TtfFontTest.kt @@ -8,7 +8,7 @@ import org.junit.* class TtfFontTest { @Test - fun disableLigaturesWorks(): Unit = korgeOffscreenTest { + fun disableLigaturesWorks(): Unit = korgeScreenshotTest { val ttfFontWithLigatures = resourcesVfs["font_atkinson/AtkinsonHyperlegible-Bold.ttf"].readTtfFont() val ttfFontWithoutLigatures = @@ -22,6 +22,6 @@ class TtfFontTest { } } - assertScreenshot(c, "text", posterize = 5) + assertScreenshot(c, "text", posterize = 5, includeBackground = false) } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/testing/KorgeScreenshotTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/testing/KorgeScreenshotTest.kt index 02efe31a3c..c41b23b1d9 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/testing/KorgeScreenshotTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/testing/KorgeScreenshotTest.kt @@ -7,7 +7,7 @@ import org.junit.* class KorgeScreenshotTest { @Test - fun test1() = korgeOffscreenTest( + fun test1() = korgeScreenshotTest( width = 512, height = 512, bgcolor = Colors.RED ) { @@ -29,7 +29,7 @@ class KorgeScreenshotTest { position(350, 350) } - assertScreenshot(rect2, "initial2") + assertScreenshot(rect2, "initial2", includeBackground = false) val rect3 = solidRect(150, 150, Colors.GREEN) { rotation = maxDegrees @@ -38,7 +38,7 @@ class KorgeScreenshotTest { position(100, 350) } - assertScreenshot(this, "initial3") + assertScreenshot(this, "initial3", includeBackground = false) //val rectContainer = container { // val a = 100 diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceGraphicsTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceGraphicsTest.kt index f9eccd1079..4e51dfa382 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceGraphicsTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceGraphicsTest.kt @@ -1,14 +1,12 @@ package com.soywiz.korge.view -import com.soywiz.korag.log.AGBaseLog import com.soywiz.korge.annotations.* -import com.soywiz.korge.test.assertEqualsFileReference -import com.soywiz.korge.tests.ViewsForTesting +import com.soywiz.korge.testing.* import com.soywiz.korge.view.fast.* import com.soywiz.korge.view.filter.* import com.soywiz.korge.view.vector.* import com.soywiz.korim.bitmap.* -import com.soywiz.korim.color.Colors +import com.soywiz.korim.color.* import com.soywiz.korim.format.* import com.soywiz.korim.paint.* import com.soywiz.korim.vector.* @@ -17,22 +15,9 @@ import com.soywiz.korma.geom.* import com.soywiz.korma.geom.vector.* import kotlin.test.* -class ReferenceGraphicsTest : ViewsForTesting( - windowSize = SizeInt(200, 200), - virtualSize = SizeInt(100, 100), - log = true, -) { - //override fun filterLogDraw(str: String, kind: LogBaseAG.Kind): Boolean = kind == LogBaseAG.Kind.DRAW || kind == LogBaseAG.Kind.SHADER - //override fun filterLogDraw(str: String, kind: LogBaseAG.Kind): Boolean = kind != LogBaseAG.Kind.DRAW_DETAILS - override fun filterLogDraw(str: String, kind: AGBaseLog.Kind): Boolean = true - - private suspend fun testFrame() { - logAg.clearLog() - delayFrame() - } - +class ReferenceGraphicsTest { @Test - fun testGraphics() = viewsTest { + fun testGraphics() = korgeScreenshotTest(300, 300) { cpuGraphics { fill(Colors.RED) { rect(-60, -60, 70, 70) @@ -49,15 +34,7 @@ class ReferenceGraphicsTest : ViewsForTesting( ).virtFrame(RectangleInt(64, 64, 196, 196)) val image = image(bmp).anchor(0.5, 1.0).xy(200, 200).rotation(30.degrees) - testFrame() - assertEqualsFileReference( - "korge/render/Graphics.log", - listOf( - logAg.getLogAsString(), - image.getGlobalBounds().toString(), - image.getLocalBounds().toString() - ).joinToString("\n") - ) + assertScreenshot(posterize = 6) } @Test @@ -72,7 +49,7 @@ class ReferenceGraphicsTest : ViewsForTesting( @Test fun testFSprites4() = testFSpritesN(4) - fun testFSpritesN(N: Int) = viewsTest { + fun testFSpritesN(N: Int) = korgeScreenshotTest(512, 512) { val bmp = Bitmap32(32, 32, Colors.RED.premultiplied).slice() val sprites = FSprites(16) val anchorsX = listOf(.5f, .5f, .5f, .0f) @@ -94,24 +71,13 @@ class ReferenceGraphicsTest : ViewsForTesting( val fview = FSprites.FView(sprites, Array(N) { bmp.bmpBase }) addChild(fview) - testFrame() - "korge/render/FSprites.log" - "korge/render/FSprites1.log" - "korge/render/FSprites2.log" - "korge/render/FSprites3.log" - "korge/render/FSprites4.log" - assertEqualsFileReference( - "korge/render/FSprites$N.log", - listOf( - logAg.getLogAsString(), - ).joinToString("\n") - ) + assertScreenshot(this, "N$N", includeBackground = true) } @Test @OptIn(KorgeExperimental::class) @Ignore - fun testGpuShapeView() = viewsTest { + fun testGpuShapeView() = korgeScreenshotTest(512, 512) { val korgeBitmap = resourcesVfs["korge.png"].readBitmap() val view = gpuShapeView({ keep { @@ -179,57 +145,24 @@ class ReferenceGraphicsTest : ViewsForTesting( rotation = 180.degrees } - testFrame() - assertEqualsFileReference( - "korge/render/GpuShapeView.log", - listOf( - logAg.getLogAsString(), - view.getGlobalBounds().toString(), - view.getLocalBounds().toString() - ).joinToString("\n") - ) + assertScreenshot(posterize = 6) } @Test - fun testGpuShapeViewFilter() = viewsTest { + fun testGpuShapeViewFilter() = korgeScreenshotTest(400, 400) { container { scale = 1.2 circle(100.0).xy(100, 100).filters(DropshadowFilter()) } - logAg.logFilter = { str, kind -> - when (kind) { - AGBaseLog.Kind.SHADER, AGBaseLog.Kind.DRAW_DETAILS -> false - AGBaseLog.Kind.UNIFORM, AGBaseLog.Kind.UNIFORM_VALUES -> true - //else -> true - else -> false - } - } - - testFrame() - - //println(logAg.getLogAsString()) - - assertEqualsFileReference( - "korge/render/GpuShapeViewFilter.log", - listOf( - logAg.getLogAsString(), - ).joinToString("\n") - ) + assertScreenshot() } @Test - fun testBlurFilterInEmptyContainer() = viewsTest { - val view = container { + //@Ignore + fun testBlurFilterInEmptyContainer() = korgeScreenshotTest(512, 512) { + val view = solidRect(100, 100) { filter = BlurFilter(4.0) } - testFrame() - assertEqualsFileReference( - "korge/render/BlurFilterEmptyContainer.log", - listOf( - logAg.getLogAsString(), - view.getGlobalBounds(includeFilters = true).toString(), - view.getLocalBoundsOptimized(includeFilters = true).toString() - ).joinToString("\n") - ) + assertScreenshot(this, "blur", includeBackground = true) } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceOpenglTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceOpenglTest.kt index 7320798cbc..30f6ce2dce 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceOpenglTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceOpenglTest.kt @@ -1,10 +1,6 @@ package com.soywiz.korge.view -import com.soywiz.kgl.* -import com.soywiz.korag.* -import com.soywiz.korag.gl.* -import com.soywiz.korge.test.* -import com.soywiz.korge.tests.* +import com.soywiz.korge.testing.* import com.soywiz.korge.view.vector.* import com.soywiz.korim.bitmap.* import com.soywiz.korim.color.* @@ -13,20 +9,15 @@ import com.soywiz.korio.file.std.* import com.soywiz.korma.geom.vector.* import org.junit.* -class ReferenceOpenglTest : ViewsForTesting() { - val gl = KmlGlProxyLogToString() - override fun createAg(): AG = AGOpengl(gl) - +class ReferenceOpenglTest { @Test - fun testOpengl() = viewsTest { + fun testOpengl() = korgeScreenshotTest(100, 100) { image(resourcesVfs["texture.png"].readBitmap().mipmaps()) - gl.clearLog() - render(views.renderContext) - assertEqualsFileReference("korge/render/OpenGL.log", gl.getLogAsString()) + assertScreenshot(posterize = 6) } @Test - fun testOpenglShapeView() = viewsTest { + fun testOpenglShapeView() = korgeScreenshotTest(500, 500) { container { xy(300, 300) val shape = gpuShapeView({ @@ -46,8 +37,6 @@ class ReferenceOpenglTest : ViewsForTesting() { xy(-150, -150) } } - gl.clearLog() - render(views.renderContext) - assertEqualsFileReference("korge/render/OpenGLShapeView.log", gl.getLogAsString()) + assertScreenshot() } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceViewsTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceViewsTest.kt index 0a6e2f6c42..e0c394780c 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceViewsTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ReferenceViewsTest.kt @@ -1,33 +1,20 @@ package com.soywiz.korge.view -import com.soywiz.korge.test.* -import com.soywiz.korge.tests.* -import com.soywiz.korma.geom.* +import com.soywiz.korge.testing.* +import com.soywiz.korim.bitmap.* +import com.soywiz.korim.color.* import org.junit.* -class ReferenceViewsTest : ViewsForTesting( - windowSize = SizeInt(200, 200), - virtualSize = SizeInt(100, 100), - log = true, -) { +class ReferenceViewsTest { @Test - fun testClippedContainerInFlippedContainerInTexture() = viewsTest { - val container = Container().apply { + fun testClippedContainerInFlippedContainerInTexture() = korgeScreenshotTest(512, 512) { + container { y = views.virtualHeightDouble; scaleY = -1.0 clipContainer(150, 100) { xy(75, 50) - solidRect(300, 400) + image(Bitmap32(300, 400) { x, y -> if (y <= 25) Colors.BLUE else Colors.RED }.premultiplied()) } } - addChild(container) - delayFrame() - logAg.log.add("---------") - container.unsafeRenderToBitmapSync(views.renderContext) - assertEqualsFileReference( - "korge/render/ClippedContainerInFlippedContainerInTexture.log", - listOf( - logAg.getLogAsString(), - ).joinToString("\n") - ) + assertScreenshot() } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/TransitionViewTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/TransitionViewTest.kt index 45f278201a..91734993d7 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/TransitionViewTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/TransitionViewTest.kt @@ -1,29 +1,29 @@ package com.soywiz.korge.view import com.soywiz.korge.scene.* -import com.soywiz.korge.test.* -import com.soywiz.korge.tests.* +import com.soywiz.korge.testing.* import com.soywiz.korge.view.filter.* import com.soywiz.korim.color.* -import com.soywiz.korma.geom.* import kotlin.test.* -class TransitionViewTest : ViewsForTesting(log = true, windowSize = SizeInt(800, 600), virtualSize = SizeInt(512, 512)) { +class TransitionViewTest { @Test - fun test() = viewsTest { + fun test() = korgeScreenshotTest(50, 50) { val tv = TransitionView() tv.startNewTransition(DummyView()) tv.startNewTransition(Container().apply { - clipContainer(512, 512) { - solidRect(512, 512, Colors.BLUE) + clipContainer(50, 50) { + solidRect(50, 50, Colors.BLUE) } }, MaskTransition(TransitionFilter.Transition.CIRCULAR)) tv.ratio = 0.5 addChild(tv) - delayFrame() - - assertEqualsFileReference("korge/view/ref/TransitionTest.log", logAg.getLogAsString()) + assertScreenshot(posterize = 5) + tv.ratio = 0.9 + assertScreenshot(posterize = 5) + tv.ratio = 1.0 + assertScreenshot(posterize = 5) } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsJvmTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsJvmTest.kt index 076611805f..2aaaeffff8 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsJvmTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsJvmTest.kt @@ -1,6 +1,6 @@ package com.soywiz.korge.view -import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* import com.soywiz.korge.view.filter.* import com.soywiz.korim.bitmap.* @@ -13,11 +13,11 @@ import com.soywiz.korma.geom.* import kotlin.test.* class ViewsJvmTest : ViewsForTesting(log = true) { - val tex = Bitmap32(10, 10, premultiplied = true) + val tex = Bitmap32(10, 10, Colors.GREEN.premultiplied) @Test - fun name() { - views.stage += Container().apply { + fun name() = korgeScreenshotTest(20, 20) { + this += Container().apply { this += Image(tex) } assertEquals( @@ -28,8 +28,7 @@ class ViewsJvmTest : ViewsForTesting(log = true) { """.trimIndent(), views.stage.dumpToString() ) - views.render() - assertEqualsFileReference("korge/render/ViewsJvmTest1.log", logAg.getLogAsString()) + assertScreenshot() } @Test @@ -45,23 +44,22 @@ class ViewsJvmTest : ViewsForTesting(log = true) { } @Test - fun testFilter() { - views.stage += Container().apply { + fun testFilter() = korgeScreenshotTest(20, 20) { + this += Container().apply { this += Image(tex).also { it.addFilter(ColorMatrixFilter(ColorMatrixFilter.GRAYSCALE_MATRIX)) it.addFilter(Convolute3Filter(Convolute3Filter.KERNEL_EDGE_DETECTION)) - } + }.xy(4, 4) } assertEquals( """ - Stage - Container - Image:bitmap=RectSlice(null:Rectangle(x=0, y=0, width=10, height=10)) - """.trimIndent(), + Stage + Container + Image:pos=(4,4):bitmap=RectSlice(null:Rectangle(x=0, y=0, width=10, height=10)) + """.trimIndent(), views.stage.dumpToString() ) - views.render() - assertEqualsFileReference("korge/render/ViewsJvmTestFilter.log", logAg.getLogAsString()) + assertScreenshot() } @Test diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsOpenglJvmTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsOpenglJvmTest.kt index 4bb76364cd..0fe58d0aee 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsOpenglJvmTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsOpenglJvmTest.kt @@ -5,6 +5,7 @@ import com.soywiz.korag.* import com.soywiz.korag.gl.* import com.soywiz.korge.render.* import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* import com.soywiz.korge.view.filter.* import com.soywiz.korim.bitmap.* @@ -23,17 +24,16 @@ class ViewsOpenglJvmTest : ViewsForTesting(log = true) { // This checks that the texture is generated with the default size (dirty=true fix) @Test - fun testIdentityFilterFor128x128() { - views.stage += Image(NativeImage(AGFrameBuffer.DEFAULT_INITIAL_WIDTH, AGFrameBuffer.DEFAULT_INITIAL_HEIGHT)).also { + fun testIdentityFilterFor128x128() = korgeScreenshotTest(200, 200) { + views.stage += Image(Bitmap32(102, 102, Colors.RED.premultiplied)).also { it.filter = IdentityFilter } - views.render() - assertEqualsFileReference("korge/render/ViewsJvmTestOpenglFilterIdentityDefaultFrameBufferSize.log", logGl.getLogAsString()) + assertScreenshot() } @Test - fun testRenderToTextureWithStencil() { - views.stage += object : View() { + fun testRenderToTextureWithStencil() = korgeScreenshotTest(512, 512) { + this += object : View() { override fun renderInternal(ctx: RenderContext) { ctx.renderToTexture(100, 100, render = { ctx.useCtx2d { ctx2d -> @@ -55,8 +55,7 @@ class ViewsOpenglJvmTest : ViewsForTesting(log = true) { } } } - views.render() - assertEqualsFileReference("korge/render/ViewsJvmTestOpenglRenderToTextureWithStencil.log", logGl.getLogAsString()) + assertScreenshot() } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsRetinaFilterTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsRetinaFilterTest.kt index c23ece1a11..5d977f0f9d 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsRetinaFilterTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/ViewsRetinaFilterTest.kt @@ -1,38 +1,26 @@ package com.soywiz.korge.view -import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* import com.soywiz.korge.view.filter.* import com.soywiz.korim.bitmap.* import com.soywiz.korim.color.* import kotlin.test.* -class ViewsRetinaFilterTest : ViewsForTesting( - defaultDevicePixelRatio = 2.0, - log = true, -) { +class ViewsRetinaFilterTest { @Test - fun test() = viewsTest { - stage.scale = 2.0 // @TODO: Should this be like that already by being defaultDevicePixelRatio = 2.0 - assertEquals(2.0, stage.scale, absoluteTolerance = 0.01) - //println("stage.scale=${stage.scale}") - //stage.scale = 2.0 + fun test() = korgeScreenshotTest( + 100, 100, + devicePixelRatio = 2.0, + ) { val container = container { - image(Bitmap32(512, 512, Colors.RED.premultiplied)) + image(Bitmap32(50, 50, Colors.RED.premultiplied)) //solidRect(512, 512, Colors.RED) .filters( SwizzleColorsFilter("rrra"), ColorMatrixFilter(ColorMatrixFilter.GRAYSCALE_MATRIX), ) } - delayFrame() - container.renderToBitmap(views) - logAg.getLogAsString() - assertEqualsFileReference( - "korge/render/ViewFilterRetina.log", - listOf( - logAg.getLogAsString(), - ).joinToString("\n") - ) + assertScreenshot() } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/FSpritesJvmTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/FSpritesJvmTest.kt index 8e47b3da98..64d1a713f8 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/FSpritesJvmTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/FSpritesJvmTest.kt @@ -1,22 +1,21 @@ package com.soywiz.korge.view.fast -import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* -import com.soywiz.korge.view.* import com.soywiz.korim.bitmap.* import com.soywiz.korma.geom.* import kotlin.test.* class FSpritesJvmTest : ViewsForTesting(log = true) { @Test - fun test() = viewsTest { + fun test() = korgeScreenshotTest(512, 512) { val sprites = FSprites(64) val view = sprites.createView(Bitmaps.white.bmpBase) addChild(view) sprites.apply { for (n in 0 until 10) { alloc().also { - it.xy(n + 1f, n + 2f) + it.xy(n * 20f + 1f, n * 20f + 2f) it.scale(n + 3f, n + 4f) it.setAnchor(.5f, .5f) it.angle = (n * 30).degrees @@ -24,7 +23,6 @@ class FSpritesJvmTest : ViewsForTesting(log = true) { } } } - delayFrame() - assertEqualsFileReference("korge/fsprites/FSprites.log", logAg.getLogAsString()) + assertScreenshot(this, includeBackground = true) } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/MultiTextureFastRender.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/MultiTextureFastRender.kt index 7164a69e89..67b69e2bf4 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/MultiTextureFastRender.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/fast/MultiTextureFastRender.kt @@ -1,16 +1,19 @@ package com.soywiz.korge.view.fast import com.soywiz.korge.test.* +import com.soywiz.korge.testing.* import com.soywiz.korge.tests.* import com.soywiz.korge.view.* import com.soywiz.korim.bitmap.* import com.soywiz.korim.color.* import org.junit.* +import org.junit.Test +import kotlin.test.* class MultiTextureFastRender : ViewsForTesting(log = true) { @Test @Suppress("UNUSED_CHANGED_VALUE") - fun test() = viewsTest { + fun test() = korgeScreenshotTest(180, 180) { val tex0 = Bitmap32(16, 16) { x, y -> Colors.RED }.premultipliedIfRequired() val tex1 = Bitmap32(16, 16) { x, y -> Colors.GREEN }.premultipliedIfRequired() val tex2 = Bitmap32(16, 16) { x, y -> Colors.BLUE }.premultipliedIfRequired() @@ -27,7 +30,8 @@ class MultiTextureFastRender : ViewsForTesting(log = true) { image(tex3).xy(16 * n, 16 * n); n++ image(tex4).xy(16 * n, 16 * n); n++ image(tex4).xy(16 * n, 16 * n); n++ - delayFrame() - assertEqualsFileReference("korge/fast/MultiTextureRendering.log", logAg.getLogAsString()) + val batch = views.renderContext.batch + assertScreenshot() + assertEquals("2/1", "${batch.batchCount}/${batch.fullBatchCount}") } } diff --git a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/tiles/TileMapViewScreenshotTest.kt b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/tiles/TileMapViewScreenshotTest.kt index 8b2be138e4..aade1b6e0d 100644 --- a/korge/src/jvmTest/kotlin/com/soywiz/korge/view/tiles/TileMapViewScreenshotTest.kt +++ b/korge/src/jvmTest/kotlin/com/soywiz/korge/view/tiles/TileMapViewScreenshotTest.kt @@ -10,7 +10,7 @@ import kotlin.test.* class TileMapViewScreenshotTest { @Test - fun testTilemapScreenshotTest() = korgeOffscreenTest( + fun testTilemapScreenshotTest() = korgeScreenshotTest( width = 512, height = 512, bgcolor = Colors.RED ) { @@ -22,11 +22,11 @@ class TileMapViewScreenshotTest { val tilemap = tileMap(IntArray2(2, 2, intArrayOf(0, 1, 1, 0)), repeatX = TileMapRepeat.REPEAT, repeatY = TileMapRepeat.REPEAT, tileset = tileset) tilemap.xy(3000, 1500) - assertScreenshot(this, "offsetInfiniteTilemap") + assertScreenshot(this, "offsetInfiniteTilemap", includeBackground = false) tilemap.xy(-3011, -1513) - assertScreenshot(this, "offsetInfiniteTilemap2") + assertScreenshot(this, "offsetInfiniteTilemap2", includeBackground = false) } } diff --git a/korge/src/jvmTest/resources/korge/render/BatchBuilderBatch2.log b/korge/src/jvmTest/resources/korge/render/BatchBuilderBatch2.log deleted file mode 100644 index bd4e971d72..0000000000 --- a/korge/src/jvmTest/resources/korge/render/BatchBuilderBatch2.log +++ /dev/null @@ -1 +0,0 @@ -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=16, height=16, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(192)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(8)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(8))]), indices=AGBuffer(24), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.125, 0, 0, 0, 0, -0.125, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=0,0,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=12, instances=1) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/BatchBuilderSimpleBatch.log b/korge/src/jvmTest/resources/korge/render/BatchBuilderSimpleBatch.log deleted file mode 100644 index 9281bbddcf..0000000000 --- a/korge/src/jvmTest/resources/korge/render/BatchBuilderSimpleBatch.log +++ /dev/null @@ -1 +0,0 @@ -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=16, height=16, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.125, 0, 0, 0, 0, -0.125, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=0,0,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/BlurFilterEmptyContainer.log b/korge/src/jvmTest/resources/korge/render/BlurFilterEmptyContainer.log deleted file mode 100644 index 6444ce0108..0000000000 --- a/korge/src/jvmTest/resources/korge/render/BlurFilterEmptyContainer.log +++ /dev/null @@ -1,4 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -finish() -Rectangle(x=-15, y=-14, width=30, height=28) -Rectangle(x=-15, y=-14, width=30, height=28) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ClippedContainerInFlippedContainerInTexture.log b/korge/src/jvmTest/resources/korge/render/ClippedContainerInFlippedContainerInTexture.log deleted file mode 100644 index 570840bf14..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ClippedContainerInFlippedContainerInTexture.log +++ /dev/null @@ -1,8 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -finish() -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=1,1,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=150, y=0, width=50, height=100), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() ---------- -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=150, height=100, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=150, height=100, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.013333334, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -75, 50, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=1,1,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=150, height=100), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ExternalTextureSampler.frag.log b/korge/src/jvmTest/resources/korge/render/ExternalTextureSampler.frag.log deleted file mode 100644 index e0ea9e376a..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ExternalTextureSampler.frag.log +++ /dev/null @@ -1,51 +0,0 @@ -#version 100 compatibility -#extension GL_OES_EGL_image_external : require -#ifdef GL_ES - precision highp float; - precision highp int; - precision lowp sampler2D; - precision lowp samplerCube; -#else - #define highp - #define mediump - #define lowp -#endif -uniform samplerExternalOES u_Tex0; -uniform samplerExternalOES u_Tex1; -uniform samplerExternalOES u_Tex2; -uniform samplerExternalOES u_Tex3; -varying lowp float v_Wrap; -varying mediump vec2 v_Tex; -varying lowp float v_TexIndex; -varying vec4 v_Col2; -varying vec4 v_Col; -void main() { - vec4 temp0; - if ((v_Wrap != 0.0)) { - temp0.xy = fract(v_Tex.xy); - } - else { - temp0.xy = v_Tex.xy; - } - if ((v_TexIndex <= 1.0)) { - if ((v_TexIndex == 0.0)) { - gl_FragColor = texture2D(u_Tex0, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex1, temp0.xy); - } - } - else { - if ((v_TexIndex == 2.0)) { - gl_FragColor = texture2D(u_Tex2, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex3, temp0.xy); - } - } - temp0 = ((v_Col2 - vec4(0.5)) * 2.0); - gl_FragColor = ((gl_FragColor * v_Col) + temp0); - if ((gl_FragColor.a <= 0.0)) { - discard; - } -} diff --git a/korge/src/jvmTest/resources/korge/render/FSprites1.log b/korge/src/jvmTest/resources/korge/render/FSprites1.log deleted file mode 100644 index acaaedb3e0..0000000000 --- a/korge/src/jvmTest/resources/korge/render/FSprites1.log +++ /dev/null @@ -1,3 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_xy], buffer=AGBuffer(32)), AGVertexData(layout=VertexLayout[a_rxy, a_scale, a_rangle, a_axy, a_uv0, a_uv1], buffer=AGBuffer(128)), AGVertexData(layout=VertexLayout[a_colMul], buffer=AGBuffer(16)), AGVertexData(layout=VertexLayout[a_texId], buffer=AGBuffer(4))]), indices=null, indexType=USHORT, program=Program(name=FSprites1, attributes=[a_uv1, a_uv0, a_colMul, a_texId, a_xy, a_rangle, a_scale, a_axy, a_rxy], uniforms=[u_texSize0, u_ProjMat, u_ViewMat, u_Tex0]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], u_texSize0=AGUniformValue[Uniform(u_texSize0)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize1=AGUniformValue[Uniform(u_texSize1)][AGValue[Float2]([[0, 0]])], u_texSize2=AGUniformValue[Uniform(u_texSize2)][AGValue[Float2]([[0, 0]])], u_texSize3=AGUniformValue[Uniform(u_texSize3)][AGValue[Float2]([[0, 0]])], u_texSize4=AGUniformValue[Uniform(u_texSize4)][AGValue[Float2]([[0, 0]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLE_FAN, drawOffset=0, vertexCount=4, instances=4) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/FSprites2.log b/korge/src/jvmTest/resources/korge/render/FSprites2.log deleted file mode 100644 index 2c31be95c0..0000000000 --- a/korge/src/jvmTest/resources/korge/render/FSprites2.log +++ /dev/null @@ -1,3 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_xy], buffer=AGBuffer(32)), AGVertexData(layout=VertexLayout[a_rxy, a_scale, a_rangle, a_axy, a_uv0, a_uv1], buffer=AGBuffer(128)), AGVertexData(layout=VertexLayout[a_colMul], buffer=AGBuffer(16)), AGVertexData(layout=VertexLayout[a_texId], buffer=AGBuffer(4))]), indices=null, indexType=USHORT, program=Program(name=FSprites2, attributes=[a_uv1, a_uv0, a_colMul, a_texId, a_xy, a_rangle, a_scale, a_axy, a_rxy], uniforms=[u_texSize0, u_texSize1, u_ProjMat, u_ViewMat, u_Tex0, u_Tex1]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], u_texSize0=AGUniformValue[Uniform(u_texSize0)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize1=AGUniformValue[Uniform(u_texSize1)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize2=AGUniformValue[Uniform(u_texSize2)][AGValue[Float2]([[0, 0]])], u_texSize3=AGUniformValue[Uniform(u_texSize3)][AGValue[Float2]([[0, 0]])], u_texSize4=AGUniformValue[Uniform(u_texSize4)][AGValue[Float2]([[0, 0]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLE_FAN, drawOffset=0, vertexCount=4, instances=4) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/FSprites3.log b/korge/src/jvmTest/resources/korge/render/FSprites3.log deleted file mode 100644 index fca007281c..0000000000 --- a/korge/src/jvmTest/resources/korge/render/FSprites3.log +++ /dev/null @@ -1,3 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_xy], buffer=AGBuffer(32)), AGVertexData(layout=VertexLayout[a_rxy, a_scale, a_rangle, a_axy, a_uv0, a_uv1], buffer=AGBuffer(128)), AGVertexData(layout=VertexLayout[a_colMul], buffer=AGBuffer(16)), AGVertexData(layout=VertexLayout[a_texId], buffer=AGBuffer(4))]), indices=null, indexType=USHORT, program=Program(name=FSprites3, attributes=[a_uv1, a_uv0, a_colMul, a_texId, a_xy, a_rangle, a_scale, a_axy, a_rxy], uniforms=[u_texSize0, u_texSize1, u_texSize2, u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], u_texSize0=AGUniformValue[Uniform(u_texSize0)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize1=AGUniformValue[Uniform(u_texSize1)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize2=AGUniformValue[Uniform(u_texSize2)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize3=AGUniformValue[Uniform(u_texSize3)][AGValue[Float2]([[0, 0]])], u_texSize4=AGUniformValue[Uniform(u_texSize4)][AGValue[Float2]([[0, 0]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLE_FAN, drawOffset=0, vertexCount=4, instances=4) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/FSprites4.log b/korge/src/jvmTest/resources/korge/render/FSprites4.log deleted file mode 100644 index c37762fc24..0000000000 --- a/korge/src/jvmTest/resources/korge/render/FSprites4.log +++ /dev/null @@ -1,3 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_xy], buffer=AGBuffer(32)), AGVertexData(layout=VertexLayout[a_rxy, a_scale, a_rangle, a_axy, a_uv0, a_uv1], buffer=AGBuffer(128)), AGVertexData(layout=VertexLayout[a_colMul], buffer=AGBuffer(16)), AGVertexData(layout=VertexLayout[a_texId], buffer=AGBuffer(4))]), indices=null, indexType=USHORT, program=Program(name=FSprites4, attributes=[a_uv1, a_uv0, a_colMul, a_texId, a_xy, a_rangle, a_scale, a_axy, a_rxy], uniforms=[u_texSize0, u_texSize1, u_texSize2, u_texSize3, u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1],AGTexture(size=32,32,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_texSize0=AGUniformValue[Uniform(u_texSize0)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize1=AGUniformValue[Uniform(u_texSize1)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize2=AGUniformValue[Uniform(u_texSize2)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize3=AGUniformValue[Uniform(u_texSize3)][AGValue[Float2]([[0.03125, 0.03125]])], u_texSize4=AGUniformValue[Uniform(u_texSize4)][AGValue[Float2]([[0, 0]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLE_FAN, drawOffset=0, vertexCount=4, instances=4) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/GpuShapeView.log b/korge/src/jvmTest/resources/korge/render/GpuShapeView.log deleted file mode 100644 index d655b347ef..0000000000 --- a/korge/src/jvmTest/resources/korge/render/GpuShapeView.log +++ /dev/null @@ -1,2719 +0,0 @@ -RenderBuffer[0].set() -clear(#00000000, 1.0, 0, true, true, true) -createTexture():1 -createRenderBuffer():1 -Texture[1].uploadedBitmap(200, 200) -RenderBuffer[1].setSize(200, 200) -RenderBuffer[1].set() -clear(#00000000, 1.0, 0, true, true, true) -createBuffer():5 -programCreate: 1, Program(name=GpuShapeViewPrograms.Combined, attributes=[a_Pos, a_Dist, a_MaxDist], uniforms=[u_ProjMat, u_ViewMat, u_ProgramType, u_Color, u_Tex, u_Transform, u_Gradientp0, u_Gradientp1, u_ColorMul, u_GlobalAlpha, u_GlobalPixelScale, u_OutputPre]), ProgramConfig(externalTextureSampler=false) -programCreate.fragment:#version 100 compatibility -#ifdef GL_ES - precision highp float; - precision highp int; - precision lowp sampler2D; - precision lowp samplerCube; -#else - #define highp - #define mediump - #define lowp -#endif -uniform float u_ProgramType; -uniform vec4 u_Color; -uniform sampler2D u_Tex; -uniform mat4 u_Transform; -uniform vec3 u_Gradientp0; -uniform vec3 u_Gradientp1; -uniform vec4 u_ColorMul; -uniform float u_GlobalAlpha; -uniform float u_GlobalPixelScale; -uniform bool u_OutputPre; -varying mediump float v_Dist; -varying mediump float v_MaxDist; -varying mediump vec2 v_Tex; -void main() { - vec2 temp3; - vec4 temp0; - vec4 temp1; - vec2 temp4; - if ((u_ProgramType == 5.0)) { - gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - return; - } - if ((abs(v_Dist) > v_MaxDist)) { - discard; - } - if ((u_ProgramType == 0.0)) { - gl_FragColor = u_Color; - } - else { - if ((u_ProgramType == 1.0)) { - gl_FragColor = texture2D(u_Tex, fract(vec2((u_Transform * vec4(v_Tex, 0.0, 1.0)).xy))); - } - else { - if ((u_ProgramType == 2.0)) { - gl_FragColor = texture2D(u_Tex, (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy); - } - else { - if ((u_ProgramType == 3.0)) { - temp3.xy = (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy; - temp0.y = ((2.0 * u_Gradientp0.z) * u_Gradientp1.z); - temp0.z = pow(u_Gradientp0.z, 2.0); - temp0.w = pow(u_Gradientp1.z, 2.0); - temp1.y = (u_Gradientp0.x - u_Gradientp1.x); - temp1.x = (u_Gradientp0.y - u_Gradientp1.y); - temp1.z = (u_Gradientp0.z - u_Gradientp1.z); - temp1.w = (1.0 / ((pow((u_Gradientp0.z - u_Gradientp1.z), 2.0) - pow((u_Gradientp0.x - u_Gradientp1.x), 2.0)) - pow((u_Gradientp0.y - u_Gradientp1.y), 2.0))); - temp0.x = (1.0 - ((((((-(u_Gradientp1.z)) * temp1.z) + (temp1.y * (u_Gradientp1.x - temp3.x))) + (temp1.x * (u_Gradientp1.y - temp3.y))) - sqrt(((((temp0.w * (pow((u_Gradientp0.x - temp3.x), 2.0) + pow((u_Gradientp0.y - temp3.y), 2.0))) - (temp0.y * (((u_Gradientp0.x - temp3.x) * (u_Gradientp1.x - temp3.x)) + ((u_Gradientp0.y - temp3.y) * (u_Gradientp1.y - temp3.y))))) + (temp0.z * (pow((u_Gradientp1.x - temp3.x), 2.0) + pow((u_Gradientp1.y - temp3.y), 2.0)))) - pow(((((((u_Gradientp1.x * u_Gradientp0.y) - (temp3.x * u_Gradientp0.y)) - (u_Gradientp0.x * u_Gradientp1.y)) + (temp3.x * u_Gradientp1.y)) + (u_Gradientp0.x * temp3.y)) - (u_Gradientp1.x * temp3.y)), 2.0)))) * temp1.w)); - gl_FragColor = texture2D(u_Tex, vec2(temp0.x, 0.0)); - } - else { - temp4.xy = (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy; - temp0.y = atan((temp4.y - u_Gradientp0.y), (temp4.x - u_Gradientp0.x)); - if ((temp0.y < 0.0)) { - temp0.y = (temp0.y + 6.2831855); - } - temp0.x = (temp0.y / 6.2831855); - gl_FragColor = texture2D(u_Tex, fract(vec2(temp0.x, 0.0))); - } - } - } - } - gl_FragColor = (((gl_FragColor * u_ColorMul) * u_GlobalAlpha) * (1.0 - smoothstep(((v_MaxDist * u_GlobalPixelScale) - 1.5), (v_MaxDist * u_GlobalPixelScale), abs((v_Dist * u_GlobalPixelScale))))); - if ((!(u_OutputPre))) { - gl_FragColor.rgb = (gl_FragColor.rgb / gl_FragColor.a); - } -} - -programCreate.vertex:#version 100 compatibility -#ifdef GL_ES - precision highp float; - precision highp int; - precision lowp sampler2D; - precision lowp samplerCube; -#else - #define highp - #define mediump - #define lowp -#endif -attribute highp vec2 a_Pos; -attribute mediump float a_Dist; -attribute mediump float a_MaxDist; -uniform mat4 u_ProjMat; -uniform mat4 u_ViewMat; -varying mediump vec2 v_Tex; -varying mediump float v_Dist; -varying mediump float v_MaxDist; -void main() { - gl_Position = ((u_ProjMat * u_ViewMat) * vec4(a_Pos, 0.0, 1.0)); - v_Tex = a_Pos; - v_Dist = a_Dist; - v_MaxDist = a_MaxDist; -} - -programUse: 1 -Buffer[5].afterSetMem(mem[21760]) -createTexture():2 -Texture[2].uploadedBitmap(512, 512) -createTexture():3 -Texture[3].uploadedBitmap(256, 1) -createTexture():4 -Texture[4].uploadedBitmap(256, 1) -createTexture():5 -Texture[5].uploadedBitmap(256, 1) -vaoUse: AGVertexArrayObject(list=[AGVertexData(_buffer=Buffer[5], layout=VertexLayout[a_Pos, a_Dist, a_MaxDist])]) -uboSet: -uboSet.uniform: Uniform(u_ProjMat) = AGValue[TFLOAT]([[0.01, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]]) -uboSet.uniform: Uniform(u_ViewMat) = AGValue[TFLOAT]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]]) -uboSet.uniform: Uniform(u_Tex0) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_Tex1) = AGValue[TINT]([[1]]) -uboSet.uniform: Uniform(u_Tex2) = AGValue[TINT]([[2]]) -uboSet.uniform: Uniform(u_Tex3) = AGValue[TINT]([[3]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -uboSet.uniform: Uniform(u_ColorMul) = AGValue[TFLOAT]([[1, 1, 1, 1]]) -createStencil: 0 -stencilMask: 255 -clear: color=false, depth=false, stencil=true -disable: SCISSOR -enable: SCISSOR -scissor: -788, -1188, 536, 536 -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, INCREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: FRONT -draw: TRIANGLE_FAN, offset=0, count=7, instances=1, indexType=null -::draw.indices: [0, 1, 2, 3, 4, 5, 6] -::draw.attributes[0]: [] -::draw.vertex[0]: -::draw.vertex[1]: -::draw.vertex[2]: -::draw.vertex[3]: -::draw.vertex[4]: -::draw.vertex[5]: -::draw.vertex[6]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, DECREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: BACK -draw: TRIANGLE_FAN, offset=0, count=7, instances=1, indexType=null -::draw.indices: [0, 1, 2, 3, 4, 5, 6] -::draw.attributes[0]: [] -::draw.vertex[0]: -::draw.vertex[1]: -::draw.vertex[2]: -::draw.vertex[3]: -::draw.vertex[4]: -::draw.vertex[5]: -::draw.vertex[6]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, INCREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: FRONT -draw: TRIANGLE_FAN, offset=7, count=7, instances=1, indexType=null -::draw.indices: [7, 8, 9, 10, 11, 12, 13] -::draw.attributes[0]: [] -::draw.vertex[7]: -::draw.vertex[8]: -::draw.vertex[9]: -::draw.vertex[10]: -::draw.vertex[11]: -::draw.vertex[12]: -::draw.vertex[13]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, DECREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: BACK -draw: TRIANGLE_FAN, offset=7, count=7, instances=1, indexType=null -::draw.indices: [7, 8, 9, 10, 11, 12, 13] -::draw.attributes[0]: [] -::draw.vertex[7]: -::draw.vertex[8]: -::draw.vertex[9]: -::draw.vertex[10]: -::draw.vertex[11]: -::draw.vertex[12]: -::draw.vertex[13]: -disable: SCISSOR -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: EQUAL, 0, 255 -stencilOperation: KEEP, KEEP, KEEP -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=14, count=10, instances=1, indexType=null -::draw.indices: [14, 15, 16, 17, 18, 19, 20, 21, 22, 23] -::draw.attributes[0]: [] -::draw.vertex[14]: -::draw.vertex[15]: -::draw.vertex[16]: -::draw.vertex[17]: -::draw.vertex[18]: -::draw.vertex[19]: -::draw.vertex[20]: -::draw.vertex[21]: -::draw.vertex[22]: -::draw.vertex[23]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: EQUAL, 0, 255 -stencilOperation: KEEP, KEEP, KEEP -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=24, count=10, instances=1, indexType=null -::draw.indices: [24, 25, 26, 27, 28, 29, 30, 31, 32, 33] -::draw.attributes[0]: [] -::draw.vertex[24]: -::draw.vertex[25]: -::draw.vertex[26]: -::draw.vertex[27]: -::draw.vertex[28]: -::draw.vertex[29]: -::draw.vertex[30]: -::draw.vertex[31]: -::draw.vertex[32]: -::draw.vertex[33]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: NOT_EQUAL, 0, 255 -stencilOperation: KEEP, KEEP, KEEP -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_FAN, offset=34, count=4, instances=1, indexType=null -::draw.indices: [34, 35, 36, 37] -::draw.attributes[0]: [] -::draw.vertex[34]: -::draw.vertex[35]: -::draw.vertex[36]: -::draw.vertex[37]: -createStencil: 0 -stencilMask: 255 -clear: color=false, depth=false, stencil=true -disable: SCISSOR -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -disable: STENCIL -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=38, count=558, instances=1, indexType=null -::draw.indices: [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595] -::draw.attributes[0]: [] -::draw.vertex[38]: -::draw.vertex[39]: -::draw.vertex[40]: -::draw.vertex[41]: -::draw.vertex[42]: -::draw.vertex[43]: -::draw.vertex[44]: -::draw.vertex[45]: -::draw.vertex[46]: -::draw.vertex[47]: -::draw.vertex[48]: -::draw.vertex[49]: -::draw.vertex[50]: -::draw.vertex[51]: -::draw.vertex[52]: -::draw.vertex[53]: -::draw.vertex[54]: -::draw.vertex[55]: -::draw.vertex[56]: -::draw.vertex[57]: -::draw.vertex[58]: -::draw.vertex[59]: -::draw.vertex[60]: -::draw.vertex[61]: -::draw.vertex[62]: -::draw.vertex[63]: -::draw.vertex[64]: -::draw.vertex[65]: -::draw.vertex[66]: -::draw.vertex[67]: -::draw.vertex[68]: -::draw.vertex[69]: -::draw.vertex[70]: -::draw.vertex[71]: -::draw.vertex[72]: -::draw.vertex[73]: -::draw.vertex[74]: -::draw.vertex[75]: -::draw.vertex[76]: -::draw.vertex[77]: -::draw.vertex[78]: -::draw.vertex[79]: -::draw.vertex[80]: -::draw.vertex[81]: -::draw.vertex[82]: -::draw.vertex[83]: -::draw.vertex[84]: -::draw.vertex[85]: -::draw.vertex[86]: -::draw.vertex[87]: -::draw.vertex[88]: -::draw.vertex[89]: -::draw.vertex[90]: -::draw.vertex[91]: -::draw.vertex[92]: -::draw.vertex[93]: -::draw.vertex[94]: -::draw.vertex[95]: -::draw.vertex[96]: -::draw.vertex[97]: -::draw.vertex[98]: -::draw.vertex[99]: -::draw.vertex[100]: -::draw.vertex[101]: -::draw.vertex[102]: -::draw.vertex[103]: -::draw.vertex[104]: -::draw.vertex[105]: -::draw.vertex[106]: -::draw.vertex[107]: -::draw.vertex[108]: -::draw.vertex[109]: -::draw.vertex[110]: -::draw.vertex[111]: -::draw.vertex[112]: -::draw.vertex[113]: -::draw.vertex[114]: -::draw.vertex[115]: -::draw.vertex[116]: -::draw.vertex[117]: -::draw.vertex[118]: -::draw.vertex[119]: -::draw.vertex[120]: -::draw.vertex[121]: -::draw.vertex[122]: -::draw.vertex[123]: -::draw.vertex[124]: -::draw.vertex[125]: -::draw.vertex[126]: -::draw.vertex[127]: -::draw.vertex[128]: -::draw.vertex[129]: -::draw.vertex[130]: -::draw.vertex[131]: -::draw.vertex[132]: -::draw.vertex[133]: -::draw.vertex[134]: -::draw.vertex[135]: -::draw.vertex[136]: -::draw.vertex[137]: -::draw.vertex[138]: -::draw.vertex[139]: -::draw.vertex[140]: -::draw.vertex[141]: -::draw.vertex[142]: -::draw.vertex[143]: -::draw.vertex[144]: -::draw.vertex[145]: -::draw.vertex[146]: -::draw.vertex[147]: -::draw.vertex[148]: -::draw.vertex[149]: -::draw.vertex[150]: -::draw.vertex[151]: -::draw.vertex[152]: -::draw.vertex[153]: -::draw.vertex[154]: -::draw.vertex[155]: -::draw.vertex[156]: -::draw.vertex[157]: -::draw.vertex[158]: -::draw.vertex[159]: -::draw.vertex[160]: -::draw.vertex[161]: -::draw.vertex[162]: -::draw.vertex[163]: -::draw.vertex[164]: -::draw.vertex[165]: -::draw.vertex[166]: -::draw.vertex[167]: -::draw.vertex[168]: -::draw.vertex[169]: -::draw.vertex[170]: -::draw.vertex[171]: -::draw.vertex[172]: -::draw.vertex[173]: -::draw.vertex[174]: -::draw.vertex[175]: -::draw.vertex[176]: -::draw.vertex[177]: -::draw.vertex[178]: -::draw.vertex[179]: -::draw.vertex[180]: -::draw.vertex[181]: -::draw.vertex[182]: -::draw.vertex[183]: -::draw.vertex[184]: -::draw.vertex[185]: -::draw.vertex[186]: -::draw.vertex[187]: -::draw.vertex[188]: -::draw.vertex[189]: -::draw.vertex[190]: -::draw.vertex[191]: -::draw.vertex[192]: -::draw.vertex[193]: -::draw.vertex[194]: -::draw.vertex[195]: -::draw.vertex[196]: -::draw.vertex[197]: -::draw.vertex[198]: -::draw.vertex[199]: -::draw.vertex[200]: -::draw.vertex[201]: -::draw.vertex[202]: -::draw.vertex[203]: -::draw.vertex[204]: -::draw.vertex[205]: -::draw.vertex[206]: -::draw.vertex[207]: -::draw.vertex[208]: -::draw.vertex[209]: -::draw.vertex[210]: -::draw.vertex[211]: -::draw.vertex[212]: -::draw.vertex[213]: -::draw.vertex[214]: -::draw.vertex[215]: -::draw.vertex[216]: -::draw.vertex[217]: -::draw.vertex[218]: -::draw.vertex[219]: -::draw.vertex[220]: -::draw.vertex[221]: -::draw.vertex[222]: -::draw.vertex[223]: -::draw.vertex[224]: -::draw.vertex[225]: -::draw.vertex[226]: -::draw.vertex[227]: -::draw.vertex[228]: -::draw.vertex[229]: -::draw.vertex[230]: -::draw.vertex[231]: -::draw.vertex[232]: -::draw.vertex[233]: -::draw.vertex[234]: -::draw.vertex[235]: -::draw.vertex[236]: -::draw.vertex[237]: -::draw.vertex[238]: -::draw.vertex[239]: -::draw.vertex[240]: -::draw.vertex[241]: -::draw.vertex[242]: -::draw.vertex[243]: -::draw.vertex[244]: -::draw.vertex[245]: -::draw.vertex[246]: -::draw.vertex[247]: -::draw.vertex[248]: -::draw.vertex[249]: -::draw.vertex[250]: -::draw.vertex[251]: -::draw.vertex[252]: -::draw.vertex[253]: -::draw.vertex[254]: -::draw.vertex[255]: -::draw.vertex[256]: -::draw.vertex[257]: -::draw.vertex[258]: -::draw.vertex[259]: -::draw.vertex[260]: -::draw.vertex[261]: -::draw.vertex[262]: -::draw.vertex[263]: -::draw.vertex[264]: -::draw.vertex[265]: -::draw.vertex[266]: -::draw.vertex[267]: -::draw.vertex[268]: -::draw.vertex[269]: -::draw.vertex[270]: -::draw.vertex[271]: -::draw.vertex[272]: -::draw.vertex[273]: -::draw.vertex[274]: -::draw.vertex[275]: -::draw.vertex[276]: -::draw.vertex[277]: -::draw.vertex[278]: -::draw.vertex[279]: -::draw.vertex[280]: -::draw.vertex[281]: -::draw.vertex[282]: -::draw.vertex[283]: -::draw.vertex[284]: -::draw.vertex[285]: -::draw.vertex[286]: -::draw.vertex[287]: -::draw.vertex[288]: -::draw.vertex[289]: -::draw.vertex[290]: -::draw.vertex[291]: -::draw.vertex[292]: -::draw.vertex[293]: -::draw.vertex[294]: -::draw.vertex[295]: -::draw.vertex[296]: -::draw.vertex[297]: -::draw.vertex[298]: -::draw.vertex[299]: -::draw.vertex[300]: -::draw.vertex[301]: -::draw.vertex[302]: -::draw.vertex[303]: -::draw.vertex[304]: -::draw.vertex[305]: -::draw.vertex[306]: -::draw.vertex[307]: -::draw.vertex[308]: -::draw.vertex[309]: -::draw.vertex[310]: -::draw.vertex[311]: -::draw.vertex[312]: -::draw.vertex[313]: -::draw.vertex[314]: -::draw.vertex[315]: -::draw.vertex[316]: -::draw.vertex[317]: -::draw.vertex[318]: -::draw.vertex[319]: -::draw.vertex[320]: -::draw.vertex[321]: -::draw.vertex[322]: -::draw.vertex[323]: -::draw.vertex[324]: -::draw.vertex[325]: -::draw.vertex[326]: -::draw.vertex[327]: -::draw.vertex[328]: -::draw.vertex[329]: -::draw.vertex[330]: -::draw.vertex[331]: -::draw.vertex[332]: -::draw.vertex[333]: -::draw.vertex[334]: -::draw.vertex[335]: -::draw.vertex[336]: -::draw.vertex[337]: -::draw.vertex[338]: -::draw.vertex[339]: -::draw.vertex[340]: -::draw.vertex[341]: -::draw.vertex[342]: -::draw.vertex[343]: -::draw.vertex[344]: -::draw.vertex[345]: -::draw.vertex[346]: -::draw.vertex[347]: -::draw.vertex[348]: -::draw.vertex[349]: -::draw.vertex[350]: -::draw.vertex[351]: -::draw.vertex[352]: -::draw.vertex[353]: -::draw.vertex[354]: -::draw.vertex[355]: -::draw.vertex[356]: -::draw.vertex[357]: -::draw.vertex[358]: -::draw.vertex[359]: -::draw.vertex[360]: -::draw.vertex[361]: -::draw.vertex[362]: -::draw.vertex[363]: -::draw.vertex[364]: -::draw.vertex[365]: -::draw.vertex[366]: -::draw.vertex[367]: -::draw.vertex[368]: -::draw.vertex[369]: -::draw.vertex[370]: -::draw.vertex[371]: -::draw.vertex[372]: -::draw.vertex[373]: -::draw.vertex[374]: -::draw.vertex[375]: -::draw.vertex[376]: -::draw.vertex[377]: -::draw.vertex[378]: -::draw.vertex[379]: -::draw.vertex[380]: -::draw.vertex[381]: -::draw.vertex[382]: -::draw.vertex[383]: -::draw.vertex[384]: -::draw.vertex[385]: -::draw.vertex[386]: -::draw.vertex[387]: -::draw.vertex[388]: -::draw.vertex[389]: -::draw.vertex[390]: -::draw.vertex[391]: -::draw.vertex[392]: -::draw.vertex[393]: -::draw.vertex[394]: -::draw.vertex[395]: -::draw.vertex[396]: -::draw.vertex[397]: -::draw.vertex[398]: -::draw.vertex[399]: -::draw.vertex[400]: -::draw.vertex[401]: -::draw.vertex[402]: -::draw.vertex[403]: -::draw.vertex[404]: -::draw.vertex[405]: -::draw.vertex[406]: -::draw.vertex[407]: -::draw.vertex[408]: -::draw.vertex[409]: -::draw.vertex[410]: -::draw.vertex[411]: -::draw.vertex[412]: -::draw.vertex[413]: -::draw.vertex[414]: -::draw.vertex[415]: -::draw.vertex[416]: -::draw.vertex[417]: -::draw.vertex[418]: -::draw.vertex[419]: -::draw.vertex[420]: -::draw.vertex[421]: -::draw.vertex[422]: -::draw.vertex[423]: -::draw.vertex[424]: -::draw.vertex[425]: -::draw.vertex[426]: -::draw.vertex[427]: -::draw.vertex[428]: -::draw.vertex[429]: -::draw.vertex[430]: -::draw.vertex[431]: -::draw.vertex[432]: -::draw.vertex[433]: -::draw.vertex[434]: -::draw.vertex[435]: -::draw.vertex[436]: -::draw.vertex[437]: -::draw.vertex[438]: -::draw.vertex[439]: -::draw.vertex[440]: -::draw.vertex[441]: -::draw.vertex[442]: -::draw.vertex[443]: -::draw.vertex[444]: -::draw.vertex[445]: -::draw.vertex[446]: -::draw.vertex[447]: -::draw.vertex[448]: -::draw.vertex[449]: -::draw.vertex[450]: -::draw.vertex[451]: -::draw.vertex[452]: -::draw.vertex[453]: -::draw.vertex[454]: -::draw.vertex[455]: -::draw.vertex[456]: -::draw.vertex[457]: -::draw.vertex[458]: -::draw.vertex[459]: -::draw.vertex[460]: -::draw.vertex[461]: -::draw.vertex[462]: -::draw.vertex[463]: -::draw.vertex[464]: -::draw.vertex[465]: -::draw.vertex[466]: -::draw.vertex[467]: -::draw.vertex[468]: -::draw.vertex[469]: -::draw.vertex[470]: -::draw.vertex[471]: -::draw.vertex[472]: -::draw.vertex[473]: -::draw.vertex[474]: -::draw.vertex[475]: -::draw.vertex[476]: -::draw.vertex[477]: -::draw.vertex[478]: -::draw.vertex[479]: -::draw.vertex[480]: -::draw.vertex[481]: -::draw.vertex[482]: -::draw.vertex[483]: -::draw.vertex[484]: -::draw.vertex[485]: -::draw.vertex[486]: -::draw.vertex[487]: -::draw.vertex[488]: -::draw.vertex[489]: -::draw.vertex[490]: -::draw.vertex[491]: -::draw.vertex[492]: -::draw.vertex[493]: -::draw.vertex[494]: -::draw.vertex[495]: -::draw.vertex[496]: -::draw.vertex[497]: -::draw.vertex[498]: -::draw.vertex[499]: -::draw.vertex[500]: -::draw.vertex[501]: -::draw.vertex[502]: -::draw.vertex[503]: -::draw.vertex[504]: -::draw.vertex[505]: -::draw.vertex[506]: -::draw.vertex[507]: -::draw.vertex[508]: -::draw.vertex[509]: -::draw.vertex[510]: -::draw.vertex[511]: -::draw.vertex[512]: -::draw.vertex[513]: -::draw.vertex[514]: -::draw.vertex[515]: -::draw.vertex[516]: -::draw.vertex[517]: -::draw.vertex[518]: -::draw.vertex[519]: -::draw.vertex[520]: -::draw.vertex[521]: -::draw.vertex[522]: -::draw.vertex[523]: -::draw.vertex[524]: -::draw.vertex[525]: -::draw.vertex[526]: -::draw.vertex[527]: -::draw.vertex[528]: -::draw.vertex[529]: -::draw.vertex[530]: -::draw.vertex[531]: -::draw.vertex[532]: -::draw.vertex[533]: -::draw.vertex[534]: -::draw.vertex[535]: -::draw.vertex[536]: -::draw.vertex[537]: -::draw.vertex[538]: -::draw.vertex[539]: -::draw.vertex[540]: -::draw.vertex[541]: -::draw.vertex[542]: -::draw.vertex[543]: -::draw.vertex[544]: -::draw.vertex[545]: -::draw.vertex[546]: -::draw.vertex[547]: -::draw.vertex[548]: -::draw.vertex[549]: -::draw.vertex[550]: -::draw.vertex[551]: -::draw.vertex[552]: -::draw.vertex[553]: -::draw.vertex[554]: -::draw.vertex[555]: -::draw.vertex[556]: -::draw.vertex[557]: -::draw.vertex[558]: -::draw.vertex[559]: -::draw.vertex[560]: -::draw.vertex[561]: -::draw.vertex[562]: -::draw.vertex[563]: -::draw.vertex[564]: -::draw.vertex[565]: -::draw.vertex[566]: -::draw.vertex[567]: -::draw.vertex[568]: -::draw.vertex[569]: -::draw.vertex[570]: -::draw.vertex[571]: -::draw.vertex[572]: -::draw.vertex[573]: -::draw.vertex[574]: -::draw.vertex[575]: -::draw.vertex[576]: -::draw.vertex[577]: -::draw.vertex[578]: -::draw.vertex[579]: -::draw.vertex[580]: -::draw.vertex[581]: -::draw.vertex[582]: -::draw.vertex[583]: -::draw.vertex[584]: -::draw.vertex[585]: -::draw.vertex[586]: -::draw.vertex[587]: -::draw.vertex[588]: -::draw.vertex[589]: -::draw.vertex[590]: -::draw.vertex[591]: -::draw.vertex[592]: -::draw.vertex[593]: -::draw.vertex[594]: -::draw.vertex[595]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -disable: STENCIL -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=596, count=16, instances=1, indexType=null -::draw.indices: [596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611] -::draw.attributes[0]: [] -::draw.vertex[596]: -::draw.vertex[597]: -::draw.vertex[598]: -::draw.vertex[599]: -::draw.vertex[600]: -::draw.vertex[601]: -::draw.vertex[602]: -::draw.vertex[603]: -::draw.vertex[604]: -::draw.vertex[605]: -::draw.vertex[606]: -::draw.vertex[607]: -::draw.vertex[608]: -::draw.vertex[609]: -::draw.vertex[610]: -::draw.vertex[611]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -disable: STENCIL -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=612, count=12, instances=1, indexType=null -::draw.indices: [612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623] -::draw.attributes[0]: [] -::draw.vertex[612]: -::draw.vertex[613]: -::draw.vertex[614]: -::draw.vertex[615]: -::draw.vertex[616]: -::draw.vertex[617]: -::draw.vertex[618]: -::draw.vertex[619]: -::draw.vertex[620]: -::draw.vertex[621]: -::draw.vertex[622]: -::draw.vertex[623]: -enable: SCISSOR -scissor: -1900, -780, 808, 800 -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, INCREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: FRONT -draw: TRIANGLE_FAN, offset=624, count=7, instances=1, indexType=null -::draw.indices: [624, 625, 626, 627, 628, 629, 630] -::draw.attributes[0]: [] -::draw.vertex[624]: -::draw.vertex[625]: -::draw.vertex[626]: -::draw.vertex[627]: -::draw.vertex[628]: -::draw.vertex[629]: -::draw.vertex[630]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, DECREMENT_WRAP -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: BACK -draw: TRIANGLE_FAN, offset=624, count=7, instances=1, indexType=null -::draw.indices: [624, 625, 626, 627, 628, 629, 630] -::draw.attributes[0]: [] -::draw.vertex[624]: -::draw.vertex[625]: -::draw.vertex[626]: -::draw.vertex[627]: -::draw.vertex[628]: -::draw.vertex[629]: -::draw.vertex[630]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: NOT_EQUAL, 0, 0 -stencilOperation: KEEP, KEEP, INVERT -stencilMask: 255 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: FRONT -draw: TRIANGLE_FAN, offset=631, count=701, instances=1, indexType=null -::draw.indices: [631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331] -::draw.attributes[0]: [] -::draw.vertex[631]: -::draw.vertex[632]: -::draw.vertex[633]: -::draw.vertex[634]: -::draw.vertex[635]: -::draw.vertex[636]: -::draw.vertex[637]: -::draw.vertex[638]: -::draw.vertex[639]: -::draw.vertex[640]: -::draw.vertex[641]: -::draw.vertex[642]: -::draw.vertex[643]: -::draw.vertex[644]: -::draw.vertex[645]: -::draw.vertex[646]: -::draw.vertex[647]: -::draw.vertex[648]: -::draw.vertex[649]: -::draw.vertex[650]: -::draw.vertex[651]: -::draw.vertex[652]: -::draw.vertex[653]: -::draw.vertex[654]: -::draw.vertex[655]: -::draw.vertex[656]: -::draw.vertex[657]: -::draw.vertex[658]: -::draw.vertex[659]: -::draw.vertex[660]: -::draw.vertex[661]: -::draw.vertex[662]: -::draw.vertex[663]: -::draw.vertex[664]: -::draw.vertex[665]: -::draw.vertex[666]: -::draw.vertex[667]: -::draw.vertex[668]: -::draw.vertex[669]: -::draw.vertex[670]: -::draw.vertex[671]: -::draw.vertex[672]: -::draw.vertex[673]: -::draw.vertex[674]: -::draw.vertex[675]: -::draw.vertex[676]: -::draw.vertex[677]: -::draw.vertex[678]: -::draw.vertex[679]: -::draw.vertex[680]: -::draw.vertex[681]: -::draw.vertex[682]: -::draw.vertex[683]: -::draw.vertex[684]: -::draw.vertex[685]: -::draw.vertex[686]: -::draw.vertex[687]: -::draw.vertex[688]: -::draw.vertex[689]: -::draw.vertex[690]: -::draw.vertex[691]: -::draw.vertex[692]: -::draw.vertex[693]: -::draw.vertex[694]: -::draw.vertex[695]: -::draw.vertex[696]: -::draw.vertex[697]: -::draw.vertex[698]: -::draw.vertex[699]: -::draw.vertex[700]: -::draw.vertex[701]: -::draw.vertex[702]: -::draw.vertex[703]: -::draw.vertex[704]: -::draw.vertex[705]: -::draw.vertex[706]: -::draw.vertex[707]: -::draw.vertex[708]: -::draw.vertex[709]: -::draw.vertex[710]: -::draw.vertex[711]: -::draw.vertex[712]: -::draw.vertex[713]: -::draw.vertex[714]: -::draw.vertex[715]: -::draw.vertex[716]: -::draw.vertex[717]: -::draw.vertex[718]: -::draw.vertex[719]: -::draw.vertex[720]: -::draw.vertex[721]: -::draw.vertex[722]: -::draw.vertex[723]: -::draw.vertex[724]: -::draw.vertex[725]: -::draw.vertex[726]: -::draw.vertex[727]: -::draw.vertex[728]: -::draw.vertex[729]: -::draw.vertex[730]: -::draw.vertex[731]: -::draw.vertex[732]: -::draw.vertex[733]: -::draw.vertex[734]: -::draw.vertex[735]: -::draw.vertex[736]: -::draw.vertex[737]: -::draw.vertex[738]: -::draw.vertex[739]: -::draw.vertex[740]: -::draw.vertex[741]: -::draw.vertex[742]: -::draw.vertex[743]: -::draw.vertex[744]: -::draw.vertex[745]: -::draw.vertex[746]: -::draw.vertex[747]: -::draw.vertex[748]: -::draw.vertex[749]: -::draw.vertex[750]: -::draw.vertex[751]: -::draw.vertex[752]: -::draw.vertex[753]: -::draw.vertex[754]: -::draw.vertex[755]: -::draw.vertex[756]: -::draw.vertex[757]: -::draw.vertex[758]: -::draw.vertex[759]: -::draw.vertex[760]: -::draw.vertex[761]: -::draw.vertex[762]: -::draw.vertex[763]: -::draw.vertex[764]: -::draw.vertex[765]: -::draw.vertex[766]: -::draw.vertex[767]: -::draw.vertex[768]: -::draw.vertex[769]: -::draw.vertex[770]: -::draw.vertex[771]: -::draw.vertex[772]: -::draw.vertex[773]: -::draw.vertex[774]: -::draw.vertex[775]: -::draw.vertex[776]: -::draw.vertex[777]: -::draw.vertex[778]: -::draw.vertex[779]: -::draw.vertex[780]: -::draw.vertex[781]: -::draw.vertex[782]: -::draw.vertex[783]: -::draw.vertex[784]: -::draw.vertex[785]: -::draw.vertex[786]: -::draw.vertex[787]: -::draw.vertex[788]: -::draw.vertex[789]: -::draw.vertex[790]: -::draw.vertex[791]: -::draw.vertex[792]: -::draw.vertex[793]: -::draw.vertex[794]: -::draw.vertex[795]: -::draw.vertex[796]: -::draw.vertex[797]: -::draw.vertex[798]: -::draw.vertex[799]: -::draw.vertex[800]: -::draw.vertex[801]: -::draw.vertex[802]: -::draw.vertex[803]: -::draw.vertex[804]: -::draw.vertex[805]: -::draw.vertex[806]: -::draw.vertex[807]: -::draw.vertex[808]: -::draw.vertex[809]: -::draw.vertex[810]: -::draw.vertex[811]: -::draw.vertex[812]: -::draw.vertex[813]: -::draw.vertex[814]: -::draw.vertex[815]: -::draw.vertex[816]: -::draw.vertex[817]: -::draw.vertex[818]: -::draw.vertex[819]: -::draw.vertex[820]: -::draw.vertex[821]: -::draw.vertex[822]: -::draw.vertex[823]: -::draw.vertex[824]: -::draw.vertex[825]: -::draw.vertex[826]: -::draw.vertex[827]: -::draw.vertex[828]: -::draw.vertex[829]: -::draw.vertex[830]: -::draw.vertex[831]: -::draw.vertex[832]: -::draw.vertex[833]: -::draw.vertex[834]: -::draw.vertex[835]: -::draw.vertex[836]: -::draw.vertex[837]: -::draw.vertex[838]: -::draw.vertex[839]: -::draw.vertex[840]: -::draw.vertex[841]: -::draw.vertex[842]: -::draw.vertex[843]: -::draw.vertex[844]: -::draw.vertex[845]: -::draw.vertex[846]: -::draw.vertex[847]: -::draw.vertex[848]: -::draw.vertex[849]: -::draw.vertex[850]: -::draw.vertex[851]: -::draw.vertex[852]: -::draw.vertex[853]: -::draw.vertex[854]: -::draw.vertex[855]: -::draw.vertex[856]: -::draw.vertex[857]: -::draw.vertex[858]: -::draw.vertex[859]: -::draw.vertex[860]: -::draw.vertex[861]: -::draw.vertex[862]: -::draw.vertex[863]: -::draw.vertex[864]: -::draw.vertex[865]: -::draw.vertex[866]: -::draw.vertex[867]: -::draw.vertex[868]: -::draw.vertex[869]: -::draw.vertex[870]: -::draw.vertex[871]: -::draw.vertex[872]: -::draw.vertex[873]: -::draw.vertex[874]: -::draw.vertex[875]: -::draw.vertex[876]: -::draw.vertex[877]: -::draw.vertex[878]: -::draw.vertex[879]: -::draw.vertex[880]: -::draw.vertex[881]: -::draw.vertex[882]: -::draw.vertex[883]: -::draw.vertex[884]: -::draw.vertex[885]: -::draw.vertex[886]: -::draw.vertex[887]: -::draw.vertex[888]: -::draw.vertex[889]: -::draw.vertex[890]: -::draw.vertex[891]: -::draw.vertex[892]: -::draw.vertex[893]: -::draw.vertex[894]: -::draw.vertex[895]: -::draw.vertex[896]: -::draw.vertex[897]: -::draw.vertex[898]: -::draw.vertex[899]: -::draw.vertex[900]: -::draw.vertex[901]: -::draw.vertex[902]: -::draw.vertex[903]: -::draw.vertex[904]: -::draw.vertex[905]: -::draw.vertex[906]: -::draw.vertex[907]: -::draw.vertex[908]: -::draw.vertex[909]: -::draw.vertex[910]: -::draw.vertex[911]: -::draw.vertex[912]: -::draw.vertex[913]: -::draw.vertex[914]: -::draw.vertex[915]: -::draw.vertex[916]: -::draw.vertex[917]: -::draw.vertex[918]: -::draw.vertex[919]: -::draw.vertex[920]: -::draw.vertex[921]: -::draw.vertex[922]: -::draw.vertex[923]: -::draw.vertex[924]: -::draw.vertex[925]: -::draw.vertex[926]: -::draw.vertex[927]: -::draw.vertex[928]: -::draw.vertex[929]: -::draw.vertex[930]: -::draw.vertex[931]: -::draw.vertex[932]: -::draw.vertex[933]: -::draw.vertex[934]: -::draw.vertex[935]: -::draw.vertex[936]: -::draw.vertex[937]: -::draw.vertex[938]: -::draw.vertex[939]: -::draw.vertex[940]: -::draw.vertex[941]: -::draw.vertex[942]: -::draw.vertex[943]: -::draw.vertex[944]: -::draw.vertex[945]: -::draw.vertex[946]: -::draw.vertex[947]: -::draw.vertex[948]: -::draw.vertex[949]: -::draw.vertex[950]: -::draw.vertex[951]: -::draw.vertex[952]: -::draw.vertex[953]: -::draw.vertex[954]: -::draw.vertex[955]: -::draw.vertex[956]: -::draw.vertex[957]: -::draw.vertex[958]: -::draw.vertex[959]: -::draw.vertex[960]: -::draw.vertex[961]: -::draw.vertex[962]: -::draw.vertex[963]: -::draw.vertex[964]: -::draw.vertex[965]: -::draw.vertex[966]: -::draw.vertex[967]: -::draw.vertex[968]: -::draw.vertex[969]: -::draw.vertex[970]: -::draw.vertex[971]: -::draw.vertex[972]: -::draw.vertex[973]: -::draw.vertex[974]: -::draw.vertex[975]: -::draw.vertex[976]: -::draw.vertex[977]: -::draw.vertex[978]: -::draw.vertex[979]: -::draw.vertex[980]: -::draw.vertex[981]: -::draw.vertex[982]: -::draw.vertex[983]: -::draw.vertex[984]: -::draw.vertex[985]: -::draw.vertex[986]: -::draw.vertex[987]: -::draw.vertex[988]: -::draw.vertex[989]: -::draw.vertex[990]: -::draw.vertex[991]: -::draw.vertex[992]: -::draw.vertex[993]: -::draw.vertex[994]: -::draw.vertex[995]: -::draw.vertex[996]: -::draw.vertex[997]: -::draw.vertex[998]: -::draw.vertex[999]: -::draw.vertex[1000]: -::draw.vertex[1001]: -::draw.vertex[1002]: -::draw.vertex[1003]: -::draw.vertex[1004]: -::draw.vertex[1005]: -::draw.vertex[1006]: -::draw.vertex[1007]: -::draw.vertex[1008]: -::draw.vertex[1009]: -::draw.vertex[1010]: -::draw.vertex[1011]: -::draw.vertex[1012]: -::draw.vertex[1013]: -::draw.vertex[1014]: -::draw.vertex[1015]: -::draw.vertex[1016]: -::draw.vertex[1017]: -::draw.vertex[1018]: -::draw.vertex[1019]: -::draw.vertex[1020]: -::draw.vertex[1021]: -::draw.vertex[1022]: -::draw.vertex[1023]: -::draw.vertex[1024]: -::draw.vertex[1025]: -::draw.vertex[1026]: -::draw.vertex[1027]: -::draw.vertex[1028]: -::draw.vertex[1029]: -::draw.vertex[1030]: -::draw.vertex[1031]: -::draw.vertex[1032]: -::draw.vertex[1033]: -::draw.vertex[1034]: -::draw.vertex[1035]: -::draw.vertex[1036]: -::draw.vertex[1037]: -::draw.vertex[1038]: -::draw.vertex[1039]: -::draw.vertex[1040]: -::draw.vertex[1041]: -::draw.vertex[1042]: -::draw.vertex[1043]: -::draw.vertex[1044]: -::draw.vertex[1045]: -::draw.vertex[1046]: -::draw.vertex[1047]: -::draw.vertex[1048]: -::draw.vertex[1049]: -::draw.vertex[1050]: -::draw.vertex[1051]: -::draw.vertex[1052]: -::draw.vertex[1053]: -::draw.vertex[1054]: -::draw.vertex[1055]: -::draw.vertex[1056]: -::draw.vertex[1057]: -::draw.vertex[1058]: -::draw.vertex[1059]: -::draw.vertex[1060]: -::draw.vertex[1061]: -::draw.vertex[1062]: -::draw.vertex[1063]: -::draw.vertex[1064]: -::draw.vertex[1065]: -::draw.vertex[1066]: -::draw.vertex[1067]: -::draw.vertex[1068]: -::draw.vertex[1069]: -::draw.vertex[1070]: -::draw.vertex[1071]: -::draw.vertex[1072]: -::draw.vertex[1073]: -::draw.vertex[1074]: -::draw.vertex[1075]: -::draw.vertex[1076]: -::draw.vertex[1077]: -::draw.vertex[1078]: -::draw.vertex[1079]: -::draw.vertex[1080]: -::draw.vertex[1081]: -::draw.vertex[1082]: -::draw.vertex[1083]: -::draw.vertex[1084]: -::draw.vertex[1085]: -::draw.vertex[1086]: -::draw.vertex[1087]: -::draw.vertex[1088]: -::draw.vertex[1089]: -::draw.vertex[1090]: -::draw.vertex[1091]: -::draw.vertex[1092]: -::draw.vertex[1093]: -::draw.vertex[1094]: -::draw.vertex[1095]: -::draw.vertex[1096]: -::draw.vertex[1097]: -::draw.vertex[1098]: -::draw.vertex[1099]: -::draw.vertex[1100]: -::draw.vertex[1101]: -::draw.vertex[1102]: -::draw.vertex[1103]: -::draw.vertex[1104]: -::draw.vertex[1105]: -::draw.vertex[1106]: -::draw.vertex[1107]: -::draw.vertex[1108]: -::draw.vertex[1109]: -::draw.vertex[1110]: -::draw.vertex[1111]: -::draw.vertex[1112]: -::draw.vertex[1113]: -::draw.vertex[1114]: -::draw.vertex[1115]: -::draw.vertex[1116]: -::draw.vertex[1117]: -::draw.vertex[1118]: -::draw.vertex[1119]: -::draw.vertex[1120]: -::draw.vertex[1121]: -::draw.vertex[1122]: -::draw.vertex[1123]: -::draw.vertex[1124]: -::draw.vertex[1125]: -::draw.vertex[1126]: -::draw.vertex[1127]: -::draw.vertex[1128]: -::draw.vertex[1129]: -::draw.vertex[1130]: -::draw.vertex[1131]: -::draw.vertex[1132]: -::draw.vertex[1133]: -::draw.vertex[1134]: -::draw.vertex[1135]: -::draw.vertex[1136]: -::draw.vertex[1137]: -::draw.vertex[1138]: -::draw.vertex[1139]: -::draw.vertex[1140]: -::draw.vertex[1141]: -::draw.vertex[1142]: -::draw.vertex[1143]: -::draw.vertex[1144]: -::draw.vertex[1145]: -::draw.vertex[1146]: -::draw.vertex[1147]: -::draw.vertex[1148]: -::draw.vertex[1149]: -::draw.vertex[1150]: -::draw.vertex[1151]: -::draw.vertex[1152]: -::draw.vertex[1153]: -::draw.vertex[1154]: -::draw.vertex[1155]: -::draw.vertex[1156]: -::draw.vertex[1157]: -::draw.vertex[1158]: -::draw.vertex[1159]: -::draw.vertex[1160]: -::draw.vertex[1161]: -::draw.vertex[1162]: -::draw.vertex[1163]: -::draw.vertex[1164]: -::draw.vertex[1165]: -::draw.vertex[1166]: -::draw.vertex[1167]: -::draw.vertex[1168]: -::draw.vertex[1169]: -::draw.vertex[1170]: -::draw.vertex[1171]: -::draw.vertex[1172]: -::draw.vertex[1173]: -::draw.vertex[1174]: -::draw.vertex[1175]: -::draw.vertex[1176]: -::draw.vertex[1177]: -::draw.vertex[1178]: -::draw.vertex[1179]: -::draw.vertex[1180]: -::draw.vertex[1181]: -::draw.vertex[1182]: -::draw.vertex[1183]: -::draw.vertex[1184]: -::draw.vertex[1185]: -::draw.vertex[1186]: -::draw.vertex[1187]: -::draw.vertex[1188]: -::draw.vertex[1189]: -::draw.vertex[1190]: -::draw.vertex[1191]: -::draw.vertex[1192]: -::draw.vertex[1193]: -::draw.vertex[1194]: -::draw.vertex[1195]: -::draw.vertex[1196]: -::draw.vertex[1197]: -::draw.vertex[1198]: -::draw.vertex[1199]: -::draw.vertex[1200]: -::draw.vertex[1201]: -::draw.vertex[1202]: -::draw.vertex[1203]: -::draw.vertex[1204]: -::draw.vertex[1205]: -::draw.vertex[1206]: -::draw.vertex[1207]: -::draw.vertex[1208]: -::draw.vertex[1209]: -::draw.vertex[1210]: -::draw.vertex[1211]: -::draw.vertex[1212]: -::draw.vertex[1213]: -::draw.vertex[1214]: -::draw.vertex[1215]: -::draw.vertex[1216]: -::draw.vertex[1217]: -::draw.vertex[1218]: -::draw.vertex[1219]: -::draw.vertex[1220]: -::draw.vertex[1221]: -::draw.vertex[1222]: -::draw.vertex[1223]: -::draw.vertex[1224]: -::draw.vertex[1225]: -::draw.vertex[1226]: -::draw.vertex[1227]: -::draw.vertex[1228]: -::draw.vertex[1229]: -::draw.vertex[1230]: -::draw.vertex[1231]: -::draw.vertex[1232]: -::draw.vertex[1233]: -::draw.vertex[1234]: -::draw.vertex[1235]: -::draw.vertex[1236]: -::draw.vertex[1237]: -::draw.vertex[1238]: -::draw.vertex[1239]: -::draw.vertex[1240]: -::draw.vertex[1241]: -::draw.vertex[1242]: -::draw.vertex[1243]: -::draw.vertex[1244]: -::draw.vertex[1245]: -::draw.vertex[1246]: -::draw.vertex[1247]: -::draw.vertex[1248]: -::draw.vertex[1249]: -::draw.vertex[1250]: -::draw.vertex[1251]: -::draw.vertex[1252]: -::draw.vertex[1253]: -::draw.vertex[1254]: -::draw.vertex[1255]: -::draw.vertex[1256]: -::draw.vertex[1257]: -::draw.vertex[1258]: -::draw.vertex[1259]: -::draw.vertex[1260]: -::draw.vertex[1261]: -::draw.vertex[1262]: -::draw.vertex[1263]: -::draw.vertex[1264]: -::draw.vertex[1265]: -::draw.vertex[1266]: -::draw.vertex[1267]: -::draw.vertex[1268]: -::draw.vertex[1269]: -::draw.vertex[1270]: -::draw.vertex[1271]: -::draw.vertex[1272]: -::draw.vertex[1273]: -::draw.vertex[1274]: -::draw.vertex[1275]: -::draw.vertex[1276]: -::draw.vertex[1277]: -::draw.vertex[1278]: -::draw.vertex[1279]: -::draw.vertex[1280]: -::draw.vertex[1281]: -::draw.vertex[1282]: -::draw.vertex[1283]: -::draw.vertex[1284]: -::draw.vertex[1285]: -::draw.vertex[1286]: -::draw.vertex[1287]: -::draw.vertex[1288]: -::draw.vertex[1289]: -::draw.vertex[1290]: -::draw.vertex[1291]: -::draw.vertex[1292]: -::draw.vertex[1293]: -::draw.vertex[1294]: -::draw.vertex[1295]: -::draw.vertex[1296]: -::draw.vertex[1297]: -::draw.vertex[1298]: -::draw.vertex[1299]: -::draw.vertex[1300]: -::draw.vertex[1301]: -::draw.vertex[1302]: -::draw.vertex[1303]: -::draw.vertex[1304]: -::draw.vertex[1305]: -::draw.vertex[1306]: -::draw.vertex[1307]: -::draw.vertex[1308]: -::draw.vertex[1309]: -::draw.vertex[1310]: -::draw.vertex[1311]: -::draw.vertex[1312]: -::draw.vertex[1313]: -::draw.vertex[1314]: -::draw.vertex[1315]: -::draw.vertex[1316]: -::draw.vertex[1317]: -::draw.vertex[1318]: -::draw.vertex[1319]: -::draw.vertex[1320]: -::draw.vertex[1321]: -::draw.vertex[1322]: -::draw.vertex[1323]: -::draw.vertex[1324]: -::draw.vertex[1325]: -::draw.vertex[1326]: -::draw.vertex[1327]: -::draw.vertex[1328]: -::draw.vertex[1329]: -::draw.vertex[1330]: -::draw.vertex[1331]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: ALWAYS, 0, 255 -stencilOperation: KEEP, KEEP, INVERT -stencilMask: 2 -colorMask: false, false, false, false -disable: BLEND -enable: CULL_FACE -cullFace: BOTH -draw: TRIANGLE_FAN, offset=631, count=701, instances=1, indexType=null -::draw.indices: [631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331] -::draw.attributes[0]: [] -::draw.vertex[631]: -::draw.vertex[632]: -::draw.vertex[633]: -::draw.vertex[634]: -::draw.vertex[635]: -::draw.vertex[636]: -::draw.vertex[637]: -::draw.vertex[638]: -::draw.vertex[639]: -::draw.vertex[640]: -::draw.vertex[641]: -::draw.vertex[642]: -::draw.vertex[643]: -::draw.vertex[644]: -::draw.vertex[645]: -::draw.vertex[646]: -::draw.vertex[647]: -::draw.vertex[648]: -::draw.vertex[649]: -::draw.vertex[650]: -::draw.vertex[651]: -::draw.vertex[652]: -::draw.vertex[653]: -::draw.vertex[654]: -::draw.vertex[655]: -::draw.vertex[656]: -::draw.vertex[657]: -::draw.vertex[658]: -::draw.vertex[659]: -::draw.vertex[660]: -::draw.vertex[661]: -::draw.vertex[662]: -::draw.vertex[663]: -::draw.vertex[664]: -::draw.vertex[665]: -::draw.vertex[666]: -::draw.vertex[667]: -::draw.vertex[668]: -::draw.vertex[669]: -::draw.vertex[670]: -::draw.vertex[671]: -::draw.vertex[672]: -::draw.vertex[673]: -::draw.vertex[674]: -::draw.vertex[675]: -::draw.vertex[676]: -::draw.vertex[677]: -::draw.vertex[678]: -::draw.vertex[679]: -::draw.vertex[680]: -::draw.vertex[681]: -::draw.vertex[682]: -::draw.vertex[683]: -::draw.vertex[684]: -::draw.vertex[685]: -::draw.vertex[686]: -::draw.vertex[687]: -::draw.vertex[688]: -::draw.vertex[689]: -::draw.vertex[690]: -::draw.vertex[691]: -::draw.vertex[692]: -::draw.vertex[693]: -::draw.vertex[694]: -::draw.vertex[695]: -::draw.vertex[696]: -::draw.vertex[697]: -::draw.vertex[698]: -::draw.vertex[699]: -::draw.vertex[700]: -::draw.vertex[701]: -::draw.vertex[702]: -::draw.vertex[703]: -::draw.vertex[704]: -::draw.vertex[705]: -::draw.vertex[706]: -::draw.vertex[707]: -::draw.vertex[708]: -::draw.vertex[709]: -::draw.vertex[710]: -::draw.vertex[711]: -::draw.vertex[712]: -::draw.vertex[713]: -::draw.vertex[714]: -::draw.vertex[715]: -::draw.vertex[716]: -::draw.vertex[717]: -::draw.vertex[718]: -::draw.vertex[719]: -::draw.vertex[720]: -::draw.vertex[721]: -::draw.vertex[722]: -::draw.vertex[723]: -::draw.vertex[724]: -::draw.vertex[725]: -::draw.vertex[726]: -::draw.vertex[727]: -::draw.vertex[728]: -::draw.vertex[729]: -::draw.vertex[730]: -::draw.vertex[731]: -::draw.vertex[732]: -::draw.vertex[733]: -::draw.vertex[734]: -::draw.vertex[735]: -::draw.vertex[736]: -::draw.vertex[737]: -::draw.vertex[738]: -::draw.vertex[739]: -::draw.vertex[740]: -::draw.vertex[741]: -::draw.vertex[742]: -::draw.vertex[743]: -::draw.vertex[744]: -::draw.vertex[745]: -::draw.vertex[746]: -::draw.vertex[747]: -::draw.vertex[748]: -::draw.vertex[749]: -::draw.vertex[750]: -::draw.vertex[751]: -::draw.vertex[752]: -::draw.vertex[753]: -::draw.vertex[754]: -::draw.vertex[755]: -::draw.vertex[756]: -::draw.vertex[757]: -::draw.vertex[758]: -::draw.vertex[759]: -::draw.vertex[760]: -::draw.vertex[761]: -::draw.vertex[762]: -::draw.vertex[763]: -::draw.vertex[764]: -::draw.vertex[765]: -::draw.vertex[766]: -::draw.vertex[767]: -::draw.vertex[768]: -::draw.vertex[769]: -::draw.vertex[770]: -::draw.vertex[771]: -::draw.vertex[772]: -::draw.vertex[773]: -::draw.vertex[774]: -::draw.vertex[775]: -::draw.vertex[776]: -::draw.vertex[777]: -::draw.vertex[778]: -::draw.vertex[779]: -::draw.vertex[780]: -::draw.vertex[781]: -::draw.vertex[782]: -::draw.vertex[783]: -::draw.vertex[784]: -::draw.vertex[785]: -::draw.vertex[786]: -::draw.vertex[787]: -::draw.vertex[788]: -::draw.vertex[789]: -::draw.vertex[790]: -::draw.vertex[791]: -::draw.vertex[792]: -::draw.vertex[793]: -::draw.vertex[794]: -::draw.vertex[795]: -::draw.vertex[796]: -::draw.vertex[797]: -::draw.vertex[798]: -::draw.vertex[799]: -::draw.vertex[800]: -::draw.vertex[801]: -::draw.vertex[802]: -::draw.vertex[803]: -::draw.vertex[804]: -::draw.vertex[805]: -::draw.vertex[806]: -::draw.vertex[807]: -::draw.vertex[808]: -::draw.vertex[809]: -::draw.vertex[810]: -::draw.vertex[811]: -::draw.vertex[812]: -::draw.vertex[813]: -::draw.vertex[814]: -::draw.vertex[815]: -::draw.vertex[816]: -::draw.vertex[817]: -::draw.vertex[818]: -::draw.vertex[819]: -::draw.vertex[820]: -::draw.vertex[821]: -::draw.vertex[822]: -::draw.vertex[823]: -::draw.vertex[824]: -::draw.vertex[825]: -::draw.vertex[826]: -::draw.vertex[827]: -::draw.vertex[828]: -::draw.vertex[829]: -::draw.vertex[830]: -::draw.vertex[831]: -::draw.vertex[832]: -::draw.vertex[833]: -::draw.vertex[834]: -::draw.vertex[835]: -::draw.vertex[836]: -::draw.vertex[837]: -::draw.vertex[838]: -::draw.vertex[839]: -::draw.vertex[840]: -::draw.vertex[841]: -::draw.vertex[842]: -::draw.vertex[843]: -::draw.vertex[844]: -::draw.vertex[845]: -::draw.vertex[846]: -::draw.vertex[847]: -::draw.vertex[848]: -::draw.vertex[849]: -::draw.vertex[850]: -::draw.vertex[851]: -::draw.vertex[852]: -::draw.vertex[853]: -::draw.vertex[854]: -::draw.vertex[855]: -::draw.vertex[856]: -::draw.vertex[857]: -::draw.vertex[858]: -::draw.vertex[859]: -::draw.vertex[860]: -::draw.vertex[861]: -::draw.vertex[862]: -::draw.vertex[863]: -::draw.vertex[864]: -::draw.vertex[865]: -::draw.vertex[866]: -::draw.vertex[867]: -::draw.vertex[868]: -::draw.vertex[869]: -::draw.vertex[870]: -::draw.vertex[871]: -::draw.vertex[872]: -::draw.vertex[873]: -::draw.vertex[874]: -::draw.vertex[875]: -::draw.vertex[876]: -::draw.vertex[877]: -::draw.vertex[878]: -::draw.vertex[879]: -::draw.vertex[880]: -::draw.vertex[881]: -::draw.vertex[882]: -::draw.vertex[883]: -::draw.vertex[884]: -::draw.vertex[885]: -::draw.vertex[886]: -::draw.vertex[887]: -::draw.vertex[888]: -::draw.vertex[889]: -::draw.vertex[890]: -::draw.vertex[891]: -::draw.vertex[892]: -::draw.vertex[893]: -::draw.vertex[894]: -::draw.vertex[895]: -::draw.vertex[896]: -::draw.vertex[897]: -::draw.vertex[898]: -::draw.vertex[899]: -::draw.vertex[900]: -::draw.vertex[901]: -::draw.vertex[902]: -::draw.vertex[903]: -::draw.vertex[904]: -::draw.vertex[905]: -::draw.vertex[906]: -::draw.vertex[907]: -::draw.vertex[908]: -::draw.vertex[909]: -::draw.vertex[910]: -::draw.vertex[911]: -::draw.vertex[912]: -::draw.vertex[913]: -::draw.vertex[914]: -::draw.vertex[915]: -::draw.vertex[916]: -::draw.vertex[917]: -::draw.vertex[918]: -::draw.vertex[919]: -::draw.vertex[920]: -::draw.vertex[921]: -::draw.vertex[922]: -::draw.vertex[923]: -::draw.vertex[924]: -::draw.vertex[925]: -::draw.vertex[926]: -::draw.vertex[927]: -::draw.vertex[928]: -::draw.vertex[929]: -::draw.vertex[930]: -::draw.vertex[931]: -::draw.vertex[932]: -::draw.vertex[933]: -::draw.vertex[934]: -::draw.vertex[935]: -::draw.vertex[936]: -::draw.vertex[937]: -::draw.vertex[938]: -::draw.vertex[939]: -::draw.vertex[940]: -::draw.vertex[941]: -::draw.vertex[942]: -::draw.vertex[943]: -::draw.vertex[944]: -::draw.vertex[945]: -::draw.vertex[946]: -::draw.vertex[947]: -::draw.vertex[948]: -::draw.vertex[949]: -::draw.vertex[950]: -::draw.vertex[951]: -::draw.vertex[952]: -::draw.vertex[953]: -::draw.vertex[954]: -::draw.vertex[955]: -::draw.vertex[956]: -::draw.vertex[957]: -::draw.vertex[958]: -::draw.vertex[959]: -::draw.vertex[960]: -::draw.vertex[961]: -::draw.vertex[962]: -::draw.vertex[963]: -::draw.vertex[964]: -::draw.vertex[965]: -::draw.vertex[966]: -::draw.vertex[967]: -::draw.vertex[968]: -::draw.vertex[969]: -::draw.vertex[970]: -::draw.vertex[971]: -::draw.vertex[972]: -::draw.vertex[973]: -::draw.vertex[974]: -::draw.vertex[975]: -::draw.vertex[976]: -::draw.vertex[977]: -::draw.vertex[978]: -::draw.vertex[979]: -::draw.vertex[980]: -::draw.vertex[981]: -::draw.vertex[982]: -::draw.vertex[983]: -::draw.vertex[984]: -::draw.vertex[985]: -::draw.vertex[986]: -::draw.vertex[987]: -::draw.vertex[988]: -::draw.vertex[989]: -::draw.vertex[990]: -::draw.vertex[991]: -::draw.vertex[992]: -::draw.vertex[993]: -::draw.vertex[994]: -::draw.vertex[995]: -::draw.vertex[996]: -::draw.vertex[997]: -::draw.vertex[998]: -::draw.vertex[999]: -::draw.vertex[1000]: -::draw.vertex[1001]: -::draw.vertex[1002]: -::draw.vertex[1003]: -::draw.vertex[1004]: -::draw.vertex[1005]: -::draw.vertex[1006]: -::draw.vertex[1007]: -::draw.vertex[1008]: -::draw.vertex[1009]: -::draw.vertex[1010]: -::draw.vertex[1011]: -::draw.vertex[1012]: -::draw.vertex[1013]: -::draw.vertex[1014]: -::draw.vertex[1015]: -::draw.vertex[1016]: -::draw.vertex[1017]: -::draw.vertex[1018]: -::draw.vertex[1019]: -::draw.vertex[1020]: -::draw.vertex[1021]: -::draw.vertex[1022]: -::draw.vertex[1023]: -::draw.vertex[1024]: -::draw.vertex[1025]: -::draw.vertex[1026]: -::draw.vertex[1027]: -::draw.vertex[1028]: -::draw.vertex[1029]: -::draw.vertex[1030]: -::draw.vertex[1031]: -::draw.vertex[1032]: -::draw.vertex[1033]: -::draw.vertex[1034]: -::draw.vertex[1035]: -::draw.vertex[1036]: -::draw.vertex[1037]: -::draw.vertex[1038]: -::draw.vertex[1039]: -::draw.vertex[1040]: -::draw.vertex[1041]: -::draw.vertex[1042]: -::draw.vertex[1043]: -::draw.vertex[1044]: -::draw.vertex[1045]: -::draw.vertex[1046]: -::draw.vertex[1047]: -::draw.vertex[1048]: -::draw.vertex[1049]: -::draw.vertex[1050]: -::draw.vertex[1051]: -::draw.vertex[1052]: -::draw.vertex[1053]: -::draw.vertex[1054]: -::draw.vertex[1055]: -::draw.vertex[1056]: -::draw.vertex[1057]: -::draw.vertex[1058]: -::draw.vertex[1059]: -::draw.vertex[1060]: -::draw.vertex[1061]: -::draw.vertex[1062]: -::draw.vertex[1063]: -::draw.vertex[1064]: -::draw.vertex[1065]: -::draw.vertex[1066]: -::draw.vertex[1067]: -::draw.vertex[1068]: -::draw.vertex[1069]: -::draw.vertex[1070]: -::draw.vertex[1071]: -::draw.vertex[1072]: -::draw.vertex[1073]: -::draw.vertex[1074]: -::draw.vertex[1075]: -::draw.vertex[1076]: -::draw.vertex[1077]: -::draw.vertex[1078]: -::draw.vertex[1079]: -::draw.vertex[1080]: -::draw.vertex[1081]: -::draw.vertex[1082]: -::draw.vertex[1083]: -::draw.vertex[1084]: -::draw.vertex[1085]: -::draw.vertex[1086]: -::draw.vertex[1087]: -::draw.vertex[1088]: -::draw.vertex[1089]: -::draw.vertex[1090]: -::draw.vertex[1091]: -::draw.vertex[1092]: -::draw.vertex[1093]: -::draw.vertex[1094]: -::draw.vertex[1095]: -::draw.vertex[1096]: -::draw.vertex[1097]: -::draw.vertex[1098]: -::draw.vertex[1099]: -::draw.vertex[1100]: -::draw.vertex[1101]: -::draw.vertex[1102]: -::draw.vertex[1103]: -::draw.vertex[1104]: -::draw.vertex[1105]: -::draw.vertex[1106]: -::draw.vertex[1107]: -::draw.vertex[1108]: -::draw.vertex[1109]: -::draw.vertex[1110]: -::draw.vertex[1111]: -::draw.vertex[1112]: -::draw.vertex[1113]: -::draw.vertex[1114]: -::draw.vertex[1115]: -::draw.vertex[1116]: -::draw.vertex[1117]: -::draw.vertex[1118]: -::draw.vertex[1119]: -::draw.vertex[1120]: -::draw.vertex[1121]: -::draw.vertex[1122]: -::draw.vertex[1123]: -::draw.vertex[1124]: -::draw.vertex[1125]: -::draw.vertex[1126]: -::draw.vertex[1127]: -::draw.vertex[1128]: -::draw.vertex[1129]: -::draw.vertex[1130]: -::draw.vertex[1131]: -::draw.vertex[1132]: -::draw.vertex[1133]: -::draw.vertex[1134]: -::draw.vertex[1135]: -::draw.vertex[1136]: -::draw.vertex[1137]: -::draw.vertex[1138]: -::draw.vertex[1139]: -::draw.vertex[1140]: -::draw.vertex[1141]: -::draw.vertex[1142]: -::draw.vertex[1143]: -::draw.vertex[1144]: -::draw.vertex[1145]: -::draw.vertex[1146]: -::draw.vertex[1147]: -::draw.vertex[1148]: -::draw.vertex[1149]: -::draw.vertex[1150]: -::draw.vertex[1151]: -::draw.vertex[1152]: -::draw.vertex[1153]: -::draw.vertex[1154]: -::draw.vertex[1155]: -::draw.vertex[1156]: -::draw.vertex[1157]: -::draw.vertex[1158]: -::draw.vertex[1159]: -::draw.vertex[1160]: -::draw.vertex[1161]: -::draw.vertex[1162]: -::draw.vertex[1163]: -::draw.vertex[1164]: -::draw.vertex[1165]: -::draw.vertex[1166]: -::draw.vertex[1167]: -::draw.vertex[1168]: -::draw.vertex[1169]: -::draw.vertex[1170]: -::draw.vertex[1171]: -::draw.vertex[1172]: -::draw.vertex[1173]: -::draw.vertex[1174]: -::draw.vertex[1175]: -::draw.vertex[1176]: -::draw.vertex[1177]: -::draw.vertex[1178]: -::draw.vertex[1179]: -::draw.vertex[1180]: -::draw.vertex[1181]: -::draw.vertex[1182]: -::draw.vertex[1183]: -::draw.vertex[1184]: -::draw.vertex[1185]: -::draw.vertex[1186]: -::draw.vertex[1187]: -::draw.vertex[1188]: -::draw.vertex[1189]: -::draw.vertex[1190]: -::draw.vertex[1191]: -::draw.vertex[1192]: -::draw.vertex[1193]: -::draw.vertex[1194]: -::draw.vertex[1195]: -::draw.vertex[1196]: -::draw.vertex[1197]: -::draw.vertex[1198]: -::draw.vertex[1199]: -::draw.vertex[1200]: -::draw.vertex[1201]: -::draw.vertex[1202]: -::draw.vertex[1203]: -::draw.vertex[1204]: -::draw.vertex[1205]: -::draw.vertex[1206]: -::draw.vertex[1207]: -::draw.vertex[1208]: -::draw.vertex[1209]: -::draw.vertex[1210]: -::draw.vertex[1211]: -::draw.vertex[1212]: -::draw.vertex[1213]: -::draw.vertex[1214]: -::draw.vertex[1215]: -::draw.vertex[1216]: -::draw.vertex[1217]: -::draw.vertex[1218]: -::draw.vertex[1219]: -::draw.vertex[1220]: -::draw.vertex[1221]: -::draw.vertex[1222]: -::draw.vertex[1223]: -::draw.vertex[1224]: -::draw.vertex[1225]: -::draw.vertex[1226]: -::draw.vertex[1227]: -::draw.vertex[1228]: -::draw.vertex[1229]: -::draw.vertex[1230]: -::draw.vertex[1231]: -::draw.vertex[1232]: -::draw.vertex[1233]: -::draw.vertex[1234]: -::draw.vertex[1235]: -::draw.vertex[1236]: -::draw.vertex[1237]: -::draw.vertex[1238]: -::draw.vertex[1239]: -::draw.vertex[1240]: -::draw.vertex[1241]: -::draw.vertex[1242]: -::draw.vertex[1243]: -::draw.vertex[1244]: -::draw.vertex[1245]: -::draw.vertex[1246]: -::draw.vertex[1247]: -::draw.vertex[1248]: -::draw.vertex[1249]: -::draw.vertex[1250]: -::draw.vertex[1251]: -::draw.vertex[1252]: -::draw.vertex[1253]: -::draw.vertex[1254]: -::draw.vertex[1255]: -::draw.vertex[1256]: -::draw.vertex[1257]: -::draw.vertex[1258]: -::draw.vertex[1259]: -::draw.vertex[1260]: -::draw.vertex[1261]: -::draw.vertex[1262]: -::draw.vertex[1263]: -::draw.vertex[1264]: -::draw.vertex[1265]: -::draw.vertex[1266]: -::draw.vertex[1267]: -::draw.vertex[1268]: -::draw.vertex[1269]: -::draw.vertex[1270]: -::draw.vertex[1271]: -::draw.vertex[1272]: -::draw.vertex[1273]: -::draw.vertex[1274]: -::draw.vertex[1275]: -::draw.vertex[1276]: -::draw.vertex[1277]: -::draw.vertex[1278]: -::draw.vertex[1279]: -::draw.vertex[1280]: -::draw.vertex[1281]: -::draw.vertex[1282]: -::draw.vertex[1283]: -::draw.vertex[1284]: -::draw.vertex[1285]: -::draw.vertex[1286]: -::draw.vertex[1287]: -::draw.vertex[1288]: -::draw.vertex[1289]: -::draw.vertex[1290]: -::draw.vertex[1291]: -::draw.vertex[1292]: -::draw.vertex[1293]: -::draw.vertex[1294]: -::draw.vertex[1295]: -::draw.vertex[1296]: -::draw.vertex[1297]: -::draw.vertex[1298]: -::draw.vertex[1299]: -::draw.vertex[1300]: -::draw.vertex[1301]: -::draw.vertex[1302]: -::draw.vertex[1303]: -::draw.vertex[1304]: -::draw.vertex[1305]: -::draw.vertex[1306]: -::draw.vertex[1307]: -::draw.vertex[1308]: -::draw.vertex[1309]: -::draw.vertex[1310]: -::draw.vertex[1311]: -::draw.vertex[1312]: -::draw.vertex[1313]: -::draw.vertex[1314]: -::draw.vertex[1315]: -::draw.vertex[1316]: -::draw.vertex[1317]: -::draw.vertex[1318]: -::draw.vertex[1319]: -::draw.vertex[1320]: -::draw.vertex[1321]: -::draw.vertex[1322]: -::draw.vertex[1323]: -::draw.vertex[1324]: -::draw.vertex[1325]: -::draw.vertex[1326]: -::draw.vertex[1327]: -::draw.vertex[1328]: -::draw.vertex[1329]: -::draw.vertex[1330]: -::draw.vertex[1331]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -enable: STENCIL -stencilFunction: NOT_EQUAL, 3, 255 -stencilOperation: KEEP, KEEP, KEEP -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_FAN, offset=1332, count=4, instances=1, indexType=null -::draw.indices: [1332, 1333, 1334, 1335] -::draw.attributes[0]: [] -::draw.vertex[1332]: -::draw.vertex[1333]: -::draw.vertex[1334]: -::draw.vertex[1335]: -createStencil: 0 -stencilMask: 255 -clear: color=false, depth=false, stencil=true -disable: SCISSOR -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -disable: STENCIL -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=1336, count=12, instances=1, indexType=null -::draw.indices: [1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347] -::draw.attributes[0]: [] -::draw.vertex[1336]: -::draw.vertex[1337]: -::draw.vertex[1338]: -::draw.vertex[1339]: -::draw.vertex[1340]: -::draw.vertex[1341]: -::draw.vertex[1342]: -::draw.vertex[1343]: -::draw.vertex[1344]: -::draw.vertex[1345]: -::draw.vertex[1346]: -::draw.vertex[1347]: -uboSet: -uboSet.uniform: Uniform(u_ProgramType) = AGValue[TFLOAT]([[4]]) -uboSet.uniform: Uniform(u_Transform) = AGValue[TFLOAT]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, -50, -10, 0, 1]]) -uboSet.uniform: Uniform(u_Gradientp0) = AGValue[TFLOAT]([[175, 100, 0]]) -uboSet.uniform: Uniform(u_Gradientp1) = AGValue[TFLOAT]([[0, 0, 0]]) -uboSet.uniform: Uniform(u_GlobalAlpha) = AGValue[TFLOAT]([[0.9]]) -uboSet.uniform: Uniform(u_Tex) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_GlobalPixelScale) = AGValue[TFLOAT]([[2]]) -uboSet.uniform: Uniform(u_InputPre) = AGValue[TFLOAT]([[0]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[1]]) -disable: STENCIL -stencilMask: 0 -colorMask: true, true, true, true -enable: BLEND -blendEquation: ADD, ADD -blendFunction: ONE, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -draw: TRIANGLE_STRIP, offset=1348, count=12, instances=1, indexType=null -::draw.indices: [1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359] -::draw.attributes[0]: [] -::draw.vertex[1348]: -::draw.vertex[1349]: -::draw.vertex[1350]: -::draw.vertex[1351]: -::draw.vertex[1352]: -::draw.vertex[1353]: -::draw.vertex[1354]: -::draw.vertex[1355]: -::draw.vertex[1356]: -::draw.vertex[1357]: -::draw.vertex[1358]: -::draw.vertex[1359]: -vaoUse: AGVertexArrayObject(list=[AGVertexData(_buffer=Buffer[5], layout=VertexLayout[a_Pos, a_Dist, a_MaxDist])]) -disable: CULL_FACE -RenderBuffer[0].set() -Buffer[0].afterSetMem(mem[96]) -Buffer[1].afterSetMem(mem[16384]) -Buffer[2].afterSetMem(mem[16384]) -Buffer[3].afterSetMem(mem[12]) -enable: SCISSOR -scissor: 0, 0, 200, 200 -programCreate: 2, Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3, u_OutputPre]), ProgramConfig(externalTextureSampler=false) -programCreate.fragment:#version 100 compatibility -#ifdef GL_ES - precision highp float; - precision highp int; - precision lowp sampler2D; - precision lowp samplerCube; -#else - #define highp - #define mediump - #define lowp -#endif -uniform sampler2D u_Tex0; -uniform sampler2D u_Tex1; -uniform sampler2D u_Tex2; -uniform sampler2D u_Tex3; -uniform bool u_OutputPre; -varying lowp float v_Wrap; -varying mediump vec2 v_Tex; -varying lowp float v_TexIndex; -varying vec4 v_Col; -void main() { - vec4 temp0; - if ((v_Wrap != 0.0)) { - temp0.xy = fract(v_Tex.xy); - } - else { - temp0.xy = v_Tex.xy; - } - if ((v_TexIndex <= 1.0)) { - if ((v_TexIndex == 0.0)) { - gl_FragColor = texture2D(u_Tex0, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex1, temp0.xy); - } - } - else { - if ((v_TexIndex == 2.0)) { - gl_FragColor = texture2D(u_Tex2, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex3, temp0.xy); - } - } - gl_FragColor = (gl_FragColor * v_Col); - if ((gl_FragColor.a <= 0.0)) { - discard; - } - if ((!(u_OutputPre))) { - gl_FragColor.rgb = (gl_FragColor.rgb / gl_FragColor.a); - } -} - -programCreate.vertex:#version 100 compatibility -#ifdef GL_ES - precision highp float; - precision highp int; - precision lowp sampler2D; - precision lowp samplerCube; -#else - #define highp - #define mediump - #define lowp -#endif -attribute mediump vec2 a_Tex; -attribute lowp float a_TexIndex; -attribute lowp float a_Wrap; -attribute lowp vec4 a_Col; -attribute vec4 a_Col2; -attribute highp vec2 a_Pos; -uniform mat4 u_ProjMat; -uniform mat4 u_ViewMat; -varying mediump vec2 v_Tex; -varying lowp float v_TexIndex; -varying lowp float v_Wrap; -varying vec4 v_Col; -varying vec4 v_Col2; -void main() { - v_Tex = a_Tex; - v_TexIndex = a_TexIndex; - v_Wrap = a_Wrap; - v_Col = vec4((a_Col.rgb * a_Col.a), a_Col.a); - v_Col2 = a_Col2; - gl_Position = ((u_ProjMat * u_ViewMat) * vec4(a_Pos, 0.0, 1.0)); -} - -programUse: 2 -vaoUse: AGVertexArrayObject(list=[AGVertexData(_buffer=Buffer[0], layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2]), AGVertexData(_buffer=Buffer[1], layout=VertexLayout[a_TexIndex]), AGVertexData(_buffer=Buffer[2], layout=VertexLayout[a_Wrap])]) -uboSet: -uboSet.uniform: Uniform(u_ProjMat) = AGValue[TFLOAT]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]]) -uboSet.uniform: Uniform(u_ViewMat) = AGValue[TFLOAT]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]]) -uboSet.uniform: Uniform(u_Tex0) = AGValue[TINT]([[0]]) -uboSet.uniform: Uniform(u_Tex1) = AGValue[TINT]([[1]]) -uboSet.uniform: Uniform(u_Tex2) = AGValue[TINT]([[2]]) -uboSet.uniform: Uniform(u_Tex3) = AGValue[TINT]([[3]]) -uboSet.uniform: Uniform(u_OutputPre) = AGValue[TBOOL]([[0]]) -uboSet.uniform: Uniform(u_ColorMul) = AGValue[TFLOAT]([[0, 0, 0, 0]]) -enable: BLEND -blendEquation: ADD, ADD -blendFunction: SOURCE_ALPHA, ONE_MINUS_SOURCE_ALPHA, ONE, ONE_MINUS_SOURCE_ALPHA -disable: CULL_FACE -depthMask: true -depthRange: 0.0, 1.0 -disable: DEPTH -colorMask: true, true, true, true -disable: STENCIL -stencilMask: 0 -draw: TRIANGLES, offset=0, count=6, instances=1, indexType=USHORT -::draw.indices: [0, 1, 2, 3, 0, 2] -::draw.attributes[0]: [] -::draw.vertex[0]: -::draw.vertex[1]: -::draw.vertex[2]: -::draw.vertex[3]: -vaoUse: AGVertexArrayObject(list=[AGVertexData(_buffer=Buffer[0], layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2]), AGVertexData(_buffer=Buffer[1], layout=VertexLayout[a_TexIndex]), AGVertexData(_buffer=Buffer[2], layout=VertexLayout[a_Wrap])]) -disposeTemporalPerFrameStuff() -flipInternal() -finish -Rectangle(x=-950, y=-790, width=820, height=800) -Rectangle(x=90, y=20, width=410, height=400) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/GpuShapeViewFilter.log b/korge/src/jvmTest/resources/korge/render/GpuShapeViewFilter.log deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/korge/src/jvmTest/resources/korge/render/Graphics.log b/korge/src/jvmTest/resources/korge/render/Graphics.log deleted file mode 100644 index 0f8f32ad08..0000000000 --- a/korge/src/jvmTest/resources/korge/render/Graphics.log +++ /dev/null @@ -1,5 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=200, height=200, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(288)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(12)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(12))]), indices=AGBuffer(36), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.02, 0, 0, 0, 0, -0.02, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=71,71,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1],AGTexture(size=161,161,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=200, height=200), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=18, instances=1) -finish() -Rectangle(x=115.129510429125, y=-18.74097914174999, width=267.74097914174996, height=267.74097914175) -Rectangle(x=-98, y=-196, width=196, height=196) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/OpenGL.log b/korge/src/jvmTest/resources/korge/render/OpenGL.log deleted file mode 100644 index 678d21ce2b..0000000000 --- a/korge/src/jvmTest/resources/korge/render/OpenGL.log +++ /dev/null @@ -1,154 +0,0 @@ -viewport(0, 0, 128, 128) -enable(3089) -scissor(0, 28, 128, 72) -genBuffers(1, [3001]) -bindBuffer(34962, 3001) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3002]) -bindBuffer(34962, 3002) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3003]) -bindBuffer(34962, 3003) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -createProgram() = 1001 -getString(35724) = -createShader(35632) = 2001 -shaderSource(2001, """#extension GL_OES_standard_derivatives : enable -#ifdef GL_ES -precision mediump float; -#endif -uniform sampler2D u_Tex0; -uniform sampler2D u_Tex1; -uniform sampler2D u_Tex2; -uniform sampler2D u_Tex3; -varying float v_Wrap; -varying vec2 v_Tex; -varying float v_TexIndex; -varying vec4 v_Col; -void main() { - vec4 temp0; - if ((v_Wrap != 0.0)) { - temp0.xy = fract(v_Tex.xy); - } - else { - temp0.xy = v_Tex.xy; - } - if ((v_TexIndex <= 1.0)) { - if ((v_TexIndex == 0.0)) { - gl_FragColor = texture2D(u_Tex0, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex1, temp0.xy); - } - } - else { - if ((v_TexIndex == 2.0)) { - gl_FragColor = texture2D(u_Tex2, temp0.xy); - } - else { - gl_FragColor = texture2D(u_Tex3, temp0.xy); - } - } - gl_FragColor = (gl_FragColor * v_Col); - if ((gl_FragColor.a <= 0.0)) { - discard; - } -} -""") -compileShader(2001) -getShaderiv(2001, 35713, [1]) -getError() = 0 -createShader(35633) = 2002 -shaderSource(2002, """#extension GL_OES_standard_derivatives : enable -#ifdef GL_ES -precision mediump float; -#endif -attribute vec2 a_Tex; -attribute float a_TexIndex; -attribute float a_Wrap; -attribute vec4 a_Col; -attribute vec4 a_Col2; -attribute vec2 a_Pos; -uniform mat4 u_ProjMat; -uniform mat4 u_ViewMat; -varying vec2 v_Tex; -varying float v_TexIndex; -varying float v_Wrap; -varying vec4 v_Col; -varying vec4 v_Col2; -void main() { - v_Tex = a_Tex; - v_TexIndex = a_TexIndex; - v_Wrap = a_Wrap; - v_Col = vec4((a_Col.rgb * a_Col.a), a_Col.a); - v_Col2 = a_Col2; - gl_Position = ((u_ProjMat * u_ViewMat) * vec4(a_Pos, 0.0, 1.0)); -} -""") -compileShader(2002) -getShaderiv(2002, 35713, [1]) -getError() = 0 -bindAttribLocation(1001, 1, "a_Tex") -bindAttribLocation(1001, 4, "a_TexIndex") -bindAttribLocation(1001, 5, "a_Wrap") -bindAttribLocation(1001, 2, "a_Col") -bindAttribLocation(1001, 3, "a_Col2") -bindAttribLocation(1001, 0, "a_Pos") -attachShader(1001, 2001) -attachShader(1001, 2002) -linkProgram(1001) -getProgramiv(1001, 35714, [0]) -useProgram(1001) -getUniformLocation(1001, "u_ProjMat") = 7001 -uniformMatrix4fv(7001, 1, false, [0.0015625, 0, 0, 0, 0, -0.0015625, 0, 0, 0, 0, -1, 0, -1, 0.5625, 0, 1]) -getUniformLocation(1001, "u_ViewMat") = 7002 -uniformMatrix4fv(7002, 1, false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) -getUniformLocation(1001, "u_Tex0") = 7003 -genTextures(1, [6001]) -bindTexture(3553, 6001) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -texImage2D(3553, 0, 6408, 6408, 5121, AwtNativeImage(64, 64)) -generateMipmap(3553) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9987) -texParameteri(3553, 10240, 9729) -uniform1iv(7003, 1, [0]) -getUniformLocation(1001, "u_Tex1") = 7004 -activeTexture(33985) -bindTexture(3553, 0) -uniform1iv(7004, 1, [1]) -getUniformLocation(1001, "u_Tex2") = 7005 -activeTexture(33986) -bindTexture(3553, 0) -uniform1iv(7005, 1, [2]) -getUniformLocation(1001, "u_Tex3") = 7006 -activeTexture(33987) -bindTexture(3553, 0) -uniform1iv(7006, 1, [3]) -enable(3042) -blendEquationSeparate(32774, 32774) -blendFuncSeparate(1, 771, 1, 771) -disable(2884) -depthMask(true) -depthRangef(0.0, 1.0) -disable(2929) -disable(2960) -stencilMask(0) -genBuffers(1, [3004]) -bindBuffer(34963, 3004) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/OpenGLShapeView.log b/korge/src/jvmTest/resources/korge/render/OpenGLShapeView.log deleted file mode 100644 index f3dae8c053..0000000000 --- a/korge/src/jvmTest/resources/korge/render/OpenGLShapeView.log +++ /dev/null @@ -1,158 +0,0 @@ -viewport(0, 0, 128, 128) -stencilMask(-1) -clearStencil(0) -clear(1024) -viewport(0, 0, 128, 128) -enable(3089) -scissor(149, 149, 32767, 32767) -genBuffers(1, [3001]) -bindBuffer(34962, 3001) -bufferData(34962, 160, Buffer(size=160), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 16, 0) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5126, false, 16, 8) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5126, false, 16, 12) -createProgram() = 1001 -getString(35724) = -createShader(35632) = 2001 -shaderSource(2001, """#extension GL_OES_standard_derivatives : enable -#ifdef GL_ES -precision mediump float; -#endif -uniform float u_ProgramType; -uniform vec4 u_Color; -uniform sampler2D u_Tex; -uniform mat4 u_Transform; -uniform vec3 u_Gradientp0; -uniform vec3 u_Gradientp1; -uniform vec4 u_ColorMul; -uniform float u_GlobalAlpha; -uniform float u_GlobalPixelScale; -varying float v_Dist; -varying float v_MaxDist; -varying vec2 v_Tex; -void main() { - vec2 temp3; - vec4 temp0; - vec4 temp1; - vec2 temp4; - if ((u_ProgramType == 5.0)) { - gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - return; - } - if ((abs(v_Dist) > v_MaxDist)) { - discard; - } - if ((u_ProgramType == 0.0)) { - gl_FragColor = u_Color; - } - else { - if ((u_ProgramType == 1.0)) { - gl_FragColor = texture2D(u_Tex, fract(vec2((u_Transform * vec4(v_Tex, 0.0, 1.0)).xy))); - } - else { - if ((u_ProgramType == 2.0)) { - gl_FragColor = texture2D(u_Tex, (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy); - } - else { - if ((u_ProgramType == 3.0)) { - temp3.xy = (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy; - temp0.y = ((2.0 * u_Gradientp0.z) * u_Gradientp1.z); - temp0.z = pow(u_Gradientp0.z, 2.0); - temp0.w = pow(u_Gradientp1.z, 2.0); - temp1.y = (u_Gradientp0.x - u_Gradientp1.x); - temp1.x = (u_Gradientp0.y - u_Gradientp1.y); - temp1.z = (u_Gradientp0.z - u_Gradientp1.z); - temp1.w = (1.0 / ((pow((u_Gradientp0.z - u_Gradientp1.z), 2.0) - pow((u_Gradientp0.x - u_Gradientp1.x), 2.0)) - pow((u_Gradientp0.y - u_Gradientp1.y), 2.0))); - temp0.x = (1.0 - ((((((-(u_Gradientp1.z)) * temp1.z) + (temp1.y * (u_Gradientp1.x - temp3.x))) + (temp1.x * (u_Gradientp1.y - temp3.y))) - sqrt(((((temp0.w * (pow((u_Gradientp0.x - temp3.x), 2.0) + pow((u_Gradientp0.y - temp3.y), 2.0))) - (temp0.y * (((u_Gradientp0.x - temp3.x) * (u_Gradientp1.x - temp3.x)) + ((u_Gradientp0.y - temp3.y) * (u_Gradientp1.y - temp3.y))))) + (temp0.z * (pow((u_Gradientp1.x - temp3.x), 2.0) + pow((u_Gradientp1.y - temp3.y), 2.0)))) - pow(((((((u_Gradientp1.x * u_Gradientp0.y) - (temp3.x * u_Gradientp0.y)) - (u_Gradientp0.x * u_Gradientp1.y)) + (temp3.x * u_Gradientp1.y)) + (u_Gradientp0.x * temp3.y)) - (u_Gradientp1.x * temp3.y)), 2.0)))) * temp1.w)); - gl_FragColor = texture2D(u_Tex, vec2(temp0.x, 0.0)); - } - else { - temp4.xy = (u_Transform * vec4(v_Tex.x, v_Tex.y, 0.0, 1.0)).xy; - temp0.y = atan((temp4.y - u_Gradientp0.y), (temp4.x - u_Gradientp0.x)); - if ((temp0.y < 0.0)) { - temp0.y = (temp0.y + 6.2831855); - } - temp0.x = (temp0.y / 6.2831855); - gl_FragColor = texture2D(u_Tex, fract(vec2(temp0.x, 0.0))); - } - } - } - } - gl_FragColor = (((gl_FragColor * u_ColorMul) * u_GlobalAlpha) * (1.0 - smoothstep(((v_MaxDist * u_GlobalPixelScale) - 1.5), (v_MaxDist * u_GlobalPixelScale), abs((v_Dist * u_GlobalPixelScale))))); -} -""") -compileShader(2001) -getShaderiv(2001, 35713, [1]) -getError() = 0 -createShader(35633) = 2002 -shaderSource(2002, """#extension GL_OES_standard_derivatives : enable -#ifdef GL_ES -precision mediump float; -#endif -attribute vec2 a_Pos; -attribute float a_Dist; -attribute float a_MaxDist; -uniform mat4 u_ProjMat; -uniform mat4 u_ViewMat; -varying vec2 v_Tex; -varying float v_Dist; -varying float v_MaxDist; -void main() { - gl_Position = ((u_ProjMat * u_ViewMat) * vec4(a_Pos, 0.0, 1.0)); - v_Tex = a_Pos; - v_Dist = a_Dist; - v_MaxDist = a_MaxDist; -} -""") -compileShader(2002) -getShaderiv(2002, 35713, [1]) -getError() = 0 -bindAttribLocation(1001, 0, "a_Pos") -bindAttribLocation(1001, 5, "a_Dist") -bindAttribLocation(1001, 4, "a_MaxDist") -attachShader(1001, 2001) -attachShader(1001, 2002) -linkProgram(1001) -getProgramiv(1001, 35714, [0]) -useProgram(1001) -getUniformLocation(1001, "u_ProjMat") = 7001 -uniformMatrix4fv(7001, 1, false, [0.0015625, 0, 0, 0, 0, -0.0015625, 0, 0, 0, 0, -1, 0, -1, 0.5625, 0, 1]) -getUniformLocation(1001, "u_ViewMat") = 7002 -uniformMatrix4fv(7002, 1, false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 150, 150, 0, 1]) -getUniformLocation(1001, "u_Tex0") = 7003 -bindTexture(3553, 0) -uniform1iv(7003, 1, [0]) -getUniformLocation(1001, "u_Tex1") = 7004 -activeTexture(33985) -bindTexture(3553, 0) -uniform1iv(7004, 1, [1]) -getUniformLocation(1001, "u_Tex2") = 7005 -activeTexture(33986) -bindTexture(3553, 0) -uniform1iv(7005, 1, [2]) -getUniformLocation(1001, "u_Tex3") = 7006 -activeTexture(33987) -bindTexture(3553, 0) -uniform1iv(7006, 1, [3]) -getUniformLocation(1001, "u_ColorMul") = 7007 -uniform4fv(7007, 1, [1, 1, 1, 1]) -getUniformLocation(1001, "u_ProgramType") = 7008 -getUniformLocation(1001, "u_Color") = 7009 -uniform4fv(7009, 1, [1, 1, 1, 0.49803922]) -getUniformLocation(1001, "u_GlobalAlpha") = 7010 -uniform1fv(7010, 1, [1]) -getUniformLocation(1001, "u_GlobalPixelScale") = 7011 -uniform1fv(7011, 1, [10]) -enable(3042) -blendEquationSeparate(32774, 32774) -blendFuncSeparate(1, 771, 1, 771) -disable(2884) -depthMask(true) -depthRangef(0.0, 1.0) -disable(2929) -disable(2960) -stencilMask(0) -drawArrays(5, 0, 10) \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ParticleEmitter.log b/korge/src/jvmTest/resources/korge/render/ParticleEmitter.log deleted file mode 100644 index 5a6dc4e61b..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ParticleEmitter.log +++ /dev/null @@ -1,30 +0,0 @@ -ParticleContainer[500]( -Particle[0](initialized=true,pos=(-214.4,-119.5),start=(0.0,0.0),velocity=(3.0,-93.1),scale=0.7,rotation=0.degrees,time=0.2/2.3,color=#ff4f008f,colorDelta=0.0,0.0,0.0,-0.3),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-43.6,scaleDelta=-0.3,emitRotation=270.9,emitRotationDelta=0.0 -Particle[1](initialized=true,pos=(-50.3,-9.9),start=(0.0,0.0),velocity=(-3.2,-109.3),scale=0.5,rotation=0.degrees,time=0.1/0.2,color=#ff4f005a,colorDelta=0.0,0.0,0.0,-2.9),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-475.5,scaleDelta=-2.0,emitRotation=270.2,emitRotationDelta=0.0 -Particle[2](initialized=true,pos=(-114.5,-23.5),start=(0.0,0.0),velocity=(2.6,-117.4),scale=1.2,rotation=0.degrees,time=0.2/3.4,color=#ff4f0094,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-29.4,scaleDelta=-0.3,emitRotation=271.6,emitRotationDelta=0.0 -Particle[3](initialized=true,pos=(-94.5,-22.5),start=(0.0,0.0),velocity=(2.8,-118.3),scale=1.0,rotation=0.degrees,time=0.2/1.6,color=#ff4f008a,colorDelta=0.0,0.0,0.0,-0.4),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-64.4,scaleDelta=-0.6,emitRotation=271.6,emitRotationDelta=0.0 -Particle[4](initialized=true,pos=(-89.8,-16.6),start=(0.0,0.0),velocity=(0.9,-92.3),scale=0.5,rotation=0.degrees,time=0.2/3.8,color=#ff4f0096,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-26.0,scaleDelta=-0.1,emitRotation=269.5,emitRotationDelta=0.0 -Particle[5](initialized=true,pos=(-90.5,-16.3),start=(0.0,0.0),velocity=(-2.6,-90.7),scale=0.5,rotation=0.degrees,time=0.2/3.1,color=#ff4f0094,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-32.2,scaleDelta=-0.1,emitRotation=269.0,emitRotationDelta=0.0 -Particle[6](initialized=true,pos=(-85.6,-20.8),start=(0.0,0.0),velocity=(-3.6,-122.6),scale=0.7,rotation=0.degrees,time=0.2/2.7,color=#ff4f0094,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-37.1,scaleDelta=-0.2,emitRotation=270.6,emitRotationDelta=0.0 -Particle[7](initialized=true,pos=(-79.7,-18.0),start=(0.0,0.0),velocity=(2.2,-112.4),scale=0.8,rotation=0.degrees,time=0.1/0.4,color=#ff4f005b,colorDelta=0.0,0.0,0.0,-1.6),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-261.7,scaleDelta=-2.9,emitRotation=269.0,emitRotationDelta=0.0 -Particle[8](initialized=true,pos=(-75.3,-13.6),start=(0.0,0.0),velocity=(-2.2,-90.8),scale=0.6,rotation=0.degrees,time=0.1/0.4,color=#ff4f0061,colorDelta=0.0,0.0,0.0,-1.6),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-255.9,scaleDelta=-1.9,emitRotation=271.6,emitRotationDelta=0.0 -Particle[9](initialized=true,pos=(-69.9,-10.5),start=(0.0,0.0),velocity=(0.5,-74.8),scale=0.5,rotation=0.degrees,time=0.1/3.5,color=#ff4f0097,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-29.0,scaleDelta=-0.1,emitRotation=268.9,emitRotationDelta=0.0 -Particle[10](initialized=true,pos=(-69.8,-14.1),start=(0.0,0.0),velocity=(1.1,-100.6),scale=1.1,rotation=0.degrees,time=0.1/1.2,color=#ff4f008b,colorDelta=0.0,0.0,0.0,-0.5),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-81.8,scaleDelta=-0.9,emitRotation=268.8,emitRotationDelta=0.0 -Particle[11](initialized=true,pos=(-64.5,-13.9),start=(0.0,0.0),velocity=(3.7,-107.2),scale=1.3,rotation=0.degrees,time=0.1/2.8,color=#ff4f0096,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-35.9,scaleDelta=-0.4,emitRotation=271.3,emitRotationDelta=0.0 -Particle[12](initialized=true,pos=(-59.6,-12.9),start=(0.0,0.0),velocity=(3.5,-107.6),scale=1.6,rotation=0.degrees,time=0.1/1.8,color=#ff4f0093,colorDelta=0.0,0.0,0.0,-0.3),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-55.5,scaleDelta=-0.9,emitRotation=271.5,emitRotationDelta=0.0 -Particle[13](initialized=true,pos=(-54.9,-11.3),start=(0.0,0.0),velocity=(1.2,-102.9),scale=0.4,rotation=0.degrees,time=0.1/1.5,color=#ff4f0092,colorDelta=0.0,0.0,0.0,-0.4),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-67.5,scaleDelta=-0.2,emitRotation=270.0,emitRotationDelta=0.0 -Particle[14](initialized=true,pos=(-55.4,-11.7),start=(0.0,0.0),velocity=(-3.3,-106.6),scale=1.2,rotation=0.degrees,time=0.1/2.6,color=#ff4f0097,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-39.1,scaleDelta=-0.4,emitRotation=271.9,emitRotationDelta=0.0 -Particle[15](initialized=true,pos=(-50.2,-11.1),start=(0.0,0.0),velocity=(-1.7,-111.2),scale=0.7,rotation=0.degrees,time=0.1/1.8,color=#ff4f0095,colorDelta=0.0,0.0,0.0,-0.3),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-56.0,scaleDelta=-0.4,emitRotation=270.8,emitRotationDelta=0.0 -Particle[16](initialized=true,pos=(-44.7,-10.0),start=(0.0,0.0),velocity=(3.4,-111.2),scale=1.2,rotation=0.degrees,time=0.1/3.0,color=#ff4f0099,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-33.3,scaleDelta=-0.3,emitRotation=269.4,emitRotationDelta=0.0 -Particle[17](initialized=true,pos=(-39.8,-6.1),start=(0.0,0.0),velocity=(2.0,-76.1),scale=0.8,rotation=0.degrees,time=0.1/0.2,color=#ff4f0051,colorDelta=0.0,0.0,0.0,-3.8),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-609.0,scaleDelta=-7.8,emitRotation=271.5,emitRotationDelta=0.0 -Particle[18](initialized=true,pos=(-35.0,-4.9),start=(0.0,0.0),velocity=(-0.7,-70.5),scale=0.4,rotation=0.degrees,time=0.1/2.5,color=#ff4f0099,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-39.3,scaleDelta=-0.1,emitRotation=270.9,emitRotationDelta=0.0 -Particle[19](initialized=true,pos=(-34.9,-6.3),start=(0.0,0.0),velocity=(0.7,-90.2),scale=1.3,rotation=0.degrees,time=0.1/2.5,color=#ff4f0099,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-39.6,scaleDelta=-0.5,emitRotation=271.0,emitRotationDelta=0.0 -Particle[20](initialized=true,pos=(-30.0,-6.3),start=(0.0,0.0),velocity=(0.5,-104.5),scale=0.5,rotation=0.degrees,time=0.0/2.3,color=#ff4f0099,colorDelta=0.0,0.0,0.0,-0.3),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-43.7,scaleDelta=-0.2,emitRotation=268.3,emitRotationDelta=0.0 -Particle[21](initialized=true,pos=(-24.9,-4.2),start=(0.0,0.0),velocity=(1.1,-84.6),scale=1.1,rotation=0.degrees,time=0.0/3.7,color=#ff4f009b,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-27.3,scaleDelta=-0.3,emitRotation=271.5,emitRotationDelta=0.0 -Particle[22](initialized=true,pos=(-19.9,-4.5),start=(0.0,0.0),velocity=(2.7,-112.8),scale=0.4,rotation=0.degrees,time=0.0/0.7,color=#ff4f0094,colorDelta=0.0,0.0,0.0,-0.9),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-146.7,scaleDelta=-0.4,emitRotation=268.6,emitRotationDelta=0.0 -Particle[23](initialized=true,pos=(-20.1,-4.2),start=(0.0,0.0),velocity=(-2.4,-104.3),scale=0.6,rotation=0.degrees,time=0.0/0.7,color=#ff4f0095,colorDelta=0.0,0.0,0.0,-0.9),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-139.9,scaleDelta=-0.6,emitRotation=269.3,emitRotationDelta=0.0 -Particle[24](initialized=true,pos=(-15.0,-2.1),start=(0.0,0.0),velocity=(1.3,-71.6),scale=1.3,rotation=0.degrees,time=0.0/1.8,color=#ff4f009b,colorDelta=0.0,0.0,0.0,-0.3),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-54.7,scaleDelta=-0.6,emitRotation=271.5,emitRotationDelta=0.0 -Particle[25](initialized=true,pos=(-9.9,-2.2),start=(0.0,0.0),velocity=(3.2,-108.1),scale=0.5,rotation=0.degrees,time=0.0/3.5,color=#ff4f009d,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-28.9,scaleDelta=-0.1,emitRotation=270.3,emitRotationDelta=0.0 -Particle[26](initialized=true,pos=(-5.0,-0.7),start=(0.0,0.0),velocity=(1.6,-71.1),scale=0.4,rotation=0.degrees,time=0.0/3.0,color=#ff4f009d,colorDelta=0.0,0.0,0.0,-0.2),radialAcceleration=0.0,tangentialAcceleration=0.0,emitRadius=100.0,emitRadiusDelta=-33.9,scaleDelta=-0.1,emitRotation=268.2,emitRotationDelta=0.0 -) - diff --git a/korge/src/jvmTest/resources/korge/render/TileMapTest.log b/korge/src/jvmTest/resources/korge/render/TileMapTest.log deleted file mode 100644 index 6bc8977d6f..0000000000 --- a/korge/src/jvmTest/resources/korge/render/TileMapTest.log +++ /dev/null @@ -1,6 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=640, height=480, hasDepth=true, hasStencil=true, samples=1), color=#000000ff, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=640, height=480, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(261888)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(10912)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(10912))]), indices=AGBuffer(32736), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.003125, 0, 0, 0, 0, -0.004166667, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=16368, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=640, height=480, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(261888)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(10912)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(10912))]), indices=AGBuffer(32736), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.003125, 0, 0, 0, 0, -0.004166667, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=16368, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=640, height=480, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(261888)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(10912)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(10912))]), indices=AGBuffer(32736), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.003125, 0, 0, 0, 0, -0.004166667, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=16368, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=640, height=480, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(174336)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(7264)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(7264))]), indices=AGBuffer(21792), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.003125, 0, 0, 0, 0, -0.004166667, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=10896, instances=1) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ViewFilterRetina.log b/korge/src/jvmTest/resources/korge/render/ViewFilterRetina.log deleted file mode 100644 index 104dba5ce9..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ViewFilterRetina.log +++ /dev/null @@ -1,28 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -finish() -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex, effectTextureSize, colorMatrix, blendRatio]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], colorMatrix=AGUniformValue[Uniform(colorMatrix)][AGValue[Mat4]([[0.33, 0.33, 0.33, 0, 0.59, 0.59, 0.59, 0, 0.11, 0.11, 0.11, 0, 0, 0, 0, 1]])], blendRatio=AGUniformValue[Uniform(blendRatio)][AGValue[Float1]([[1]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.0015625, 0, 0, 0, 0, -0.0027777778, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=2560, height=1440), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex, effectTextureSize, colorMatrix, blendRatio]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], colorMatrix=AGUniformValue[Uniform(colorMatrix)][AGValue[Mat4]([[0.33, 0.33, 0.33, 0, 0.59, 0.59, 0.59, 0, 0.11, 0.11, 0.11, 0, 0, 0, 0, 1]])], blendRatio=AGUniformValue[Uniform(blendRatio)][AGValue[Float1]([[1]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=null, cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex, effectTextureSize, colorMatrix, blendRatio]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], colorMatrix=AGUniformValue[Uniform(colorMatrix)][AGValue[Mat4]([[0.33, 0.33, 0.33, 0, 0.59, 0.59, 0.59, 0, 0.11, 0.11, 0.11, 0, 0, 0, 0, 1]])], blendRatio=AGUniformValue[Uniform(blendRatio)][AGValue[Float1]([[1]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.0015625, 0, 0, 0, 0, -0.0027777778, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=2560, height=1440), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ViewsJvmTest1.log b/korge/src/jvmTest/resources/korge/render/ViewsJvmTest1.log deleted file mode 100644 index 86a71e226b..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ViewsJvmTest1.log +++ /dev/null @@ -1,3 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), color=#000000ff, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.0015625, 0, 0, 0, 0, -0.0027777778, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=10,10,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestFilter.log b/korge/src/jvmTest/resources/korge/render/ViewsJvmTestFilter.log deleted file mode 100644 index 26e3e12d2c..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestFilter.log +++ /dev/null @@ -1,9 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), color=#000000ff, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.03125, 0, 0, 0, 0, 0.03125, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=10,10,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=64, height=64), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex, effectTextureSize, colorMatrix, blendRatio]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.03125, 0, 0, 0, 0, 0.03125, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[64, 64]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[0.15625, 0.15625]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.015625, 0.015625]])], colorMatrix=AGUniformValue[Uniform(colorMatrix)][AGValue[Mat4]([[0.33, 0.33, 0.33, 0, 0.59, 0.59, 0.59, 0, 0.11, 0.11, 0.11, 0, 0, 0, 0, 1]])], blendRatio=AGUniformValue[Uniform(blendRatio)][AGValue[Float1]([[1]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=64, height=64), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=64, height=64, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex, effectTextureSize, dist, weights, apply_alpha]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.03125, 0, 0, 0, 0, 0.03125, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[64, 64]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[0.1875, 0.1875]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.015625, 0.015625]])], weights=AGUniformValue[Uniform(weights)][AGValue[Mat3]([[-1, -1, -1, -1, 8, -1, -1, -1, -1]])], dist=AGUniformValue[Uniform(dist)][AGValue[Float1]([[1]])], apply_alpha=AGUniformValue[Uniform(apply_alpha)][AGValue[Float1]([[0]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=64, height=64), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=1280, height=720, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.0015625, 0, 0, 0, 0, -0.0027777778, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=1280, height=720), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglFilterIdentityDefaultFrameBufferSize.log b/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglFilterIdentityDefaultFrameBufferSize.log deleted file mode 100644 index 01128ad91b..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglFilterIdentityDefaultFrameBufferSize.log +++ /dev/null @@ -1,186 +0,0 @@ -beforeDoRender(0) -getIntegerv(36006, Buffer(size=4)) -activeTexture(33984) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -viewport(0, 0, 128, 128) -bindFramebuffer(36160, 0) -disable(3089) -colorMask(true, true, true, true) -clearColor(0.0, 0.0, 0.0, 1.0) -depthMask(true) -clearDepthf(1.0) -stencilMask(-1) -clearStencil(0) -clear(17664) -viewport(0, 0, 128, 128) -genRenderbuffers(1, [5001]) -genFramebuffers(1, [4001]) -activeTexture(34015) -genTextures(1, [6001]) -bindTexture(3553, 6001) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -texImage2D(3553, 0, 6408, 128, 128, 0, 6408, 5121, null) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33984) -bindRenderbuffer(36161, 5001) -renderbufferStorage(36161, 36168, 128, 128) -bindRenderbuffer(36161, 0) -bindFramebuffer(36160, 4001) -framebufferTexture2D(36160, 36064, 3553, 6001, 0) -framebufferRenderbuffer(36160, 36128, 36161, 5001) -bindFramebuffer(36160, 4001) -clearColor(0.0, 0.0, 0.0, 0.0) -depthMask(true) -clearDepthf(1.0) -stencilMask(-1) -clearStencil(0) -clear(17664) -viewport(0, 0, 128, 128) -enable(3089) -scissor(0, 0, 128, 128) -genBuffers(1, [3001]) -bindBuffer(34962, 3001) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3002]) -bindBuffer(34962, 3002) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3003]) -bindBuffer(34962, 3003) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -createProgram() = 1001 -getString(35724) = -createShader(35632) = 2001 -shaderSource(2001, "...") -compileShader(2001) -getShaderiv(2001, 35713, [1]) -getError() = 0 -createShader(35633) = 2002 -shaderSource(2002, "...") -compileShader(2002) -getShaderiv(2002, 35713, [1]) -getError() = 0 -bindAttribLocation(1001, 1, "a_Tex") -bindAttribLocation(1001, 4, "a_TexIndex") -bindAttribLocation(1001, 5, "a_Wrap") -bindAttribLocation(1001, 2, "a_Col") -bindAttribLocation(1001, 3, "a_Col2") -bindAttribLocation(1001, 0, "a_Pos") -attachShader(1001, 2001) -attachShader(1001, 2002) -linkProgram(1001) -getProgramiv(1001, 35714, [0]) -useProgram(1001) -getUniformLocation(1001, "u_ProjMat") = 7001 -uniformMatrix4fv(7001, 1, false, [0.015625, 0, 0, 0, 0, 0.015625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]) -getUniformLocation(1001, "u_ViewMat") = 7002 -uniformMatrix4fv(7002, 1, false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) -getUniformLocation(1001, "u_Tex0") = 7003 -genTextures(1, [6002]) -bindTexture(3553, 6002) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -texImage2D(3553, 0, 6408, 6408, 5121, AwtNativeImage(128, 128)) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -uniform1iv(7003, 1, [0]) -getUniformLocation(1001, "u_Tex1") = 7004 -activeTexture(33985) -bindTexture(3553, 0) -uniform1iv(7004, 1, [1]) -getUniformLocation(1001, "u_Tex2") = 7005 -activeTexture(33986) -bindTexture(3553, 0) -uniform1iv(7005, 1, [2]) -getUniformLocation(1001, "u_Tex3") = 7006 -activeTexture(33987) -bindTexture(3553, 0) -uniform1iv(7006, 1, [3]) -enable(3042) -blendEquationSeparate(32774, 32774) -blendFuncSeparate(1, 771, 1, 771) -disable(2884) -depthMask(true) -depthRangef(0.0, 1.0) -disable(2929) -disable(2960) -stencilMask(0) -genBuffers(1, [3004]) -bindBuffer(34963, 3004) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -viewport(0, 0, 128, 128) -bindFramebuffer(36160, 0) -enable(3089) -scissor(0, 0, 1280, 720) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -genBuffers(1, [3005]) -bindBuffer(34962, 3005) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3006]) -bindBuffer(34962, 3006) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3007]) -bindBuffer(34962, 3007) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -uniformMatrix4fv(7001, 1, false, [0.015625, 0, 0, 0, 0, -0.015625, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]) -uniformMatrix4fv(7002, 1, false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) -activeTexture(33984) -bindTexture(3553, 6001) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -uniform1iv(7003, 1, [0]) -activeTexture(33985) -bindTexture(3553, 0) -activeTexture(33986) -bindTexture(3553, 0) -activeTexture(33987) -bindTexture(3553, 0) -genBuffers(1, [3008]) -bindBuffer(34963, 3008) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -flush() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglRenderToTextureWithStencil.log b/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglRenderToTextureWithStencil.log deleted file mode 100644 index fe21d7d3b7..0000000000 --- a/korge/src/jvmTest/resources/korge/render/ViewsJvmTestOpenglRenderToTextureWithStencil.log +++ /dev/null @@ -1,314 +0,0 @@ -beforeDoRender(0) -getIntegerv(36006, Buffer(size=4)) -activeTexture(33984) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -viewport(0, 0, 128, 128) -bindFramebuffer(36160, 0) -disable(3089) -colorMask(true, true, true, true) -clearColor(0.0, 0.0, 0.0, 1.0) -depthMask(true) -clearDepthf(1.0) -stencilMask(-1) -clearStencil(0) -clear(17664) -viewport(0, 0, 100, 100) -genRenderbuffers(1, [5001]) -genFramebuffers(1, [4001]) -activeTexture(34015) -genTextures(1, [6001]) -bindTexture(3553, 6001) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -texImage2D(3553, 0, 6408, 100, 100, 0, 6408, 5121, null) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33984) -bindRenderbuffer(36161, 5001) -renderbufferStorage(36161, 36168, 100, 100) -bindRenderbuffer(36161, 0) -bindFramebuffer(36160, 4001) -framebufferTexture2D(36160, 36064, 3553, 6001, 0) -framebufferRenderbuffer(36160, 36128, 36161, 5001) -bindFramebuffer(36160, 4001) -clearColor(0.0, 0.0, 0.0, 0.0) -depthMask(true) -clearDepthf(1.0) -stencilMask(-1) -clearStencil(0) -clear(17664) -viewport(0, 0, 100, 100) -enable(3089) -scissor(0, 0, 100, 100) -genBuffers(1, [3001]) -bindBuffer(34962, 3001) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3002]) -bindBuffer(34962, 3002) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3003]) -bindBuffer(34962, 3003) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -createProgram() = 1001 -getString(35724) = -createShader(35632) = 2001 -shaderSource(2001, "...") -compileShader(2001) -getShaderiv(2001, 35713, [1]) -getError() = 0 -createShader(35633) = 2002 -shaderSource(2002, "...") -compileShader(2002) -getShaderiv(2002, 35713, [1]) -getError() = 0 -bindAttribLocation(1001, 1, "a_Tex") -bindAttribLocation(1001, 4, "a_TexIndex") -bindAttribLocation(1001, 5, "a_Wrap") -bindAttribLocation(1001, 2, "a_Col") -bindAttribLocation(1001, 3, "a_Col2") -bindAttribLocation(1001, 0, "a_Pos") -attachShader(1001, 2001) -attachShader(1001, 2002) -linkProgram(1001) -getProgramiv(1001, 35714, [0]) -useProgram(1001) -getUniformLocation(1001, "u_ProjMat") = 7001 -uniformMatrix4fv(7001, 1, false, [0.02, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]) -getUniformLocation(1001, "u_ViewMat") = 7002 -uniformMatrix4fv(7002, 1, false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) -getUniformLocation(1001, "u_Tex0") = 7003 -genTextures(1, [6002]) -bindTexture(3553, 6002) -texParameteri(3553, 33084, 0) -texParameteri(3553, 33085, 0) -texImage2D(3553, 0, 6408, 1, 1, 0, 6408, 5121, Buffer(size=4)) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -uniform1iv(7003, 1, [0]) -getUniformLocation(1001, "u_Tex1") = 7004 -activeTexture(33985) -bindTexture(3553, 0) -uniform1iv(7004, 1, [1]) -getUniformLocation(1001, "u_Tex2") = 7005 -activeTexture(33986) -bindTexture(3553, 0) -uniform1iv(7005, 1, [2]) -getUniformLocation(1001, "u_Tex3") = 7006 -activeTexture(33987) -bindTexture(3553, 0) -uniform1iv(7006, 1, [3]) -enable(3042) -blendEquationSeparate(32774, 32774) -blendFuncSeparate(1, 771, 1, 771) -disable(2884) -depthMask(true) -depthRangef(0.0, 1.0) -disable(2929) -disable(2960) -stencilMask(0) -genBuffers(1, [3004]) -bindBuffer(34963, 3004) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -viewport(0, 0, 128, 128) -bindFramebuffer(36160, 0) -enable(3089) -scissor(0, 0, 1280, 720) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -genBuffers(1, [3005]) -bindBuffer(34962, 3005) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3006]) -bindBuffer(34962, 3006) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3007]) -bindBuffer(34962, 3007) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -uniformMatrix4fv(7001, 1, false, [0.015625, 0, 0, 0, 0, -0.015625, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]) -activeTexture(33984) -bindTexture(3553, 6002) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33985) -bindTexture(3553, 6001) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -uniform1iv(7004, 1, [1]) -activeTexture(33986) -bindTexture(3553, 0) -activeTexture(33987) -bindTexture(3553, 0) -genBuffers(1, [3008]) -bindBuffer(34963, 3008) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -viewport(0, 0, 100, 100) -activeTexture(34015) -bindTexture(3553, 6001) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33987) -bindRenderbuffer(36161, 5001) -renderbufferStorage(36161, 34041, 100, 100) -bindRenderbuffer(36161, 0) -bindFramebuffer(36160, 4001) -framebufferTexture2D(36160, 36064, 3553, 6001, 0) -framebufferRenderbuffer(36160, 33306, 36161, 5001) -bindFramebuffer(36160, 4001) -disable(3089) -clearColor(0.0, 0.0, 0.0, 0.0) -depthMask(true) -clearDepthf(1.0) -stencilMask(-1) -clearStencil(0) -clear(17664) -viewport(0, 0, 100, 100) -enable(3089) -scissor(0, 0, 100, 100) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -genBuffers(1, [3009]) -bindBuffer(34962, 3009) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3010]) -bindBuffer(34962, 3010) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3011]) -bindBuffer(34962, 3011) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -uniformMatrix4fv(7001, 1, false, [0.02, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]) -activeTexture(33984) -bindTexture(3553, 6002) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33985) -bindTexture(3553, 0) -uniform1iv(7004, 1, [1]) -activeTexture(33986) -bindTexture(3553, 0) -activeTexture(33987) -bindTexture(3553, 0) -disable(2960) -stencilMask(0) -genBuffers(1, [3012]) -bindBuffer(34963, 3012) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -viewport(0, 0, 128, 128) -bindFramebuffer(36160, 0) -enable(3089) -scissor(0, 0, 1280, 720) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -genBuffers(1, [3013]) -bindBuffer(34962, 3013) -bufferData(34962, 96, Buffer(size=96), 35044) -enableVertexAttribArray(0) -vertexAttribPointer(0, 2, 5126, false, 24, 0) -enableVertexAttribArray(1) -vertexAttribPointer(1, 2, 5126, false, 24, 8) -enableVertexAttribArray(2) -vertexAttribPointer(2, 4, 5121, true, 24, 16) -enableVertexAttribArray(3) -vertexAttribPointer(3, 4, 5121, true, 24, 20) -genBuffers(1, [3014]) -bindBuffer(34962, 3014) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(4) -vertexAttribPointer(4, 1, 5121, false, 1, 0) -genBuffers(1, [3015]) -bindBuffer(34962, 3015) -bufferData(34962, 4, Buffer(size=4), 35044) -enableVertexAttribArray(5) -vertexAttribPointer(5, 1, 5121, false, 1, 0) -uniformMatrix4fv(7001, 1, false, [0.015625, 0, 0, 0, 0, -0.015625, 0, 0, 0, 0, -1, 0, -1, 1, 0, 1]) -activeTexture(33984) -bindTexture(3553, 6002) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -activeTexture(33985) -bindTexture(3553, 6001) -texParameteri(3553, 10242, 33071) -texParameteri(3553, 10243, 33071) -texParameteri(3553, 10241, 9729) -texParameteri(3553, 10240, 9729) -uniform1iv(7004, 1, [1]) -activeTexture(33986) -bindTexture(3553, 0) -activeTexture(33987) -bindTexture(3553, 0) -genBuffers(1, [3016]) -bindBuffer(34963, 3016) -bufferData(34963, 12, Buffer(size=12), 35044) -drawElements(4, 6, 5123, 0) -disableVertexAttribArray(0) -disableVertexAttribArray(1) -disableVertexAttribArray(2) -disableVertexAttribArray(3) -disableVertexAttribArray(4) -disableVertexAttribArray(5) -flush() \ No newline at end of file diff --git a/korge/src/jvmTest/resources/korge/view/ref/TransitionTest.log b/korge/src/jvmTest/resources/korge/view/ref/TransitionTest.log deleted file mode 100644 index 89bc5fc73e..0000000000 --- a/korge/src/jvmTest/resources/korge/view/ref/TransitionTest.log +++ /dev/null @@ -1,7 +0,0 @@ -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=800, height=600, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -finish() -AGClear(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=800, height=600, hasDepth=true, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGClear(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), color=#00000000, depth=1.0, stencil=0, clearColor=true, clearDepth=true, clearStencil=true) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=false), frameBufferInfo=AGFrameBufferInfo(width=512, height=512, hasDepth=false, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=BatchBuilder2D.Tinted.NoAdd, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.00390625, 0, 0, 0, 0, 0.00390625, 0, 0, 0, 0, -1, 0, -1, -1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=1,1,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=0, y=0, width=512, height=512), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -AGBatch(frameBuffer=AGFrameBufferBase(isMain=true), frameBufferInfo=AGFrameBufferInfo(width=800, height=600, hasDepth=true, hasStencil=true, samples=1), vertexData=AGVertexArrayObject(list=[AGVertexData(layout=VertexLayout[a_Pos, a_Tex, a_Col, a_Col2], buffer=AGBuffer(96)), AGVertexData(layout=VertexLayout[a_TexIndex], buffer=AGBuffer(4)), AGVertexData(layout=VertexLayout[a_Wrap], buffer=AGBuffer(4))]), indices=AGBuffer(12), indexType=USHORT, program=Program(name=program-null-null, attributes=[a_Tex, a_TexIndex, a_Wrap, a_Col, a_Col2, a_Pos], uniforms=[u_ProjMat, u_ViewMat, u_Tex0, u_Tex1, u_Tex2, u_Tex3, u_Mask, u_MaxTexCoords, u_Reversed, u_Ratio, u_Smooth]), uniforms=AGUniformValues(u_ProjMat=AGUniformValue[Uniform(u_ProjMat)][AGValue[Mat4]([[0.0029296875, 0, 0, 0, 0, -0.00390625, 0, 0, 0, 0, -1, 0, -0.7480469, 1, 0, 1]])], u_ViewMat=AGUniformValue[Uniform(u_ViewMat)][AGValue[Mat4]([[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]])], u_Tex0=AGUniformValue[Uniform(u_Tex0)][AGValue[Sampler2D]([[-1],AGTexture(size=512,512,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])], u_Tex1=AGUniformValue[Uniform(u_Tex1)][AGValue[Sampler2D]([[-1]])], u_Tex2=AGUniformValue[Uniform(u_Tex2)][AGValue[Sampler2D]([[-1]])], u_Tex3=AGUniformValue[Uniform(u_Tex3)][AGValue[Sampler2D]([[-1]])], effectTextureSize=AGUniformValue[Uniform(effectTextureSize)][AGValue[Float2]([[512, 512]])], u_MaxTexCoords=AGUniformValue[Uniform(u_MaxTexCoords)][AGValue[Float2]([[1, 1]])], u_StdTexDerivates=AGUniformValue[Uniform(u_StdTexDerivates)][AGValue[Float2]([[0.001953125, 0.001953125]])], u_Ratio=AGUniformValue[Uniform(u_Ratio)][AGValue[Float1]([[0.5]])], u_Reversed=AGUniformValue[Uniform(u_Reversed)][AGValue[Float1]([[0]])], u_Smooth=AGUniformValue[Uniform(u_Smooth)][AGValue[Float1]([[1]])], u_filterScale=AGUniformValue[Uniform(u_filterScale)][AGValue[Float1]([[1]])], u_Mask=AGUniformValue[Uniform(u_Mask)][AGValue[Sampler2D]([[-1],AGTexture(size=64,64,pre=true),AGTextureUnitInfo(wrap=CLAMP_TO_EDGE, linear=true, trilinear=true)])]), blending=Blending(outRGB = (srcRGB * 1) + (dstRGB * (1 - srcA)), outA = (srcA * 1) + (dstA * (1 - srcA))), stencilOpFunc=AGStencilOpFunc(enabled=false, compareMode=ALWAYS, actions=[KEEP, KEEP, KEEP]), stencilRef=AGStencilReference(referenceValue=0, readMask=255, writeMask=255), colorMask=AGColorMask(RGBA), depthAndFrontFace=AGDepthAndFrontFace(data=33550336), scissor=Scissor(x=101, y=0, width=600, height=600), cullFace=NONE, drawType=TRIANGLES, drawOffset=0, vertexCount=6, instances=1) -finish() \ No newline at end of file diff --git a/korge/testGoldens/com.soywiz.korge.bitmapfont.BitmapFontTest/simple_0.png b/korge/testGoldens/com.soywiz.korge.bitmapfont.BitmapFontTest/simple_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ad479da13faefb6fdd0493c382b842005d542900 GIT binary patch literal 943 zcmd6l|5FnL0L4ErjJY7!5Hd-I)cEEmWFZ5AgEeBiYR)m#({ZAC=9o2hFqlRhFafh^ zC{hZ7K@qD26;RKk5aO~c^t$L$DNIq*uF-iIK|*2sGkSOLy?Z}@-rIUzR-kCH2nf__ z)CO;-d%aL7@TSN;6bL@``j?HF-Z^OINeRuHY0sr)Bbm>Us$lOrqLwgcr+XU%7Ooed zis#gJ`gZVdDIN!Xuah2!IDqgc__Y{ICY@$xolKPT+6!z-r`JlFf+fL>IQY!WnnY&a zVYd-qAI7UVXCq}9Pc3B7jysYnz z#$PA7e1wiSndqRSloij=U}d0|$+Ik9%1t+NDW8@RAHlUY4qN&2JUS&`zK6SC%$o-VmOWi(me%j%Q(~a@F%#kLU&(*8Hhb9Q}Tf2Mis?+`5#R6xkYg)c1IY z^>!nJrOPgSUXthf{%4gYsQ*fPqIw`_cmMv!{o0O694@4}>rZbg3Gu(Yer)B6%GMM= zW$e30_J1qW9X|F*TE0E+fODq5=we-#MUgb#Y>QBaS6J-&c}E2%W6;RR7srYGF=sTO zGkE!}J1w))epSraqNwsc_k8Pq5l;73Kf1-_dUc<*ImS5WygAkR!~1qc?P%is@iiJx z{iNVPgKkLvN8yPNXTnkpb$pkk&pL`TZfdAo?s>3kdgyF&V?yffsk!#8X*CaB*2X^B U(`#4%_Kg=X+Dx6gQ@Gxy$@|*vz?k9$7mXf4r2iht++p?Gh z7?>OwI2afe7+4w@2AG542!{%W>H}xw7%(I#cIsg8E-b*A22BL8j0OwVxBv&s3f%_G c?4odw-Snr~?k7@;J`6zM>FVdQ&MBb@00AOyLjV8( literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.component.length.BindLengthComponentJvmTest/testPercent_1.png b/korge/testGoldens/com.soywiz.korge.component.length.BindLengthComponentJvmTest/testPercent_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a05b1781e2f494d4546238dc6abcbe5e84c115d0 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@ZfKP}k1H*qH^Z)<2eQ=X3O>IzL^r znbU!RgMm?jfu(^#fPra%IfKFxkYE_Nkob_w@U`J_Gy}^Zi4<^nV5W>4n-sYpunrzK j(k1o2^KcW!$S7}hWi#bMCoZ~e!~g`Iu6{1-oD!M59pP0V}vPC^z978H@y*+5i2$VXs u;H&@JOwI+9H!@aDKERkgu|QJn0UMJI1LMi53qpYk7(8A5T-G@yGywpNu^$Wo delta 354 zcmaFGbckhwiY;4!Plzi61H*p?2I>F3NL=BZG+ogP=t{FNXsQ(}e~Gmj{1LfdU*3 z%;(}E0tyVg7WE(jCV|G!*MTa40zk#*;+fZ{vM@E=W81)F!?=M-fWfRmnt`#wUtu0Y z7y}c7^a0)mh6CyX{tVhcQQik^4h#>3JJcIQfud{$%nA%2>N$@HAK-FeNMPQBBs{+FY#ybog3^hz2SwLpqV8~-&VX$kgV2WVmV5rMsWbSoOnDLR#$4IVGbDOlm z!3vgT;`s+&+!CA-wTDr;+dU!XBior(vWB<#gl# z08qqygS-d;U`YrDWFZpww$b!G0Du+)e1g1ue0)MeLU1@-e0+RrYHC(i*4?{z^YioX z-Md#*RCNFTeK$8Z7z}1%VF86g)zs9Kl$1`MJSi#n8}DU0pphGjn2MVs373VPRo$adByBiN#_qFE8J`dDGq9 z{oJ{8Mn*=Onwod++@VsbtE;OV4u{L-uCK52c)Yl{xJ#EVd3bo7KY!lD#6($Hxuc_l z&1P?IZfWzR-$?^daRuxZhOuzXKzF1 z#Uv+Kw8!agQ={R)s;6Pt`mlt7>|ohq)M8^q1U?Y%`mZ$HJYV{w!eL~4_FMN7I9ln( zVl@P!iLhx!3;^SbR*KWNVk$GNE)f%{J8%9`kN+i)&zS9;TBCDl?y)^Nwd_$=nB`0` zeo8ytJH77+-}KvWsafBz6&TcH{|M51UO)=qHWR%3?R77^1@#5E1~h+{@(>i{p(W2v zO6Zf%80E&MH9Z{a)G9M6w8=enVk5o6Q4>pjNeOU=cd3p0{x~t3@Yqj%!cpwl4{;7x zh)feax^^a&e)eU7=U-g)u;|fFOcJ9zN@1Z7_UzeP5gke=L7muV)_WZd8vSe2k$a}oTpDHYdJvZL`a9sVWV=VhA(`U{*SO1Y8H zKi}{~(Xfvn?M`0l4}N_^3aJNx-2qtuWC%#*04f0Z_!3bJu-e$d?xRrbXUd)^U0uxC zv{_gye(V3~?3GYL7s&Zm%!PDrXv(+Q(b7vzuyfRuxbxJVS<{f1kmRQzJ;Vc@k;#W0(<2dZf<5#Qp4qfBxb}n#88(=PMgnL5E{qC|O=gNZ!J+inG|I2S zEF8{k9|^KOu|dB^Az8n8L7)qh;J5krAI-JFLO{rU=t4LBd$wRa(Q4&6Y*X-UGQXR! z|Exd1|0rXgX8K(k0rcP~wE9YT*vMb4SPhjwY8_#7$wlC@_ihYkQ9|2D zD!J^K@wKwjLH`wxRBqvI!>x^fwTbO4uYQDHZhq6zqcq3Ao+hRj7CPYVZ24agn8OGq zsy%$~pGzAu27Xflc21-Lj0Mhe{1}5u2~6tojkAvhW5<;2rRbVd=K&)kvn0 z)%Q_dx7lk25eZR(iTPhE&{odut;vg8~PGW6A%8u?KEQXgtVcp4=}YzzEcUA8grX zSNZ(zv}-v`0t`$J3>*xM3Jfd_3^2|C=c9bLZ5yf?dXPmCO0K-xw0eF~@dI|KR#e>z o3^R_{GPp4?VH&K!Fr7d%2&Q`+(6#&boFyt=akR{02Bf{i~s-t literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N2.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N2.png new file mode 100644 index 0000000000000000000000000000000000000000..57315acf602ec92fc972690c661fb0e0c0250f57 GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@NfKP}kkp9oWApO5r2_#<< zlk25eZR(iTPhE&{odut;vg8~PGW6A%8u?KEQXgtVcp4=}YzzEcUA8grX zSNZ(zv}-v`0t`$J3>*xM3Jfd_3^2|C=c9bLZ5yf?dXPmCO0K-xw0eF~@dI|KR#e>z o3^R_{GPp4?VH&K!Fr7d%2&Q`+(6#&boFyt=akR{02Bf{i~s-t literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N3.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N3.png new file mode 100644 index 0000000000000000000000000000000000000000..57315acf602ec92fc972690c661fb0e0c0250f57 GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@NfKP}kkp9oWApO5r2_#<< zlk25eZR(iTPhE&{odut;vg8~PGW6A%8u?KEQXgtVcp4=}YzzEcUA8grX zSNZ(zv}-v`0t`$J3>*xM3Jfd_3^2|C=c9bLZ5yf?dXPmCO0K-xw0eF~@dI|KR#e>z o3^R_{GPp4?VH&K!Fr7d%2&Q`+(6#&boFyt=akR{02Bf{i~s-t literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N4.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testFSpritesN_N4.png new file mode 100644 index 0000000000000000000000000000000000000000..57315acf602ec92fc972690c661fb0e0c0250f57 GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@NfKP}kkp9oWApO5r2_#<< zlk25eZR(iTPhE&{odut;vg8~PGW6A%8u?KEQXgtVcp4=}YzzEcUA8grX zSNZ(zv}-v`0t`$J3>*xM3Jfd_3^2|C=c9bLZ5yf?dXPmCO0K-xw0eF~@dI|KR#e>z o3^R_{GPp4?VH&K!Fr7d%2&Q`+(6#&boFyt=akR{02Bf{i~s-t literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testGpuShapeViewFilter_0.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceGraphicsTest/testGpuShapeViewFilter_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd08b03c6c1fe107233410ea2bc96f0a2deea31 GIT binary patch literal 4599 zcmdT|S2P@4*VdxGh%$Oc9fIg3h#*QBqK#fcBBDi^Q6qwg9?^w}k}xrP?>*7YD8Xo> zMIF7DVU*vyzKiefzxyx#z1F@sXRW=@v(DaY?dRFi26~#*lx&m)1O(JzEp-S10b#UteF7 zlasTuvI+?aDJm)&7#KJ>I3y=0=jG+q)zx)(cW-QL9335zk&%&*kkHf9^YimRdi2QH z*x1d@Eg~Y~`}gm)wY7bHeaFYgmzS4DMn-q;+yQ|=3JMCAmX;qrd_W)&Q&UrPbaYl$ zR@vFvfByWrd-txjwe{ZK-s$P-)zuXR1qB-$o3ylaLPA1wbMxlrrntDczrVk{y!^|T zFXQ6kYHDi6$H!S%SR5T4b8~ZviHWJGsP5mt@9ys2(9p2Hz7B;#nVFfZs;XvZXFWVT z;BdH@nAo>(-%u#jvuDo+2M2d{b{;%<;OFNzFfdS9Sa@-9QBY8zudg2#7S_|#6B-)& z>eVX@2J_^}lY@f;2n52&$k^ZCzp}C-C@ARU{_fqon3$Ncu`yX$+1=e;9UYyL zk`gmBv!bFR003ZPW5dqQJ~=r_O-)@~TwGRGwz|4%Z*TwW*DpCaIW8`)&d$!Qt*!d{ zdOJJ2rlzLn&!6Y#=lAyZMn*;^B_&BpN~)=;!C){T5Qs*j=jZ1$GcyAN1AqMZF}=jf zecLMy-Vi;b+lv3cw3#UK0RjS=9i5O7+JNGTr~0!73jX`dpij9m?f??N)}5AGBe8Mc`r0g;z@os707nHQ{AgOB zQ!gexYkKIokk)m3d)Kx8p`rK<>g)*3+WXG44SUv}g|bb${l5P@qt{=<0{muLqRAmUeUo({3DLMAtN6;DSU zvPbD2iT0nA2np(0GlJ46kj(W z(2+-SkMa!NEN`rJcaB!sOTOv)lgkb^gXSS@B06B`P0`o5x%u^>=YBp9952FNBy{#%FN?qZtgjttrh{{6e>UMt}%f7+^ zHplyJI@Q5mWBm4#%l%KEHxzYmgKeLtSZJi?1q_IoEGn>K-;$a>tgWl{b9KvHmA=jb zFHgjs)=ePB<%Ve$3U^$0Fic+u5t~?DvlmuoZ}JJT7lci5S~UUqIG}*x8YAp<_8)dx=h-<=u;DtX%wCo~E&v8@h2%p+muHKHnb|2RnwBDKfq59=d+uXDc&=FOMzJ zo@*v0VlxD?=iVXpZPbxiy6BesTv<04z|nMQz7hAhdB*Ok`k_?W%5QWl-WB=Eai;#E zkN9*rNsvOFC-si9fl5jk*B!D`+QzlFE!`7$twd$`Tb;${bqCsmCY|1n8OLX@w7*A8 zw72{%Fs3gUU6h}7>A087sSz2M@|old2~}JQ2kR#uYOqY~#2N=kyCV@UUkm47blmmC znxAUrsD^hWZdVR9Zi1)Q(IyLDT`Pip^gc!na?;NjT@n@zVCJ*U zW{C))BiQqtPeHTR<9zEMU#)a?frVfDcQI6EXUcKg^Nd$AdvU1e(7;w|y1J|gP2rVB z`Jt3wKIZFp=YI6za~Vw!scupgyxRVi&X+@P7@KUwR(l&gg5ZxO0_7^fc3aZ!GxE+K zVMWQ4qZHd<$Rc6mu~MUJ*prFiz(8hv!2My~Y%TqpZYA#2;J`GO2dwHj!2SxfH9Z$y zWBD2=ql08dM<#H#-f|PCLB;zoFl!EMi=)~1sj2Td;=J&M;WKj`ne2>B?rjp)cZi|Z z0T_?V=!$=FnYem=_V>&z`A1(K77&Rc&5$0|-V}49?UH-l1npbR#B7EvYBeDi7Wljh zRi5yes_NY;U%=cT(#Du&Q6fQWSM@x3W_$c(M}H-}kz>9RlELr!kuv$CJcF)~2Ozf$ zADMY6kuf>i+ppgw>Cb+7(cvI$$f6;d(V1E5(!bo@>l1EqabVXru{1tZcDM5uIfakU zA=)XuD2`hA8M~6{>m`Bsb*H+gQ#4^t)9_hE_C5BZ!7)J3hJUSEi}yA{*o+FW2C!-E z0K-A`sT?M9(3%wt@8_EJbe5u!{4Mu==*zhRe87ju#MC$4R8PXGo(yx-%xC*jUrpyg zJ7CbLbM=*#tMe}{B#`uW<@6JZX4w9(ijLSt;?So(RD7wHDmaQT#-BY?qKTt*tsJX# z`t}}Hf+&CEX1_h7hANMG{NirKm;|jwlWAMmWMG)iAtrAd7})jruYue$3sfo~^m(kq z9q)Of5n_vhwqO>2pEd+kGvh|67(~A_2gXr_ZEwFm?up95zYFik`Ls1hD`B7eB4r$= zsh1{~BD%2g;-JCIHej$2+JBCbVQOc$MUTUeSfl30OuCi=JKXd-9J#t0OTV-NN=GM& zGuP4ma7GPuWKSe2;!h{Cxubi|r>_?wMEsrTUmm4RB>LTNhI!sRk665b7E?Rj)< z!eKw%yerXmXSsK#wU*LlM0%HOQWB z040Xt?9XLyLS|E6bMl7t9ZtT!B!irue8z-yk@74oDknUW6sE4;4C(~q_R!Hs)b&X9 zaC@Pu_h~njjlw8xeg;j;n#cNds`I|G?xkYw&H&!KTZ5|)q%DdRYmMnUMg`Nu#~C_v z9Np}Uqjsj%NJ)j%{q>pb%?K@m^k4oJXZ}e(n%^66!pLN!S;dTvq1U>$@+Bp*Fo$q! za{)jeV+)ae$%pw#TuNE(q1U^k`zac95vzj4R{+lmeu_?0{orsGW-+>a)zk;Fqqf{t zCYh9#NE=e3#BK`pT{pxvOR|^ilC(vq{2qj}Z)W%|jEH;qGUP&KZB>YL$`)SgL{ zF*jgu#FpDO+L+sRL^-U{`aUF_5ty%(@TWp6z>UAgbxe6JZ7-nY4!l}262 zZ3Z>260_|l{92wC9GAxgO(7T5ij`;+`2pJ}(0tVL4=0OsRaPXQz}|5A3Md|VdDTC# zm$AX7(1-eyHY+E$lJpg;u(G(qTKWTfm&{+wrE`%^^ukBdQ_g6W>n_+`L>{TerKwW} zt2(IKK$_6VK77#fuDeSUnB-9)8-K3x^l`awUoV&o;(bg!VM`3ckij{2?%A_F>cJgD zaZ_KTzbo?9RttA|!}B7W6iniX5?2nEmj4mRTH-_UWr5-{X0g5jY?D9A1kN-)SiXJ zViE6HTxzw3(T!>HL%i92cY>AG0;(O3@nX;{O~u567$ygxLyd)KoL6=vUw@#Cm_$<4 zPTn^qi>2&6NGvEcBq+?@+(q=9j}UhudU|G{JTV$@A$CfU*n3s`_J(l>Zab&2%9#dw zQouZvbq1Mpq1!w6Vm1b|6u~^T;SEo{-CRcR8vxI++m58`&z;f3G?`#}p?LfrXOCVM z;`mx?|G3cHxI!_=8XqXp`{bpjDu=vCr3+Xkk%6Jy8c{YqD%LIu{u{f zHTai+|0piqix#%#U_%s4^K|AcRp@*P%e&}ljvJA>9}VDGE!l=c7cOlh-r7I0y}q{?5IlACtTuV12mf=jq@ zz+WXl)0?4By~d#bQdbWVxu?kiA~g9**w?Dw`JJN~9I<~hZ-(9q)9=i;!5z!$AMy`n z-(9?y*0gUPGo9S#nkvPO8hyN$S_!@P)KqHsnJmDq%y~XZHbXZ}Dy1&3(ZOqk-}@eI zS~Ry;Y`apagwt3*uPG&WlgQLp(>>c{XB9Tu?@??pnW=yE!>LoJ=n}dm#I?QkH^4Bl zmp20PU*&;O6Y-gr-ikQHzIl^vnlJ#&=Qa!}93@RpO z8SCp3r*N)wTF?CWWN2wSS$=qBt+icxAmkd(SqFjlhMkp0ao(djmgf!Anr~gBDXZPFvzHj!&EsrMb##q{0 z0sw#s4-1V2fMwuPtzKbb2z7RfFe@@Atq&M1iJjq&u=k} z7KdXAdl&zU!l>#R09g4ZJoL-B-0>HW9!lywtx6eTCH;oZEc3u|qF&T%VI5%XI19V` z7-i|hTW5UOzBdF(^D}a6s?>?38P!ftGm#b|$b_TN4LFd!Z=?U@H`z5u<)tBShMd!a z3+n|m#HxGv&O5B(9;Xf7&*4%6jyIH(N@jbuMM!;yEHV2Yd+}zoQj&TOIa-U;Gv}tp zb`?~9&sm&$IGXslLdSrT@k$%JWL0*GqmEIF`E=n&R(mphT`dy)VlPdWT9IkqlpwYE z5h_(&9j0=9x!?`o9sR@PkEt$|tTSNM*t5V&79P14hV6Hza{Q5P)R(N+_b*LW9v+|X zoE{vCG_#xgjWJY~Bb%HQ)s_0iokjqDA?u*0%cV7Bsjz!_+H+==nazY>F73g3``M9k zsF@>z4yM-X(XDwhTf2+(ctjB?Rc&cH6dG|bqAdnA6fh(s0%UJlO3qQyBN~j>xOrxT zMoG^rIg7_Gzb))^$Z$R2^lj#Rbglnw{)i7l&|P&|#Un*Y!V;y3$7BKVm^+)f5tB!h z&@g=EpcqDI7!^*%$sa)TrDLz&W6<>03tnWlM5A92mgWh+2Cx29*#fmS;*L~I3p*$m z4A&Qo=SEglx0yL)+}z}ia{&a zF40O&RM6aRz0P5jHi}2-6nqxuUP&N`A?vRtup91azaZx$yF3tQdE5I_+#=l>7*#_R zW3J+kc+Xz#3i1>8vp?ug!6-JeHNS_4sBgw(0< z1F0t!jfy($$(En{I?L!HA*$3|DrA;}X_;|fQLfSxDa{+Qi1?%=-A&*29Y?9V{w#Cz zR}Jz4m3~(StkWOH8@uwY4DWJFTRJwS{tD^LRZI@PXl!fFC#q_4%6d2M*yqS1WLRy8 zPv_EMLG0!xAxrSU{;zuWPQj2w7WP=5*-UX{wos`^VDD>)*ZTXBJ#`h(jQ(1f>VE$K z7F>qQuyKMJOgf|GM(I{?sLUR(TO|3Q)}aW2DRIhPIxI? zf-L!`BD!L;Ehzc!(zo>GeBl}}sJf^@y*%RXX6TAyB^YF9l9ol>HRB6S#x#@B<7v&I z;M)Pl>Dp+mGxd3Qi5Zpx#X!YNP>lZoX4ro>Q?oUZ|8oQBvd-o@L5=q^M$?!6V>q4= JD%lAg{|6xeeTD!4 literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpenglShapeView_0.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpenglShapeView_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c71dcea018a02bf29b120d99b91d2fe654c274 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Y9LzwGKOFiyfD~JRPlzj!{{R2~(wp<|0$EHY zL4Lvi|DV`;|2U8n>gnPbQgQ3;jg5i~3LGp4kN@j7GY>lEQSSXfL6H%toGM^m*p@fG zE literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpengl_0.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceOpenglTest/testOpengl_0.png new file mode 100644 index 0000000000000000000000000000000000000000..64d80d8d6a1967687c6bd07927628c19e7a13c06 GIT binary patch literal 405 zcmV;G0c!q%k&XVl0hb`YN zmmEHLi3vS!QP;89o-9KabsHh2w7)%CI|9v;iaxRbjY(3FcyO2>DR$|U%!eQFtC4#s^YNUcnBwA{zq(m@xboEqX zBBEMX+Uy5Md<(%100000NkvXXu0mjf;QX!P literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ReferenceViewsTest/testClippedContainerInFlippedContainerInTexture_0.png b/korge/testGoldens/com.soywiz.korge.view.ReferenceViewsTest/testClippedContainerInFlippedContainerInTexture_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e9899d41c5d47f2b1b8a30f57662f3ea14849a GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@ZfKP}kkp2(E4FA2Bu5AR; z%q2m7!T7Fi*Ar-gYUOC9g;K0FRxb^>{^^6~tW$Y#iT|3AD(m2FG zgWtR-dW(%383Y)Z92htl7!?>;8tBA1@Sow6iupH2RI3{pd~mpd0T*~004jh0H6Q>zyJW?00941)ep1)000SeQchF<|NsC0|NsC0eodF30003^ zNklcrt?WzB_6h(6$>;VMb zV1~#XAvjKU2xT$HB@VJ9&N-WhKnbD~MrJ^UVNY0@8D*b-kRb_z9D@i2nW6wN>@^6A zteH@fK3Pa)mI!*qih+zNm#Y|g2)Bvcm@l#xjS9Ivq0R2EqB(W9FV-X3sq}`SaM!@P zY%osZhHo;n{Nx{DqmpHm%+FmXt+HTUj`5M>3j`rV5YS2uAArsgmrGaAkIe!7S?PBN zbPN$7P83Xx2yp~-UA<$?{Q8c&gPCh>t-TKWoA$YAt=4+X&Zmg&vilS%LrPCUfn9Rb zNeZTQE~|VteF4NBWp+*COy^8!*~o*_P9w|-)#ZOdjE71YHQp1z0Hpw3^*r`=-7zC{ s-(y!VTJE=9`Mx9HLJ!|Be(as-4ONO~BYUB literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.TransitionViewTest/test_1.png b/korge/testGoldens/com.soywiz.korge.view.TransitionViewTest/test_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf99dcb02a9953d10c3352e22c581d94247cc1a GIT binary patch literal 290 zcmV+-0p0$IP)c1C2VFpiEKbLh*2~7Zr C79J!3 literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/name_0.png b/korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/name_0.png new file mode 100644 index 0000000000000000000000000000000000000000..666e1ba37ee5baf2373fb97fcef579ca39f2e811 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaYymzYt_=TyEQWmMI%gooR1)MD z{Qv)nt@n=ud6J$kjv*Ddk`o%3-7FH44luQKDNM3&>+EN+>t}F2y+tMkq}9{a&t;uc GLK6VWNFKTX literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/testFilter_0.png b/korge/testGoldens/com.soywiz.korge.view.ViewsJvmTest/testFilter_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d939e7cb31e411c6960932eff9c87d7ada2514 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaYymzYu0Z<#|Nl#G&c6#}F_i@Q z1^@qlV(b0mK%TUxi(^Q|t>lCSN(n6iJ~y7Ubt&AC=Qv=%!N4H3kU@U&rL-oXG6qjq KKbLh*2~7YdGb5@1 literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testIdentityFilterFor128x128_0.png b/korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testIdentityFilterFor128x128_0.png new file mode 100644 index 0000000000000000000000000000000000000000..19be13ef1a31acfb104e55b6e248c6187445b87f GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k8A#4*i(3Pv*aCb)T>k?Z3=EEog+LNaB|(0{ z|No!ZdjB|(cgWMlF{I+w+dBt&859JV9Jl;mwALx<+)X~UhrU6XvH9s93e*Ju9k}Xi h=lXE7PzyXc$ah78X?tz(u>g=CJzf1=);T3K0RXUvHL?Hz literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testRenderToTextureWithStencil_0.png b/korge/testGoldens/com.soywiz.korge.view.ViewsOpenglJvmTest/testRenderToTextureWithStencil_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5116f65a427f0a8d98cb5505ea450d344f7adf3c GIT binary patch literal 892 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@ZfKQ0)e;|VaM2KiUt^!ib zB|(0{|NsC0b>h((AWz=Y#WAGf*4s;lj0^@G%p3UrFM8hC%q+y~$+m~l)!)LGfl**! zkplw@D%!^Xz=RP^jQ-p~7cBG+f&oqz4D?6>x9m=-6@TTp@$xSy7kRq+xvX;M1%fy~fDm+OEOQ%R6t z@c;iOw%$Ju{an^LB{Ts5zc(=k literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.fast.FSpritesJvmTest/test_0.png b/korge/testGoldens/com.soywiz.korge.view.fast.FSpritesJvmTest/test_0.png new file mode 100644 index 0000000000000000000000000000000000000000..65cfd7259e4424882153fad068c1bea0c1c41d2b GIT binary patch literal 1139 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+Cx8@NfKQ0)|NsAi%+N!Z>p=1) zL4Lvi|DV`;|2P8!i{R?p=fPfStrz|h$vRxy z`IZ8WTv{xi!w%H%z`()4sKCI|z#zcD1m-LdVdy@R%TUI-h4F^^BQ6Jrzmf-jeizU< z?7)bk4$9$T*xV0>Qb_ILt z;~|LC255!Qqz} zLqj?+x)c;_cvu)1mha~|;3B}_S1;ADbb%FIdyUm0J5xdSgggNTmO~6{_?a3UBpS>k zw=i1#_kSYmcu(*N(*v;wf&vVO9T?8AFdAqwK3~awpemqNqC$rM#OkEbU98aPdd0w# zQ1zMN(^&<$(;%_8dM5972^9twv=D{GF3ca8@lF#N1`8I91V$5!mafe3YU l2|0!aX9l`h1PX1vEsUKn_FU`TP#?_z1fH&bF6*2UngAoM)JFgS literal 0 HcmV?d00001 diff --git a/korge/testGoldens/com.soywiz.korge.view.fast.MultiTextureFastRender/test_0.png b/korge/testGoldens/com.soywiz.korge.view.fast.MultiTextureFastRender/test_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b9609d5c04f9e7616a55c83a8ce2d7f62ca87d GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD8Ax&oe*=;XLIFM@uKz(S1_luI|Nno6{|8R5 z(`#}9^4Lm({DOf(KrnBww-Hd}mZytjNX4zUx1zaP3+`}v?fxMD{LFvz%PwDlf%DZ?`TmzL=Se|9l>hbh zU*EsX%z%OyGpl}ee^)%m3{y~bW!}Cm`LpJ=!N9f4U$Z~{yH)7`v-SL~%a!gZ3f_O) m`ndt2{+>TfDTw}`qyFp)XRnqb=PaNv89ZJ6T-G@yGywp2gM|A4 literal 0 HcmV?d00001 diff --git a/korgw/src/commonMain/kotlin/com/soywiz/korag/AG.kt b/korgw/src/commonMain/kotlin/com/soywiz/korag/AG.kt index 1f8c85df9b..bf64786e25 100644 --- a/korgw/src/commonMain/kotlin/com/soywiz/korag/AG.kt +++ b/korgw/src/commonMain/kotlin/com/soywiz/korag/AG.kt @@ -43,6 +43,15 @@ abstract class AG : AGFeatures, Extra by Extra.Mixin() { open fun startFrame() = Unit open fun endFrame() = Unit + inline fun startEndFrame(block: () -> T): T { + startFrame() + try { + return block() + } finally { + endFrame() + } + } + protected open fun execute(command: AGCommand) = Unit open fun clear( diff --git a/korgw/src/commonMain/kotlin/com/soywiz/korev/Events.kt b/korgw/src/commonMain/kotlin/com/soywiz/korev/Events.kt index c206e152b6..418adaea4f 100644 --- a/korgw/src/commonMain/kotlin/com/soywiz/korev/Events.kt +++ b/korgw/src/commonMain/kotlin/com/soywiz/korev/Events.kt @@ -500,6 +500,8 @@ class RenderEvent() : Event(), TEvent { this.update = other.update this.render = other.render } + + override fun toString(): String = "RenderEvent(update=$update, render=$render)" } class InitEvent() : TypedEvent(InitEvent) { diff --git a/korgw/src/commonMain/kotlin/com/soywiz/korgw/GameWindow.kt b/korgw/src/commonMain/kotlin/com/soywiz/korgw/GameWindow.kt index d15b0578d0..b007a42f68 100644 --- a/korgw/src/commonMain/kotlin/com/soywiz/korgw/GameWindow.kt +++ b/korgw/src/commonMain/kotlin/com/soywiz/korgw/GameWindow.kt @@ -115,6 +115,9 @@ open class GameWindowCoroutineDispatcher : CoroutineDispatcher(), Delay, Closeab @PublishedApi internal val tasks = Queue() @PublishedApi internal val timedTasks = PriorityQueue { a, b -> a.time.compareTo(b.time) } + + protected val _tasks: Queue get() = tasks + protected val _timedTasks: PriorityQueue get() = timedTasks val lock = NonRecursiveLock() fun hasTasks() = tasks.isNotEmpty() @@ -184,7 +187,7 @@ open class GameWindowCoroutineDispatcher : CoroutineDispatcher(), Delay, Closeab return finalResult as T } - fun executePending(availableTime: TimeSpan) { + open fun executePending(availableTime: TimeSpan) { try { val startTime = now() diff --git a/korgw/src/jvmMain/kotlin/com/soywiz/kgl/KmlGlContextDefault.kt b/korgw/src/jvmMain/kotlin/com/soywiz/kgl/KmlGlContextDefault.kt index 6543651aff..90d323cf1f 100644 --- a/korgw/src/jvmMain/kotlin/com/soywiz/kgl/KmlGlContextDefault.kt +++ b/korgw/src/jvmMain/kotlin/com/soywiz/kgl/KmlGlContextDefault.kt @@ -1,5 +1,6 @@ package com.soywiz.kgl +import com.soywiz.kds.lock.* import com.soywiz.klogger.* import com.soywiz.kmem.* import com.soywiz.kmem.Platform @@ -14,6 +15,8 @@ import com.soywiz.korgw.x11.* import com.soywiz.korio.lang.* import com.sun.jna.* import com.sun.jna.platform.win32.* +import kotlinx.coroutines.sync.* +import java.util.concurrent.Semaphore import java.util.concurrent.atomic.* val GLOBAL_HEADLESS_KML_CONTEXT by lazy { KmlGlContextDefault() } @@ -21,8 +24,10 @@ val GLOBAL_HEADLESS_KML_CONTEXT by lazy { KmlGlContextDefault() } actual fun KmlGlContextDefault(window: Any?, parent: KmlGlContext?): KmlGlContext = when { Platform.isMac -> MacKmlGlContextRaw(window, parent) //Platform.isMac -> MacKmlGlContextManaged(window, parent) + //Platform.isLinux -> LinuxKmlGlContext(window, parent) Platform.isLinux -> EGLKmlGlContext(window, parent) + //Platform.isWindows -> Win32KmlGlContext(window, parent) Platform.isWindows -> Win32KmlGlContextManaged(window, parent) else -> error("Unsupported OS ${Platform.os}") @@ -384,37 +389,12 @@ open class MacKmlGlContextManaged(window: Any? = null, parent: KmlGlContext? = n // http://renderingpipeline.com/2012/05/windowless-opengl-on-macos-x/ open class MacKmlGlContextRaw(window: Any? = null, parent: KmlGlContext? = null) : KmlGlContext(window, MacKmlGL(), parent) { - init { - CoreGraphics.CGMainDisplayID() - NSClass("NSOpenGLPixelFormat").alloc().msgSend("initWithAttributes:", intArrayOf(0)) // This might help initializing CoreGraphics? - } var ctx: com.sun.jna.Pointer? = run { - val attributes = Memory(intArrayOf( - // Let's not specify profile version, so we are using old shader syntax - //kCGLPFAOpenGLProfile, kCGLOGLPVersion_GL3_Core, - //kCGLPFAOpenGLProfile, kCGLOGLPVersion_GL4_Core, - kCGLPFAAccelerated, - kCGLPFAColorSize, 24, - kCGLPFADepthSize, 16, - kCGLPFAStencilSize, 8, - kCGLPFADoubleBuffer, - //kCGLPFASupersample, - 0, - )) - val num = Memory(4L).also { it.clear() } val ctx = Memory(8L).also { it.clear() } // void** - val pix = Memory(8L).also { it.clear() } // void** - checkError("CGLChoosePixelFormat", MacGL.CGLChoosePixelFormat(attributes, pix, num)) - checkError("CGLCreateContext", MacGL.CGLCreateContext(pix.getPointer(0L), (parent as? MacKmlGlContextRaw)?.ctx, ctx)) - checkError("CGLDestroyPixelFormat", MacGL.CGLDestroyPixelFormat(pix.getPointer(0L))) + checkError("CGLCreateContext", MacGL.CGLCreateContext(pix, (parent as? MacKmlGlContextRaw)?.ctx, ctx)) ctx.getPointer(0L) } - private fun checkError(name: String, value: Int): Int { - if (value != MacGL.kCGLNoError) error("Error in $name, errorCode=$value") - return value - } - override fun set() { checkError("CGLSetCurrentContext:ctx", MacGL.CGLSetCurrentContext(ctx)) } @@ -430,13 +410,56 @@ open class MacKmlGlContextRaw(window: Any? = null, parent: KmlGlContext? = null) override fun close() { if (ctx == null) return if (MacGL.CGLGetCurrentContext() == ctx) { - checkError("CGLSetCurrentContext", MacGL.CGLSetCurrentContext(null)) + checkError("CGLSetCurrentContext:null", MacGL.CGLSetCurrentContext(null)) } checkError("CGLDestroyContext", MacGL.CGLDestroyContext(ctx)) + //println("CGLDestroyContext") ctx = null } companion object { + + val pix: Pointer? by lazy { + //initializeMacOnce() + //CoreGraphics.CGMainDisplayID() + //NSClass("NSOpenGLPixelFormat").alloc().msgSend("initWithAttributes:", intArrayOf(0)) // This might help initializing CoreGraphics? + + //checkError("CGLDestroyPixelFormat", MacGL.CGLDestroyPixelFormat(pix)) + + val attributes = Memory(intArrayOf( + // Let's not specify profile version, so we are using old shader syntax + //kCGLPFAOpenGLProfile, kCGLOGLPVersion_GL3_Core, + //kCGLPFAOpenGLProfile, kCGLOGLPVersion_GL4_Core, + + kCGLPFAAccelerated, + kCGLPFAColorSize, 24, + kCGLPFADepthSize, 16, + kCGLPFAStencilSize, 8, + kCGLPFADoubleBuffer, + + //kCGLPFASupersample, + 0, + )) + val num = Memory(4L).also { it.clear() } + val pix = Memory(8L).also { it.clear() } // void** + try { + //println("ctx=${MacGL.CGLGetCurrentContext()}") + checkError("CGLChoosePixelFormat", MacGL.CGLChoosePixelFormat(attributes, pix, num).also { + //println("CGLChoosePixelFormat: num=${num.getInt(0L)}, pix=${pix.getPointer(0L)}") + }) + pix.getPointer(0L) + } catch (e: Throwable) { + e.printStackTrace() + null + } + } + + private fun checkError(name: String, value: Int): Int { + val error = MacGL.Error[value] + if (error != MacGL.Error.kCGLNoError) error("Error in $name, errorCode=$value : $error") + return value + } + // https://github.com/apitrace/apitrace/blob/master/retrace/glretrace_cgl.cpp const val kCGLPFAAccelerated = 73 const val kCGLPFAOpenGLProfile = 99 @@ -448,12 +471,12 @@ open class MacKmlGlContextRaw(window: Any? = null, parent: KmlGlContext? = null) const val kCGLOGLPVersion_GL4_Core = 0x4100 - const val kCGLPFAColorSize = 8 - const val kCGLPFAAlphaSize =11 - const val kCGLPFADepthSize =12 - const val kCGLPFAStencilSize =13 - const val kCGLPFAAccumSize =14 - const val kCGLPFADoubleBuffer =5 + const val kCGLPFAColorSize = 8 + const val kCGLPFAAlphaSize = 11 + const val kCGLPFADepthSize = 12 + const val kCGLPFAStencilSize = 13 + const val kCGLPFAAccumSize = 14 + const val kCGLPFADoubleBuffer = 5 } } diff --git a/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGLContext.kt b/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGLContext.kt index f9b8b99b89..f31f015a85 100644 --- a/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGLContext.kt +++ b/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGLContext.kt @@ -55,7 +55,9 @@ class MacosGLContext( val NSThread = NSClass("NSThread") val NSObject = NSClass("NSObject") - val pixelFormat = NSClass("NSOpenGLPixelFormat").alloc().msgSend("initWithAttributes:", attrs) + val pixelFormat = NSClass("NSOpenGLPixelFormat").alloc().msgSend("initWithAttributes:", attrs).also { + if (it == 0L) error("Can't initialize NSOpenGLPixelFormat") + } val openGLContext = NSClass("NSOpenGLContext").alloc().msgSend("initWithFormat:shareContext:", pixelFormat, sharedContext) init { diff --git a/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGameWindow.kt b/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGameWindow.kt index 7f1bc45365..88128691e7 100644 --- a/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGameWindow.kt +++ b/korgw/src/jvmMain/kotlin/com/soywiz/korgw/osx/MacosGameWindow.kt @@ -27,6 +27,9 @@ open class MacKmlGL : NativeKgl(DirectGL) interface MacGL : INativeGL, Library { + companion object : MacGL by NativeLoad(nativeOpenGLLibraryPath) { + } + //fun CGLSetParameter(vararg args: Any?): Int fun CGLEnable(ctx: Pointer?, enable: Int): Int fun CGLDisable(ctx: Pointer?, enable: Int): Int @@ -36,27 +39,35 @@ interface MacGL : INativeGL, Library { fun CGLSetCurrentContext(ctx: Pointer?): Int fun CGLGetCurrentContext(): Pointer? fun CGLDestroyContext(ctx: Pointer?): Int - - companion object : MacGL by NativeLoad(nativeOpenGLLibraryPath) { - const val kCGLNoError = 0 /* no error */ - const val kCGLBadAttribute = 10000 /* invalid pixel format attribute */ - const val kCGLBadProperty = 10001 /* invalid renderer property */ - const val kCGLBadPixelFormat = 10002 /* invalid pixel format */ - const val kCGLBadRendererInfo = 10003 /* invalid renderer info */ - const val kCGLBadContext = 10004 /* invalid context */ - const val kCGLBadDrawable = 10005 /* invalid drawable */ - const val kCGLBadDisplay = 10006 /* invalid graphics device */ - const val kCGLBadState = 10007 /* invalid context state */ - const val kCGLBadValue = 10008 /* invalid numerical value */ - const val kCGLBadMatch = 10009 /* invalid share context */ - const val kCGLBadEnumeration = 10010 /* invalid enumerant */ - const val kCGLBadOffScreen = 10011 /* invalid offscreen drawable */ - const val kCGLBadFullScreen = 10012 /* invalid fullscreen drawable */ - const val kCGLBadWindow = 10013 /* invalid window */ - const val kCGLBadAddress = 10014 /* invalid pointer */ - const val kCGLBadCodeModule = 10015 /* invalid code module */ - const val kCGLBadAlloc = 10016 /* invalid memory allocation */ - const val kCGLBadConnection = 10017 /* invalid CoreGraphics connection */ + fun CGLGetPixelFormat(ctx: Pointer?): Pointer? + + enum class Error(val id: Int) { + kCGLNoError (0), /* no error */ + kCGLBadAttribute (10000), /* invalid pixel format attribute */ + kCGLBadProperty (10001), /* invalid renderer property */ + kCGLBadPixelFormat (10002), /* invalid pixel format */ + kCGLBadRendererInfo (10003), /* invalid renderer info */ + kCGLBadContext (10004), /* invalid context */ + kCGLBadDrawable (10005), /* invalid drawable */ + kCGLBadDisplay (10006), /* invalid graphics device */ + kCGLBadState (10007), /* invalid context state */ + kCGLBadValue (10008), /* invalid numerical value */ + kCGLBadMatch (10009), /* invalid share context */ + kCGLBadEnumeration (10010), /* invalid enumerant */ + kCGLBadOffScreen (10011), /* invalid offscreen drawable */ + kCGLBadFullScreen (10012), /* invalid fullscreen drawable */ + kCGLBadWindow (10013), /* invalid window */ + kCGLBadAddress (10014), /* invalid pointer */ + kCGLBadCodeModule (10015), /* invalid code module */ + kCGLBadAlloc (10016), /* invalid memory allocation */ + kCGLBadConnection (10017), /* invalid CoreGraphics connection */ + kUnknownError (-1); + + companion object { + val VALUES = values().associateBy { it.id } + + operator fun get(id: Int): Error = VALUES[id] ?: kUnknownError + } } } diff --git a/korim/src/commonMain/kotlin/com/soywiz/korim/bitmap/Bitmap32.kt b/korim/src/commonMain/kotlin/com/soywiz/korim/bitmap/Bitmap32.kt index dc7cda81ff..170b29aaef 100644 --- a/korim/src/commonMain/kotlin/com/soywiz/korim/bitmap/Bitmap32.kt +++ b/korim/src/commonMain/kotlin/com/soywiz/korim/bitmap/Bitmap32.kt @@ -536,19 +536,50 @@ class Bitmap32( return MatchResult(sizeMatches = true, differentPixels = different, samePixels = same) } + fun diffEx(a: Bitmap, b: Bitmap): Bitmap32 { + val a32 = a.toBMP32IfRequired() + val b32 = b.toBMP32IfRequired() + val diff = diff(a32, b32) + var maxR = 0 + var maxG = 0 + var maxB = 0 + + diff.forEach { n, x, y -> + val c = diff[x, y] + maxR = max(maxR, c.r) + maxG = max(maxG, c.g) + maxB = max(maxB, c.b) + } + + //println("maxR=$maxR,$maxG,$maxB") + diff.forEach { n, x, y -> + val c = diff[x, y] + + diff[x, y] = RGBA.float( + if (maxR == 0) 0f else c.r / maxR.toFloat(), + if (maxG == 0) 0f else c.g / maxG.toFloat(), + if (maxB == 0) 0f else c.b / maxB.toFloat(), + 1f + ) + + //if (c.rf != 0f) println("diff=$c -> ${diff[x, y]}") + } + return diff + } + fun diff(a: Bitmap, b: Bitmap): Bitmap32 { if (a.width != b.width || a.height != b.height) throw IllegalArgumentException("$a not matches $b size") - val a32 = a.toBMP32() - val b32 = b.toBMP32() - val out = Bitmap32(a.width, a.height, premultiplied = true) + val a32 = a.toBMP32IfRequired() + val b32 = b.toBMP32IfRequired() + val out = Bitmap32(a.width, a.height, premultiplied = false) //showImageAndWait(a32) //showImageAndWait(b32) for (n in 0 until out.area) { - val c1 = a32.getRgbaPremultipliedAtIndex(n) - val c2 = b32.getRgbaPremultipliedAtIndex(n) + val c1 = a32.getRgbaAtIndex(n) + val c2 = b32.getRgbaAtIndex(n) //println("%02X, %02X, %02X".format(RGBA.getR(c1), RGBA.getR(c2), dr)) - out.setRgbaPremultipliedAtIndex(n, RGBAPremultiplied(abs(c1.r - c2.r), abs(c1.g - c2.g), abs(c1.b - c2.b), abs(c1.a - c2.a))) + out.ints[n] = RGBA(abs(c1.r - c2.r), abs(c1.g - c2.g), abs(c1.b - c2.b), abs(c1.a - c2.a)).value //println("$dr, $dg, $db, $da : ${out.data[n]}") } diff --git a/korim/src/jvmMain/kotlin/com/soywiz/korim/format/NativeImageFormatProviderJvm.kt b/korim/src/jvmMain/kotlin/com/soywiz/korim/format/NativeImageFormatProviderJvm.kt index 0bacd008fe..666c8ee4bf 100644 --- a/korim/src/jvmMain/kotlin/com/soywiz/korim/format/NativeImageFormatProviderJvm.kt +++ b/korim/src/jvmMain/kotlin/com/soywiz/korim/format/NativeImageFormatProviderJvm.kt @@ -23,14 +23,16 @@ object AwtNativeImageFormatProvider : NativeImageFormatProvider() { return AwtNativeImage(awtReadImageInWorker(data, props)).result(props) } - override suspend fun decodeInternal(vfs: Vfs, path: String, props: ImageDecodingProps): NativeImageResult = when (vfs) { - is LocalVfs -> AwtNativeImage(awtReadImageInWorker(File(path), props)) - else -> { - val bytes = vfs[path].readAll() - val bufferedImage = awtReadImageInWorker(bytes, props) - AwtNativeImage(bufferedImage) - } - }.result(props) + override suspend fun decodeInternal(vfs: Vfs, path: String, props: ImageDecodingProps): NativeImageResult { + return when (vfs) { + is LocalVfs -> AwtNativeImage(awtReadImageInWorker(File(path), props)) + else -> { + val bytes = vfs[path].readAll() + val bufferedImage = awtReadImageInWorker(bytes, props) + AwtNativeImage(bufferedImage) + } + }.result(props) + } override suspend fun encodeSuspend(image: ImageDataContainer, props: ImageEncodingProps): ByteArray { val imageWriter = getImageWritersByMIMEType(props.mimeType).next() diff --git a/korinject/src/commonMain/kotlin/com/soywiz/korinject/AsyncInjector.kt b/korinject/src/commonMain/kotlin/com/soywiz/korinject/AsyncInjector.kt index 20d97784b8..4e8ca04369 100644 --- a/korinject/src/commonMain/kotlin/com/soywiz/korinject/AsyncInjector.kt +++ b/korinject/src/commonMain/kotlin/com/soywiz/korinject/AsyncInjector.kt @@ -137,20 +137,24 @@ class AsyncInjector(val parent: AsyncInjector? = null, val level: Int = 0) { } inline fun getSync(ctx: RequestContext = RequestContext(T::class)): T = getSync(T::class, ctx) + inline fun getSyncOrNull(ctx: RequestContext = RequestContext(T::class)): T? = getSyncOrNull(T::class, ctx) fun getSync(clazz: KClass, ctx: RequestContext = RequestContext(clazz)): T { - lateinit var rresult: T + return getSyncOrNull(clazz, ctx) ?: throw RuntimeException("Couldn't get instance of type $clazz synchronously") + } + fun getSyncOrNull(clazz: KClass, ctx: RequestContext = RequestContext(clazz)): T? { + var rresult: T? = null var rexception: Throwable? = null suspend { - get(clazz, ctx) - }.startCoroutine(object : Continuation { + getOrNull(clazz, ctx) + }.startCoroutine(object : Continuation { override val context: CoroutineContext = EmptyCoroutineContext - override fun resumeWith(result: Result) { + override fun resumeWith(result: Result) { val exception = result.exceptionOrNull() if (exception != null) { rexception = exception } else { - rresult = result.getOrThrow() + rresult = result.getOrNull() } } }) diff --git a/korio/src/commonMain/kotlin/com/soywiz/korio/async/AsyncExt.kt b/korio/src/commonMain/kotlin/com/soywiz/korio/async/AsyncExt.kt index 4f9e78968f..8a52f6d488 100644 --- a/korio/src/commonMain/kotlin/com/soywiz/korio/async/AsyncExt.kt +++ b/korio/src/commonMain/kotlin/com/soywiz/korio/async/AsyncExt.kt @@ -66,7 +66,7 @@ fun asyncAsap(context: CoroutineContext, callback: suspend () -> T) = Corout expect fun asyncEntryPoint(callback: suspend () -> Unit) expect fun asyncTestEntryPoint(callback: suspend () -> Unit) -val DEFAULT_SUSPEND_TEST_TIMEOUT = 40.seconds +val DEFAULT_SUSPEND_TEST_TIMEOUT = 20.seconds fun suspendTest(timeout: TimeSpan?, callback: suspend CoroutineScope.() -> Unit) = asyncTestEntryPoint { if (timeout != null) withTimeout(timeout) { callback() } else coroutineScope { callback() } } //fun suspendTest(timeout: TimeSpan?, callback: suspend CoroutineScope.() -> Unit) = asyncEntryPoint { coroutineScope { callback() } }