Qt Quick 3D - Baked Lightmap Example | Qt Quick 3D 6.5.1
Description: Demonstrates the use of baked lightmaps in a 3D scene.

- Qt 6.5
- Qt Quick 3D
- Qt Quick 3D Examples and Tutorials
- Qt Quick 3D - Baked Lightmap Example
- Qt Quick 3D | Commercial or GPLv3

# Qt Quick 3D - Baked Lightmap Example

     // Copyright (C) 2022 The Qt Company Ltd.
     // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

     import QtQuick
     import QtQuick.Controls
     import QtQuick.Layouts
     import QtQuick3D
     import QtQuick3D.Helpers

     Window {
         width: 1280
         height: 720
         title: "Qt Quick 3D Baked Lightmap Example"
         visible: true

         View3D {
             id: root
             anchors.fill: parent

             environment: SceneEnvironment {
                 backgroundMode: SceneEnvironment.Color
                 clearColor: "black"
             }

             PerspectiveCamera {
                 id: camera
                 z: 300
                 y: 100
             }

             property bool lmEnabled: lmToggle.checked
             property int lightBakeMode: lmToggle.checked ? Light.BakeModeAll : Light.BakeModeDisabled

             PointLight {
                 bakeMode: root.lightBakeMode
                 y: 190
                 brightness: brightnessSlider.value
                 castsShadow: true
                 shadowFactor: 75
             }

             Box {
                 usedInBakedLighting: true
                 lightmapBaseResolution: 256
                 bakedLightmap: BakedLightmap {
                     enabled: root.lmEnabled
                     key: "box"
                     loadPrefix: "file:"
                 }
                 scale: Qt.vector3d(100, 100, 100)
             }

             Rectangle {
                 color: "lightGray"
                 width: 320
                 height: 160
                 ColumnLayout {
                     anchors.centerIn: parent
                     CheckBox {
                         id: lmToggle
                         text: "Use lightmaps (fully baked direct+indirect)\nif available"
                         checked: true
                         focusPolicy: Qt.NoFocus
                     }
                     Text {
                         text: "How to bake lightmaps: \nOpen DebugView -> Tools -> Bake lightmap"
                     }
                     Text {
                         text: "Slider controls light brightness"
                     }
                     Slider {
                         id: brightnessSlider
                         value: 5.0
                         from: 0
                         to: 10
                     }
                 }
             }
         }

         Item {
             width: debugViewToggleText.implicitWidth
             height: debugViewToggleText.implicitHeight
             anchors.right: parent.right
             Label {
                 id: debugViewToggleText
                 text: "Click here " + (dbg.visible ? "to hide DebugView" : "for DebugView")
                 color: "white"
                 anchors.right: parent.right
                 anchors.top: parent.top
             }
             MouseArea {
                 anchors.fill: parent
                 onClicked: dbg.visible = !dbg.visible
                 DebugView {
                     y: debugViewToggleText.height * 2
                     anchors.right: parent.right
                     source: root
                     id: dbg
                     visible: false
                 }
             }
         }
     }