From 863c0e6a55da1e3564ce0dbf070a3ad49f41abfe Mon Sep 17 00:00:00 2001 From: Noeri Huisman <8823461+mrxz@users.noreply.github.com> Date: Fri, 5 Apr 2024 22:18:34 +0200 Subject: [PATCH] Added 'stencil' property to renderer system for enabling stencil buffer on GL context (#5509) Co-authored-by: Noeri Huisman --- docs/components/renderer.md | 1 + src/core/scene/a-scene.js | 4 ++++ src/systems/renderer.js | 1 + 3 files changed, 6 insertions(+) diff --git a/docs/components/renderer.md b/docs/components/renderer.md index aa5f5b3ba2..033c74c2e2 100644 --- a/docs/components/renderer.md +++ b/docs/components/renderer.md @@ -40,6 +40,7 @@ It also configures presentation attributes when entering WebVR/WebXR. | logarithmicDepthBuffer | Whether to use a logarithmic depth buffer. | auto | | precision | Fragment shader [precision][precision] : low, medium or high. | high | | alpha | Whether the canvas should contain an alpha buffer. | true | +| stencil | Whether the canvas should contain a stencil buffer. | false | | toneMapping | Type of toneMapping to use, one of: 'no', 'ACESFilmic', 'linear', 'reinhard', 'cineon' | 'no' | | exposure | When any toneMapping other than "no" is used this can be used to make the overall scene brighter or darker | 1 | | anisotropy | Default anisotropic filtering sample rate to use for textures | 1 | diff --git a/src/core/scene/a-scene.js b/src/core/scene/a-scene.js index e95806fa04..b5527d21df 100644 --- a/src/core/scene/a-scene.js +++ b/src/core/scene/a-scene.js @@ -640,6 +640,10 @@ class AScene extends AEntity { rendererConfig.alpha = rendererAttr.alpha === 'true'; } + if (rendererAttr.stencil) { + rendererConfig.stencil = rendererAttr.stencil === 'true'; + } + if (rendererAttr.multiviewStereo) { rendererConfig.multiviewStereo = rendererAttr.multiviewStereo === 'true'; } diff --git a/src/systems/renderer.js b/src/systems/renderer.js index 0d8d669298..1c0867cd7a 100644 --- a/src/systems/renderer.js +++ b/src/systems/renderer.js @@ -24,6 +24,7 @@ module.exports.System = registerSystem('renderer', { sortTransparentObjects: {default: false}, colorManagement: {default: true}, alpha: {default: true}, + stencil: {default: false}, foveationLevel: {default: 1} },