From c78cca7a9e656f81511afff2f4ff7d2b6359df5e Mon Sep 17 00:00:00 2001 From: FMS-Cat Date: Mon, 29 Mar 2021 23:13:12 +0900 Subject: [PATCH] performance: NEAREST BufferRenderTarget --- src/entities/DeferredCamera.ts | 1 + src/entities/GPUParticles.ts | 2 ++ src/entities/PixelSorter.ts | 4 ++++ src/heck/BufferRenderTarget.ts | 5 +++++ 4 files changed, 12 insertions(+) diff --git a/src/entities/DeferredCamera.ts b/src/entities/DeferredCamera.ts index 096d1f4..920d261 100644 --- a/src/entities/DeferredCamera.ts +++ b/src/entities/DeferredCamera.ts @@ -35,6 +35,7 @@ export class DeferredCamera extends Entity { height: options.target.height, numBuffers: 4, name: 'DeferredCamera/cameraTarget', + filter: gl.NEAREST, } ); const camera = new PerspectiveCamera( { diff --git a/src/entities/GPUParticles.ts b/src/entities/GPUParticles.ts index 8e09a5a..feb8e48 100644 --- a/src/entities/GPUParticles.ts +++ b/src/entities/GPUParticles.ts @@ -42,10 +42,12 @@ export class GPUParticles extends Entity { new BufferRenderTarget( { ...brtOptions, name: process.env.DEV && `${ namePrefix }/swap0`, + filter: gl.NEAREST, } ), new BufferRenderTarget( { ...brtOptions, name: process.env.DEV && `${ namePrefix }/swap1`, + filter: gl.NEAREST, } ), ); diff --git a/src/entities/PixelSorter.ts b/src/entities/PixelSorter.ts index 6742773..39608f2 100644 --- a/src/entities/PixelSorter.ts +++ b/src/entities/PixelSorter.ts @@ -7,6 +7,7 @@ import { RenderTarget } from '../heck/RenderTarget'; import { Swap } from '@fms-cat/experimental'; import { auto } from '../globals/automaton'; import { dummyRenderTarget } from '../globals/dummyRenderTarget'; +import { gl } from '../globals/canvas'; import { quadGeometry } from '../globals/quadGeometry'; import pixelSorterFrag from '../shaders/pixel-sorter.frag'; import pixelSorterIndexFrag from '../shaders/pixel-sorter-index.frag'; @@ -38,11 +39,13 @@ export class PixelSorter extends Entity { width: options.target.width, height: options.target.height, name: process.env.DEV && 'PixelSorter/swap0', + filter: gl.NEAREST, } ), new BufferRenderTarget( { width: options.target.width, height: options.target.height, name: process.env.DEV && 'PixelSorter/swap1', + filter: gl.NEAREST, } ), ); @@ -50,6 +53,7 @@ export class PixelSorter extends Entity { width: options.target.width, height: options.target.height, name: process.env.DEV && 'PixelSorter/index', + filter: gl.NEAREST, } ); // -- bypass ----------------------------------------------------------------------------------- diff --git a/src/heck/BufferRenderTarget.ts b/src/heck/BufferRenderTarget.ts index 0466462..a479d0b 100644 --- a/src/heck/BufferRenderTarget.ts +++ b/src/heck/BufferRenderTarget.ts @@ -8,6 +8,7 @@ export interface BufferRenderTargetOptions { numBuffers?: number; isFloat?: boolean; name?: string; + filter?: GLenum; } export class BufferRenderTarget extends RenderTarget { @@ -61,6 +62,10 @@ export class BufferRenderTarget extends RenderTarget { this.height = options.height; this.numBuffers = options.numBuffers ?? 1; + if ( options.filter != null ) { + this.texture.textureFilter( options.filter ); + } + if ( process.env.DEV ) { this.name = options?.name; }