Initial project import
This commit is contained in:
175
node_modules/three-stdlib/postprocessing/TAARenderPass.cjs
generated
vendored
Normal file
175
node_modules/three-stdlib/postprocessing/TAARenderPass.cjs
generated
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
||||
const THREE = require("three");
|
||||
const SSAARenderPass = require("./SSAARenderPass.cjs");
|
||||
class TAARenderPass extends SSAARenderPass.SSAARenderPass {
|
||||
constructor(scene, camera, clearColor, clearAlpha) {
|
||||
super(scene, camera, clearColor, clearAlpha);
|
||||
this.sampleLevel = 0;
|
||||
this.accumulate = false;
|
||||
this.accumulateIndex = -1;
|
||||
}
|
||||
render(renderer, writeBuffer, readBuffer, deltaTime) {
|
||||
if (this.accumulate === false) {
|
||||
super.render(renderer, writeBuffer, readBuffer, deltaTime);
|
||||
this.accumulateIndex = -1;
|
||||
return;
|
||||
}
|
||||
const jitterOffsets = _JitterVectors[5];
|
||||
if (this.sampleRenderTarget === void 0) {
|
||||
this.sampleRenderTarget = new THREE.WebGLRenderTarget(readBuffer.width, readBuffer.height, { type: THREE.HalfFloatType });
|
||||
this.sampleRenderTarget.texture.name = "TAARenderPass.sample";
|
||||
}
|
||||
if (this.holdRenderTarget === void 0) {
|
||||
this.holdRenderTarget = new THREE.WebGLRenderTarget(readBuffer.width, readBuffer.height, { type: THREE.HalfFloatType });
|
||||
this.holdRenderTarget.texture.name = "TAARenderPass.hold";
|
||||
}
|
||||
if (this.accumulateIndex === -1) {
|
||||
super.render(renderer, this.holdRenderTarget, readBuffer, deltaTime);
|
||||
this.accumulateIndex = 0;
|
||||
}
|
||||
const autoClear = renderer.autoClear;
|
||||
renderer.autoClear = false;
|
||||
renderer.getClearColor(this._oldClearColor);
|
||||
const oldClearAlpha = renderer.getClearAlpha();
|
||||
const sampleWeight = 1 / jitterOffsets.length;
|
||||
if (this.accumulateIndex >= 0 && this.accumulateIndex < jitterOffsets.length) {
|
||||
this.copyUniforms["opacity"].value = sampleWeight;
|
||||
this.copyUniforms["tDiffuse"].value = writeBuffer.texture;
|
||||
const numSamplesPerFrame = Math.pow(2, this.sampleLevel);
|
||||
for (let i = 0; i < numSamplesPerFrame; i++) {
|
||||
const j = this.accumulateIndex;
|
||||
const jitterOffset = jitterOffsets[j];
|
||||
if (this.camera.setViewOffset) {
|
||||
this.camera.setViewOffset(
|
||||
readBuffer.width,
|
||||
readBuffer.height,
|
||||
jitterOffset[0] * 0.0625,
|
||||
jitterOffset[1] * 0.0625,
|
||||
// 0.0625 = 1 / 16
|
||||
readBuffer.width,
|
||||
readBuffer.height
|
||||
);
|
||||
}
|
||||
renderer.setRenderTarget(writeBuffer);
|
||||
renderer.setClearColor(this.clearColor, this.clearAlpha);
|
||||
renderer.clear();
|
||||
renderer.render(this.scene, this.camera);
|
||||
renderer.setRenderTarget(this.sampleRenderTarget);
|
||||
if (this.accumulateIndex === 0) {
|
||||
renderer.setClearColor(0, 0);
|
||||
renderer.clear();
|
||||
}
|
||||
this.fsQuad.render(renderer);
|
||||
this.accumulateIndex++;
|
||||
if (this.accumulateIndex >= jitterOffsets.length)
|
||||
break;
|
||||
}
|
||||
if (this.camera.clearViewOffset)
|
||||
this.camera.clearViewOffset();
|
||||
}
|
||||
renderer.setClearColor(this.clearColor, this.clearAlpha);
|
||||
const accumulationWeight = this.accumulateIndex * sampleWeight;
|
||||
if (accumulationWeight > 0) {
|
||||
this.copyUniforms["opacity"].value = 1;
|
||||
this.copyUniforms["tDiffuse"].value = this.sampleRenderTarget.texture;
|
||||
renderer.setRenderTarget(writeBuffer);
|
||||
renderer.clear();
|
||||
this.fsQuad.render(renderer);
|
||||
}
|
||||
if (accumulationWeight < 1) {
|
||||
this.copyUniforms["opacity"].value = 1 - accumulationWeight;
|
||||
this.copyUniforms["tDiffuse"].value = this.holdRenderTarget.texture;
|
||||
renderer.setRenderTarget(writeBuffer);
|
||||
this.fsQuad.render(renderer);
|
||||
}
|
||||
renderer.autoClear = autoClear;
|
||||
renderer.setClearColor(this._oldClearColor, oldClearAlpha);
|
||||
}
|
||||
dispose() {
|
||||
super.dispose();
|
||||
if (this.sampleRenderTarget !== void 0)
|
||||
this.sampleRenderTarget.dispose();
|
||||
if (this.holdRenderTarget !== void 0)
|
||||
this.holdRenderTarget.dispose();
|
||||
}
|
||||
}
|
||||
const _JitterVectors = [
|
||||
[
|
||||
[0, 0]
|
||||
],
|
||||
[
|
||||
[4, 4],
|
||||
[-4, -4]
|
||||
],
|
||||
[
|
||||
[-2, -6],
|
||||
[6, -2],
|
||||
[-6, 2],
|
||||
[2, 6]
|
||||
],
|
||||
[
|
||||
[1, -3],
|
||||
[-1, 3],
|
||||
[5, 1],
|
||||
[-3, -5],
|
||||
[-5, 5],
|
||||
[-7, -1],
|
||||
[3, 7],
|
||||
[7, -7]
|
||||
],
|
||||
[
|
||||
[1, 1],
|
||||
[-1, -3],
|
||||
[-3, 2],
|
||||
[4, -1],
|
||||
[-5, -2],
|
||||
[2, 5],
|
||||
[5, 3],
|
||||
[3, -5],
|
||||
[-2, 6],
|
||||
[0, -7],
|
||||
[-4, -6],
|
||||
[-6, 4],
|
||||
[-8, 0],
|
||||
[7, -4],
|
||||
[6, 7],
|
||||
[-7, -8]
|
||||
],
|
||||
[
|
||||
[-4, -7],
|
||||
[-7, -5],
|
||||
[-3, -5],
|
||||
[-5, -4],
|
||||
[-1, -4],
|
||||
[-2, -2],
|
||||
[-6, -1],
|
||||
[-4, 0],
|
||||
[-7, 1],
|
||||
[-1, 2],
|
||||
[-6, 3],
|
||||
[-3, 3],
|
||||
[-7, 6],
|
||||
[-3, 6],
|
||||
[-5, 7],
|
||||
[-1, 7],
|
||||
[5, -7],
|
||||
[1, -6],
|
||||
[6, -5],
|
||||
[4, -4],
|
||||
[2, -3],
|
||||
[7, -2],
|
||||
[1, -1],
|
||||
[4, -1],
|
||||
[2, 1],
|
||||
[6, 2],
|
||||
[0, 4],
|
||||
[4, 4],
|
||||
[2, 5],
|
||||
[7, 5],
|
||||
[5, 6],
|
||||
[3, 7]
|
||||
]
|
||||
];
|
||||
exports.TAARenderPass = TAARenderPass;
|
||||
//# sourceMappingURL=TAARenderPass.cjs.map
|
||||
Reference in New Issue
Block a user