From b5370df461765cfaa5709d26240ae7a96c103e99 Mon Sep 17 00:00:00 2001 From: StrandedKitty Date: Thu, 28 Dec 2023 01:02:08 +0100 Subject: [PATCH] Don't use immutable textures for mipmap generation --- src/app/render/PassManager.ts | 14 ++++++-------- src/app/render/passes/TerrainTexturesPass.ts | 6 ++++-- .../renderer/webgl2-renderer/WebGL2Framebuffer.ts | 5 ++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/app/render/PassManager.ts b/src/app/render/PassManager.ts index 80ecca0e..06ecd657 100644 --- a/src/app/render/PassManager.ts +++ b/src/app/render/PassManager.ts @@ -232,7 +232,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 1}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store }, { texture: new TextureResourceDescriptor({ @@ -245,7 +245,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 1}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store }, { texture: new TextureResourceDescriptor({ @@ -258,7 +258,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 0}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store }, { texture: new TextureResourceDescriptor({ @@ -271,7 +271,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 0}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store }, { texture: new TextureResourceDescriptor({ @@ -284,7 +284,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 0}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store }, { texture: new TextureResourceDescriptor({ @@ -297,7 +297,7 @@ export default class PassManager { mipmaps: false }), clearValue: {r: 0, g: 0, b: 0, a: 0}, - loadOp: RendererTypes.AttachmentLoadOp.Load, + loadOp: RendererTypes.AttachmentLoadOp.Clear, storeOp: RendererTypes.AttachmentStoreOp.Store } ], @@ -996,8 +996,6 @@ export default class PassManager { magFilter: RendererTypes.MagFilter.Nearest, wrap: RendererTypes.TextureWrap.ClampToEdge, mipmaps: true, - isImmutable: true, - immutableLevels: 6 }), clearValue: {r: 0, g: 0, b: 0, a: 0}, loadOp: RendererTypes.AttachmentLoadOp.Load, diff --git a/src/app/render/passes/TerrainTexturesPass.ts b/src/app/render/passes/TerrainTexturesPass.ts index f3880ac1..5c3e1403 100644 --- a/src/app/render/passes/TerrainTexturesPass.ts +++ b/src/app/render/passes/TerrainTexturesPass.ts @@ -226,7 +226,9 @@ export default class TerrainTexturesPass extends Pass<{ } } - this.renderer.useMaterial(this.heightDownscaleMaterial); + heightTex.generateMipmaps(); + + /*this.renderer.useMaterial(this.heightDownscaleMaterial); for (let layer = 0; layer < 2; layer++) { if (!heightLoadersUpdateFlags[layer]) { @@ -254,7 +256,7 @@ export default class TerrainTexturesPass extends Pass<{ heightTex.baseLevel = 0; heightTex.maxLevel = 10000; - heightTex.updateBaseAndMaxLevel(); + heightTex.updateBaseAndMaxLevel();*/ this.renderer.useMaterial(this.normalMaterial); diff --git a/src/lib/renderer/webgl2-renderer/WebGL2Framebuffer.ts b/src/lib/renderer/webgl2-renderer/WebGL2Framebuffer.ts index b86c12d7..d97cfab2 100644 --- a/src/lib/renderer/webgl2-renderer/WebGL2Framebuffer.ts +++ b/src/lib/renderer/webgl2-renderer/WebGL2Framebuffer.ts @@ -250,6 +250,9 @@ export default class WebGL2Framebuffer { case RendererTypes.TextureFormat.RGBA8Unorm: this.gl.clearBufferfv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Float32Array, clearValue)); return; + case RendererTypes.TextureFormat.RGB8Unorm: + this.gl.clearBufferfv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Float32Array, clearValue)); + return; case RendererTypes.TextureFormat.R8Unorm: this.gl.clearBufferfv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Float32Array, clearValue)); return; @@ -272,7 +275,7 @@ export default class WebGL2Framebuffer { this.gl.clearBufferfv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Float32Array, clearValue)); return; case RendererTypes.TextureFormat.R32Uint: - this.gl.clearBufferfv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Float32Array, clearValue)); + this.gl.clearBufferuiv(WebGL2Constants.COLOR, drawBuffer, WebGL2Framebuffer.clearValueToTypedArray(Uint32Array, clearValue)); return; }