Hello, I am trying to implement outline around model using outline pass in AR.
I am getting nasty aliasing when I move away from the model, i.e. the model becomes smaller.
I have tried different types of anti-aliasing passes like FXAA/TAA but that didn’t resolve it.
are the passes supposed to be in any particular order that i have missed?
Sharing a snippet of the code below; can share more information if needed.
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(
60.0,
canvasWidth / canvasHeight,
0.01,
1000.0
);
scene.add(camera);
const renderer = new THREE.WebGLRenderer({
canvas,
context: GLctx,
alpha: false,
antialias: true,
});
renderer.debug.checkShaderErrors = false
renderer.autoClear = false;
renderer.autoClearDepth = false;
renderer.toneMapping = THREE.ReinhardToneMapping;
renderer.toneMappingExposure = 1;
renderer.setClearColor(0xffffff, 0);
sceneTarget = new THREE.WebGLRenderTarget(canvasWidth, canvasHeight, {
generateMipmaps: false,
});
copyPass = new TexturePass(sceneTarget.texture);
effectComposer = new EffectComposer(renderer);
effectComposer.addPass(copyPass);
const taaRenderPass = new TAARenderPass(scene, camera);
taaRenderPass.unbiased = false;
effectComposer.addPass(taaRenderPass);
const gammaCorrectionPass = new ShaderPass(GammaCorrectionShader);
effectComposer.addPass(gammaCorrectionPass);
combinePass = new ShaderPass(combineShader);
combinePass.clear = false;
combinePass.renderToScreen = true;
effectComposer.addPass(combinePass);
outlinePass = new OutlinePass(
new THREE.Vector2(canvasWidth, canvasHeight),
scene,
camera
);
outlinePass.renderToScreen = true;
outlinePass.edgeStrength = 10;
outlinePass.edgeGlow = 0;
outlinePass.edgeThickness = 10;
outlinePass.pulsePeriod = 10;
outlinePass.visibleEdgeColor.set('#f96302');
outlinePass.hiddenEdgeColor.set('#f96302');
effectComposer.addPass(outlinePass);
scene3 = { scene, camera, renderer, effectComposer, outlinePass };
window.scene3 = scene3;
window.XR8.Threejs.xrScene = xrScene;
appreciate any help, thanks!