simplify more
This commit is contained in:
parent
f03da42b5e
commit
2fe3c69963
40 changed files with 690 additions and 873 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import { createBindGroupCache } from '../../utils/graphics/bind-group-cache';
|
||||
import {
|
||||
createCachedFloat32BufferWrite,
|
||||
writeFloat32BufferIfChanged,
|
||||
|
|
@ -6,9 +7,16 @@ import { setUpFullScreenQuad } from '../../utils/graphics/full-screen-quad';
|
|||
import { smartCompile } from '../../utils/graphics/smart-compile';
|
||||
import { rgbChannelToUnit, type RgbColor } from '../../utils/rgb-color';
|
||||
import { CommonState } from '../common-state/common-state';
|
||||
import { RenderSettings } from './render-settings';
|
||||
import shader from './render.wgsl?raw';
|
||||
|
||||
export interface RenderSettings {
|
||||
clarity: number;
|
||||
renderTraceNormalizationFloor: number;
|
||||
renderBrushColorBase: number;
|
||||
renderBrushColorStrengthMultiplier: number;
|
||||
backgroundGrainStrength: number;
|
||||
}
|
||||
|
||||
export class RenderPipeline {
|
||||
private static readonly UNIFORM_COUNT = 20;
|
||||
|
||||
|
|
@ -21,10 +29,17 @@ export class RenderPipeline {
|
|||
RenderPipeline.UNIFORM_COUNT
|
||||
);
|
||||
|
||||
private readonly bindGroupsByTexture = new WeakMap<
|
||||
GPUTextureView,
|
||||
WeakMap<GPUTextureView, GPUBindGroup>
|
||||
>();
|
||||
private readonly getBindGroup = createBindGroupCache<GPUTextureView, GPUTextureView>(
|
||||
(colorTexture, sourceTexture) =>
|
||||
this.device.createBindGroup({
|
||||
layout: this.bindGroupLayout,
|
||||
entries: [
|
||||
{ binding: 0, resource: { buffer: this.uniforms } },
|
||||
{ binding: 2, resource: colorTexture },
|
||||
{ binding: 3, resource: sourceTexture },
|
||||
],
|
||||
})
|
||||
);
|
||||
|
||||
public constructor(
|
||||
private readonly context: GPUCanvasContext,
|
||||
|
|
@ -165,45 +180,6 @@ export class RenderPipeline {
|
|||
passEncoder.end();
|
||||
}
|
||||
|
||||
private getBindGroup(
|
||||
colorTexture: GPUTextureView,
|
||||
sourceTexture: GPUTextureView
|
||||
): GPUBindGroup {
|
||||
let sourceTextureCache = this.bindGroupsByTexture.get(colorTexture);
|
||||
if (!sourceTextureCache) {
|
||||
sourceTextureCache = new WeakMap<GPUTextureView, GPUBindGroup>();
|
||||
this.bindGroupsByTexture.set(colorTexture, sourceTextureCache);
|
||||
}
|
||||
|
||||
const cached = sourceTextureCache.get(sourceTexture);
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
const bindGroup = this.device.createBindGroup({
|
||||
layout: this.bindGroupLayout,
|
||||
entries: [
|
||||
{
|
||||
binding: 0,
|
||||
resource: {
|
||||
buffer: this.uniforms,
|
||||
},
|
||||
},
|
||||
{
|
||||
binding: 2,
|
||||
resource: colorTexture,
|
||||
},
|
||||
{
|
||||
binding: 3,
|
||||
resource: sourceTexture,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
sourceTextureCache.set(sourceTexture, bindGroup);
|
||||
return bindGroup;
|
||||
}
|
||||
|
||||
public destroy() {
|
||||
this.uniforms.destroy();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
export interface RenderSettings {
|
||||
clarity: number;
|
||||
renderTraceNormalizationFloor: number;
|
||||
renderBrushColorBase: number;
|
||||
renderBrushColorStrengthMultiplier: number;
|
||||
backgroundGrainStrength: number;
|
||||
}
|
||||
Loading…
Reference in a new issue