Scandi VR Living Room: Performant VR Interior for Augmend (Forward Rendering + HLOD)

A Scandinavian-inspired VR interior built for a shipped healthcare module. I owned the environment art, lighting, materials, and the performance optimization pass required for standalone VR headsets. This included HLOD setup, triangle reduction, shader simplification, and forward-renderer adjustments to keep the scene running at a stable framerate without losing the soft, calming art direction.

Final look of the VR environment running on Meta Quest hardware.
My goal was to create a calm, readable space with soft lighting and clean composition, while keeping performance stable at 72–74 FPS.

Final look of the VR environment running on Meta Quest hardware.
My goal was to create a calm, readable space with soft lighting and clean composition, while keeping performance stable at 72–74 FPS.

I built the full 3D interior and defined the lighting approach.
The aesthetic needed to be soft, familiar, and comfortable for VR

I built the full 3D interior and defined the lighting approach.
The aesthetic needed to be soft, familiar, and comfortable for VR

I focused on:
balanced exposure and soft indirect light

low-contrast materials to reduce visual fatigue

clean silhouettes and clear object readability

minimal specular noise (Forward Rendering reacts strongly to roughness values)

I focused on:
balanced exposure and soft indirect light

low-contrast materials to reduce visual fatigue

clean silhouettes and clear object readability

minimal specular noise (Forward Rendering reacts strongly to roughness values)

This ensured the space remained visually cohesive while supporting user comfort.

This ensured the space remained visually cohesive while supporting user comfort.

To keep performance stable across the module, I implemented a full HLOD pass for the scene:

To keep performance stable across the module, I implemented a full HLOD pass for the scene:

Created HLOD clusters for major architecture and grouped clutter.
Tuned transition distances through in-headset testing.
Fixed shadow inconsistencies caused by early cluster boundaries
Generated proxy meshes directly from the HLOD Outliner

Created HLOD clusters for major architecture and grouped clutter.
Tuned transition distances through in-headset testing.
Fixed shadow inconsistencies caused by early cluster boundaries
Generated proxy meshes directly from the HLOD Outliner

Disabled merged materials, since they broke position-based color variation and introduced shading artifacts

Disabled merged materials, since they broke position-based color variation and introduced shading artifacts

I reviewed materials under the forward renderer, where roughness and reflections behave differently than deferred. Several materials were too reflective in forward, so I adjusted roughness values and simplified a few shader setups to keep base-pass cost

I reviewed materials under the forward renderer, where roughness and reflections behave differently than deferred. Several materials were too reflective in forward, so I adjusted roughness values and simplified a few shader setups to keep base-pass cost

Since this was a shipped VR module with known target hardware, I performed a targeted optimization pass:
aggressively reduced triangles on mid-distance props
simplified large architectural surfaces
remove unnecessary mesh detail and bake into normals

Since this was a shipped VR module with known target hardware, I performed a targeted optimization pass:
aggressively reduced triangles on mid-distance props
simplified large architectural surfaces
remove unnecessary mesh detail and bake into normals

Built a custom animated curtain shader

Created an animated "slideshow" TV material using mirrored frac() and swtiches between images.
Not as optimized but great during iteration.