{"_id":"5b689070f3c8dc0003c6d1d2","category":{"_id":"5b689070f3c8dc0003c6d1a9","project":"5a065a6134873d0010b396ab","version":"5b689070f3c8dc0003c6d1df","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2018-05-24T14:46:44.164Z","from_sync":false,"order":3,"slug":"enhanced-scenes","title":"Enhanced Scenes"},"project":"5a065a6134873d0010b396ab","user":"579a69d53de0a217007eda56","parentDoc":null,"version":{"_id":"5b689070f3c8dc0003c6d1df","project":"5a065a6134873d0010b396ab","__v":0,"forked_from":"5b4e90b9d9ea0b00031c6194","createdAt":"2018-04-18T18:19:34.288Z","releaseDate":"2018-04-18T18:19:34.288Z","categories":["5b689070f3c8dc0003c6d1a4","5b689070f3c8dc0003c6d1a5","5b689070f3c8dc0003c6d1a6","5b05923ea5a2f9000357b452","5b05f793c2c86c0003cbe414","5b689070f3c8dc0003c6d1a7","5b689070f3c8dc0003c6d1a8","5b689070f3c8dc0003c6d1a9"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.9.0","version":"1.9.0"},"githubsync":"","__v":0,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2018-02-14T17:10:57.090Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"Viro employs a number of different rendering methods and algorithms. These methods sometimes come at a performance cost, so it's useful to be able to disable specific features. This guide explains what those features are, and how to disable them.\n[block:api-header]\n{\n  \"title\": \"Configuration Methods\"\n}\n[/block]\nThe [Renderer Configuration](https://developer.viromedia.com/virocore/reference/com/viro/core/RendererConfiguration.html) class should be used to enable or disable features at *launch time* for a client. The [ViroView](https://developer.viromedia.com/virocore/reference/com/viro/core/ViroView.html) is used to enable or disable features at *runtime*.\n\nLaunch time disabling of features may be particularly useful if you're experiencing compatibility problems on specific devices, due to legacy GPUs or low memory architectures. Viro will not allocate memory or GPU resources for features that are disabled on launch.\n\nDisabling features for specific devices is also useful for supporting older devices without having to compromise quality on higher-end devices. For example, you can use RendererConfiguration to enable HDR on newer devices while disabling it on older devices, ensuring even the older devices maintain a high frame-rate.\n[block:api-header]\n{\n  \"title\": \"Configurable Settings\"\n}\n[/block]\nThe following renderer settings can be enabled or disabled:\n\n## Bloom ##\nBloom adds a soft glow to bright areas in scene, simulating the way bright highlights appear to the human eye. This requires the use of multiple render targets, and is fill-rate intensive. Disabling bloom will improve performance on low-end devices. For more information on Bloom, see the [Lighting and Materials](https://virocore.viromedia.com/docs/3d-scene-lighting#bloom) guide.\n\n## Dynamic Shadows ##\nDynamic shadows provide a visual cues about depth in the scene, and in AR give hints as to what real-world surface virtual objects are resting on. Unfortunately, shadows do come at a performance cost, as they require rendering the scene to a shadow map, then referencing this shadow map during the core render cycle. Disabling shadows will improve performance on low-end devices.\n\n## HDR ##\nWhen HDR rendering is enabled, Viro uses a deeper color space and renders the scene to a floating point texture, allowing the preservation of details that may be lost due to limiting contrast ratios. A tone-mapping algorithm is applied after the render to preserve fine details in both bright and dark regions of the scene. If HDR is disabled, then features like Bloom and PBR will not work as well. HDR comes at a performance cost, so disabling it will improve performance on low-end devices.\n\n## PBR ##\nPhysically based rendering, or PBR, produces more realistic lighting results for your scenes by incorporating an advanced model of real-world lights and materials. PBR produces better results than traditional shading, and improves artist workflow with a more intuitive set of material properties. PBR does, however, rely on advanced GPU algorithms, and comes at a performance cost, so disabling it will improve performance on low-end devices.","excerpt":"Enabling and disabling rendering features","slug":"advanced-configuration","type":"basic","title":"Renderer Configuration"}

Renderer Configuration

Enabling and disabling rendering features

Viro employs a number of different rendering methods and algorithms. These methods sometimes come at a performance cost, so it's useful to be able to disable specific features. This guide explains what those features are, and how to disable them. [block:api-header] { "title": "Configuration Methods" } [/block] The [Renderer Configuration](https://developer.viromedia.com/virocore/reference/com/viro/core/RendererConfiguration.html) class should be used to enable or disable features at *launch time* for a client. The [ViroView](https://developer.viromedia.com/virocore/reference/com/viro/core/ViroView.html) is used to enable or disable features at *runtime*. Launch time disabling of features may be particularly useful if you're experiencing compatibility problems on specific devices, due to legacy GPUs or low memory architectures. Viro will not allocate memory or GPU resources for features that are disabled on launch. Disabling features for specific devices is also useful for supporting older devices without having to compromise quality on higher-end devices. For example, you can use RendererConfiguration to enable HDR on newer devices while disabling it on older devices, ensuring even the older devices maintain a high frame-rate. [block:api-header] { "title": "Configurable Settings" } [/block] The following renderer settings can be enabled or disabled: ## Bloom ## Bloom adds a soft glow to bright areas in scene, simulating the way bright highlights appear to the human eye. This requires the use of multiple render targets, and is fill-rate intensive. Disabling bloom will improve performance on low-end devices. For more information on Bloom, see the [Lighting and Materials](https://virocore.viromedia.com/docs/3d-scene-lighting#bloom) guide. ## Dynamic Shadows ## Dynamic shadows provide a visual cues about depth in the scene, and in AR give hints as to what real-world surface virtual objects are resting on. Unfortunately, shadows do come at a performance cost, as they require rendering the scene to a shadow map, then referencing this shadow map during the core render cycle. Disabling shadows will improve performance on low-end devices. ## HDR ## When HDR rendering is enabled, Viro uses a deeper color space and renders the scene to a floating point texture, allowing the preservation of details that may be lost due to limiting contrast ratios. A tone-mapping algorithm is applied after the render to preserve fine details in both bright and dark regions of the scene. If HDR is disabled, then features like Bloom and PBR will not work as well. HDR comes at a performance cost, so disabling it will improve performance on low-end devices. ## PBR ## Physically based rendering, or PBR, produces more realistic lighting results for your scenes by incorporating an advanced model of real-world lights and materials. PBR produces better results than traditional shading, and improves artist workflow with a more intuitive set of material properties. PBR does, however, rely on advanced GPU algorithms, and comes at a performance cost, so disabling it will improve performance on low-end devices.