Skip to content

Commit

Permalink
Fix Cineon tone mapping
Browse files Browse the repository at this point in the history
Fixes #655
  • Loading branch information
vanruesc committed Sep 10, 2024
1 parent 3a1d4bd commit 49eb938
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 37 deletions.
68 changes: 35 additions & 33 deletions src/effects/ToneMappingEffect.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { LinearMipmapLinearFilter, Uniform, WebGLRenderTarget } from "three";
import { LinearMipmapLinearFilter, REVISION, Uniform, WebGLRenderTarget } from "three";
import { AdaptiveLuminancePass } from "../passes/AdaptiveLuminancePass.js";
import { LuminancePass } from "../passes/LuminancePass.js";
import { BlendFunction } from "../enums/BlendFunction.js";
Expand Down Expand Up @@ -120,53 +120,55 @@ export class ToneMappingEffect extends Effect {

set mode(value) {

if(this.mode !== value) {
if(this.mode === value) {

this.defines.clear();
this.defines.set("TONE_MAPPING_MODE", value.toFixed(0));
return;

// Use one of the built-in tone mapping operators.
switch(value) {
}

case ToneMappingMode.LINEAR:
this.defines.set("toneMapping(texel)", "LinearToneMapping(texel)");
break;
const revision = REVISION.replace(/\D+/g, "");
const cineonToneMapping = (revision >= 168) ? "CineonToneMapping(texel)" : "OptimizedCineonToneMapping(texel)";

case ToneMappingMode.REINHARD:
this.defines.set("toneMapping(texel)", "ReinhardToneMapping(texel)");
break;
this.defines.clear();
this.defines.set("TONE_MAPPING_MODE", value.toFixed(0));

case ToneMappingMode.CINEON:
this.defines.set("toneMapping(texel)", "CineonToneMapping(texel)");
break;
// Use one of the built-in tone mapping operators.
switch(value) {

case ToneMappingMode.OPTIMIZED_CINEON:
this.defines.set("toneMapping(texel)", "OptimizedCineonToneMapping(texel)");
break;
case ToneMappingMode.LINEAR:
this.defines.set("toneMapping(texel)", "LinearToneMapping(texel)");
break;

case ToneMappingMode.ACES_FILMIC:
this.defines.set("toneMapping(texel)", "ACESFilmicToneMapping(texel)");
break;
case ToneMappingMode.REINHARD:
this.defines.set("toneMapping(texel)", "ReinhardToneMapping(texel)");
break;

case ToneMappingMode.AGX:
this.defines.set("toneMapping(texel)", "AgXToneMapping(texel)");
break;
case ToneMappingMode.CINEON:
case ToneMappingMode.OPTIMIZED_CINEON:
this.defines.set("toneMapping(texel)", cineonToneMapping);
break;

case ToneMappingMode.NEUTRAL:
this.defines.set("toneMapping(texel)", "NeutralToneMapping(texel)");
break;
case ToneMappingMode.ACES_FILMIC:
this.defines.set("toneMapping(texel)", "ACESFilmicToneMapping(texel)");
break;

default:
this.defines.set("toneMapping(texel)", "texel");
break;
case ToneMappingMode.AGX:
this.defines.set("toneMapping(texel)", "AgXToneMapping(texel)");
break;

}
case ToneMappingMode.NEUTRAL:
this.defines.set("toneMapping(texel)", "NeutralToneMapping(texel)");
break;

this.adaptiveLuminancePass.enabled = (value === ToneMappingMode.REINHARD2_ADAPTIVE);
this.setChanged();
default:
this.defines.set("toneMapping(texel)", "texel");
break;

}

this.adaptiveLuminancePass.enabled = (value === ToneMappingMode.REINHARD2_ADAPTIVE);
this.setChanged();

}

/**
Expand Down
8 changes: 4 additions & 4 deletions src/enums/ToneMappingMode.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ export const ToneMappingMode = {
REINHARD2_ADAPTIVE: 3,
UNCHARTED2: 4,
OPTIMIZED_CINEON: 5,
CINEON: 6,
ACES_FILMIC: 7,
AGX: 8,
NEUTRAL: 9
CINEON: 5,
ACES_FILMIC: 6,
AGX: 7,
NEUTRAL: 8
};

0 comments on commit 49eb938

Please sign in to comment.