Eskil vignette
Creating a vignette using the Eskil option in postprocessing vignette. Fork on Codesandbox
Live example
Coming Soon
Code
import React from "react";
import ReactDOM from "react-dom";
import { Canvas } from "react-three-fiber";
import { EffectComposer, Vignette } from "@react-three/postprocessing";
import { BlendFunction } from "postprocessing";
import { OrbitControls, Stats } from "@react-three/drei";
import "./styles.css";
import { SmallBox, Wall, Box, Ball, Ground } from "./scene";
function Effects() {
return (
<EffectComposer>
<Vignette
offset={1.5}
darkness={0.9}
// Eskil's vignette technique works from the outside inwards rather
// than the inside outwards, so if this is 'true' set the offset
// to a value greater than 1.
// See frag for details - https://github.com/vanruesc/postprocessing/blob/main/src/effects/glsl/vignette/shader.frag
eskil={true}
blendFunction={BlendFunction.NORMAL}
/>
</EffectComposer>
);
}
const App = () => {
return (
<Canvas
style=
camera=
>
<directionalLight position={[2.5, 5, 5]} />
<SmallBox />
<Box />
<Ball />
<Wall />
<Ground />
<Effects />
<OrbitControls />
<Stats />
</Canvas>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
Running this example
Clone this repo, and then NPM install and NPM start from the relevant directory.
$ cd examples/effects/postprocessing-eskil-vignette
$ npm install && npm run start