diff options
Diffstat (limited to 'src/SomhairlesDream.Frontend/App.fs')
| -rw-r--r-- | src/SomhairlesDream.Frontend/App.fs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/SomhairlesDream.Frontend/App.fs b/src/SomhairlesDream.Frontend/App.fs index dbb267c..315a0fc 100644 --- a/src/SomhairlesDream.Frontend/App.fs +++ b/src/SomhairlesDream.Frontend/App.fs @@ -241,17 +241,33 @@ let initializeView () = renderer.setPixelRatio(window.devicePixelRatio) renderer.setSize(width, height, false) + // PBR pipeline: ACES tone mapping + a procedural studio environment map + // so metalness/roughness from the GLB materials read as machined + // hardware instead of flat plastic. + setToneMappingACES renderer + setToneMappingExposure (renderer, 1.15) + setSRGBOutput renderer let scene = createScene() scene.background <- createColor("#11171a") + let envScene = createEnvScene() + let pmrem = createPMREMGenerator renderer + let envTexture = pmremFromScene (pmrem, envScene) + setSceneEnvironment (scene, envTexture) + setSceneEnvironmentIntensity (scene, 0.55) let camera = createPerspectiveCamera(34.0, width / height, 0.1, 100.0) camera.position.set(6.4, 4.6, 7.2) |> ignore camera.lookAt(0.0, 0.0, 0.0) let group = createGroup() scene.add(group) - scene.add(createAmbientLight("#f0e6c8", 1.9)) + scene.add(createAmbientLight("#f0e6c8", 0.55)) let keyLight = createDirectionalLight("#f2c76b", 2.8) keyLight.position.set(4.0, 7.0, 5.0) |> ignore scene.add(keyLight) + let rimLight = createDirectionalLight("#7fa8ff", 1.4) + rimLight.position.set(-6.0, -3.0, -4.0) |> ignore + scene.add(rimLight) + let bounceLight = createHemisphereLight("#3d4a56", "#141a1e", 0.9) + scene.add(bounceLight) let controls = createOrbitControls camera canvas setControlsTarget controls 0.0 0.0 0.0 |
