summaryrefslogtreecommitdiff
path: root/src/SomhairlesDream.Frontend/App.fs
diff options
context:
space:
mode:
Diffstat (limited to 'src/SomhairlesDream.Frontend/App.fs')
-rw-r--r--src/SomhairlesDream.Frontend/App.fs18
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