|
@@ -20,6 +20,7 @@ import { stringToWords } from '../mol-util/string';
|
|
|
import { degToRad } from '../mol-math/misc';
|
|
|
import { createNullTexture, Texture, Textures } from './webgl/texture';
|
|
|
import { arrayMapUpsert } from '../mol-util/array';
|
|
|
+import { clamp } from '../mol-math/interpolate';
|
|
|
|
|
|
export interface RendererStats {
|
|
|
programCount: number
|
|
@@ -474,8 +475,11 @@ namespace Renderer {
|
|
|
const { renderables } = group;
|
|
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
|
const r = renderables[i];
|
|
|
+
|
|
|
// TODO: simplify, handle on renderable.state???
|
|
|
- if (r.values.uAlpha.ref.value === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dRenderMode?.ref.value !== 'volume' && !r.values.dPointFilledCircle?.ref.value && !r.values.dXrayShaded?.ref.value) {
|
|
|
+ // uAlpha is updated in "render" so we need to recompute it here
|
|
|
+ const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
|
+ if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dRenderMode?.ref.value !== 'volume' && !r.values.dPointFilledCircle?.ref.value && !r.values.dXrayShaded?.ref.value) {
|
|
|
renderObject(r, 'colorWboit');
|
|
|
}
|
|
|
}
|
|
@@ -487,8 +491,11 @@ namespace Renderer {
|
|
|
const { renderables } = group;
|
|
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
|
const r = renderables[i];
|
|
|
+
|
|
|
// TODO: simplify, handle on renderable.state???
|
|
|
- if (r.values.uAlpha.ref.value < 1 || r.values.transparencyAverage.ref.value > 0 || r.values.dRenderMode?.ref.value === 'volume' || r.values.dPointFilledCircle?.ref.value || !!r.values.uBackgroundColor || r.values.dXrayShaded?.ref.value) {
|
|
|
+ // uAlpha is updated in "render" so we need to recompute it here
|
|
|
+ const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
|
+ if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || r.values.dRenderMode?.ref.value === 'volume' || r.values.dPointFilledCircle?.ref.value || !!r.values.uBackgroundColor || r.values.dXrayShaded?.ref.value) {
|
|
|
renderObject(r, 'colorWboit');
|
|
|
}
|
|
|
}
|