Skip to content

Commit 9b4868e

Browse files
committed
Implement MSAA in translucent rendering pass
1 parent bdfb201 commit 9b4868e

File tree

3 files changed

+289
-187
lines changed

3 files changed

+289
-187
lines changed

Sources/Rendering/WebGPU/OpaquePass/index.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,18 @@ function vtkWebGPUOpaquePass(publicAPI, model) {
2626
? viewNode.getSampleCount()
2727
: 1;
2828

29+
// If sampleCount changed since last render, tear down and recreate
30+
if (model.renderEncoder && model._currentSampleCount !== sampleCount) {
31+
model.renderEncoder = null;
32+
model.colorTexture = null;
33+
model.depthTexture = null;
34+
model.resolveColorTexture = null;
35+
model._resolveColorTextureView = null;
36+
}
37+
2938
if (!model.renderEncoder) {
3039
publicAPI.createRenderEncoder(sampleCount);
40+
model._currentSampleCount = sampleCount;
3141

3242
const width = viewNode.getCanvas().width;
3343
const height = viewNode.getCanvas().height;
@@ -67,9 +77,10 @@ function vtkWebGPUOpaquePass(publicAPI, model) {
6777
GPUTextureUsage.TEXTURE_BINDING |
6878
GPUTextureUsage.COPY_SRC,
6979
});
70-
const resolveView = model.resolveColorTexture.createView(
80+
model._resolveColorTextureView = model.resolveColorTexture.createView(
7181
'opaquePassColorTexture'
7282
);
83+
const resolveView = model._resolveColorTextureView;
7384
model.renderEncoder.setResolveTextureView(0, resolveView);
7485
}
7586

@@ -112,8 +123,8 @@ function vtkWebGPUOpaquePass(publicAPI, model) {
112123
// When MSAA is active, downstream passes must sample from the resolved
113124
// (1-sample) texture, not the multisampled one
114125
publicAPI.getColorTextureView = () => {
115-
if (model.resolveColorTexture) {
116-
return model.resolveColorTexture.createView('opaquePassColorTexture');
126+
if (model._resolveColorTextureView) {
127+
return model._resolveColorTextureView;
117128
}
118129
return model.renderEncoder.getColorTextureViews()[0];
119130
};

0 commit comments

Comments
 (0)