ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
282 lines
8.0 KiB
QML
282 lines
8.0 KiB
QML
// Copyright (C) 2021 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
import QtQuick
|
|
import QtQuick.Window
|
|
import QtQuick3D
|
|
import QtQuick3D.Helpers
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
|
|
Window {
|
|
width: 1024
|
|
height: 768
|
|
visible: true
|
|
title: qsTr("Screen Space Reflections")
|
|
|
|
View3D {
|
|
id: screenSpaceReflectionsView
|
|
anchors.fill: parent
|
|
property double modelRotation: 0
|
|
property double modelHeight: 0
|
|
|
|
NumberAnimation {
|
|
target: screenSpaceReflectionsView
|
|
property: "modelRotation"
|
|
running: true
|
|
from: 0
|
|
to: 360
|
|
duration: 10000
|
|
loops: Animation.Infinite
|
|
}
|
|
|
|
SequentialAnimation {
|
|
running: true
|
|
loops: Animation.Infinite
|
|
NumberAnimation {
|
|
target: screenSpaceReflectionsView
|
|
property: "modelHeight"
|
|
from: -5
|
|
to: 20
|
|
duration: 1000
|
|
}
|
|
NumberAnimation {
|
|
target: screenSpaceReflectionsView
|
|
property: "modelHeight"
|
|
from: 20
|
|
to: -5
|
|
duration: 1000
|
|
}
|
|
}
|
|
|
|
environment: SceneEnvironment {
|
|
backgroundMode: SceneEnvironment.SkyBox
|
|
probeExposure: 2
|
|
lightProbe: Texture {
|
|
source: "maps/OpenfootageNET_lowerAustria01-1024.hdr"
|
|
}
|
|
}
|
|
|
|
//! [scene]
|
|
Node {
|
|
|
|
Model {
|
|
source: "#Cube"
|
|
eulerRotation.y: 0
|
|
scale: Qt.vector3d(1, 1, 1)
|
|
position: Qt.vector3d(50.0, 40.0, 50.0)
|
|
materials: PrincipledMaterial {
|
|
baseColorMap: Texture {
|
|
source: "qt_logo_rect.png"
|
|
}
|
|
}
|
|
}
|
|
|
|
Node{
|
|
|
|
Model {
|
|
source: "#Sphere"
|
|
position: Qt.vector3d(-400.0, screenSpaceReflectionsView.modelHeight, 0.0)
|
|
materials: PrincipledMaterial {
|
|
baseColor: "magenta"
|
|
}
|
|
}
|
|
}
|
|
|
|
Node{
|
|
eulerRotation.y: screenSpaceReflectionsView.modelRotation
|
|
position.y: screenSpaceReflectionsView.modelHeight
|
|
|
|
Model {
|
|
source: "#Sphere"
|
|
pivot: Qt.vector3d(0, 0.0, 0.0)
|
|
position: Qt.vector3d(200.0, 0.0, 0.0)
|
|
materials: PrincipledMaterial {
|
|
baseColor: "green"
|
|
}
|
|
}
|
|
}
|
|
|
|
Node{
|
|
eulerRotation.y: screenSpaceReflectionsView.modelRotation
|
|
position.y: screenSpaceReflectionsView.modelHeight
|
|
|
|
Model {
|
|
source: "#Sphere"
|
|
eulerRotation.y: 45
|
|
position: Qt.vector3d(0.0, 0.0, -200.0)
|
|
materials: PrincipledMaterial {
|
|
baseColor: "blue"
|
|
}
|
|
}
|
|
}
|
|
|
|
Node{
|
|
eulerRotation.y: screenSpaceReflectionsView.modelRotation
|
|
position.y: screenSpaceReflectionsView.modelHeight
|
|
|
|
Model {
|
|
source: "#Sphere"
|
|
position: Qt.vector3d(0.0, 0.0, 200.0)
|
|
materials: PrincipledMaterial {
|
|
baseColor: "red"
|
|
}
|
|
}
|
|
}
|
|
//! [scene]
|
|
|
|
//! [reflectingsurface]
|
|
Model {
|
|
source: "#Rectangle"
|
|
scale: Qt.vector3d(5, 5, 5)
|
|
eulerRotation.x: -90
|
|
eulerRotation.z: 180
|
|
position: Qt.vector3d(0.0, -50.0, 0.0)
|
|
materials: ScreenSpaceReflections {
|
|
depthBias: depthBiasSlider.value
|
|
rayMaxDistance: distanceSlider.value
|
|
marchSteps: marchSlider.value
|
|
refinementSteps: refinementStepsSlider.value
|
|
specular: specularSlider.value
|
|
materialColor: materialColorCheckBox.checked ? "transparent" : "dimgray"
|
|
}
|
|
}
|
|
//! [reflectingsurface]
|
|
|
|
PerspectiveCamera {
|
|
id: camera
|
|
position: Qt.vector3d(0.0, 40.0, 500)
|
|
}
|
|
|
|
DirectionalLight {
|
|
y: 0
|
|
castsShadow: false
|
|
}
|
|
}
|
|
|
|
WasdController {
|
|
id: wasdController
|
|
controlledObject: camera
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
wasdController.forceActiveFocus()
|
|
}
|
|
}
|
|
}
|
|
|
|
Pane {
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.margins: 10
|
|
Column {
|
|
id: settingsArea
|
|
spacing: 5
|
|
|
|
CheckBox {
|
|
id: materialColorCheckBox
|
|
text: "Transparent Material"
|
|
}
|
|
|
|
Row {
|
|
|
|
Slider {
|
|
id: depthBiasSlider
|
|
from: 0.0
|
|
to: 5
|
|
value: 0.79
|
|
}
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Depth Bias: " + depthBiasSlider.value.toFixed(2);
|
|
}
|
|
}
|
|
|
|
Row {
|
|
|
|
Slider {
|
|
id: distanceSlider
|
|
from: 0.0
|
|
to: 400
|
|
value: 200
|
|
stepSize: 1
|
|
}
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Ray Distance: " + distanceSlider.value
|
|
}
|
|
}
|
|
|
|
Row {
|
|
|
|
Slider {
|
|
id: marchSlider
|
|
Layout.alignment: Qt.AlignHCenter
|
|
from: 0
|
|
to: 2000
|
|
value: 300
|
|
stepSize: 1
|
|
}
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "March Steps: " + marchSlider.value
|
|
}
|
|
}
|
|
|
|
Row {
|
|
Slider {
|
|
id: refinementStepsSlider
|
|
Layout.alignment: Qt.AlignHCenter
|
|
from: 0
|
|
to: 50
|
|
value: 10
|
|
stepSize: 1
|
|
}
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Refinement Steps: " + refinementStepsSlider.value
|
|
}
|
|
}
|
|
|
|
Row {
|
|
Slider {
|
|
id: specularSlider
|
|
Layout.alignment: Qt.AlignHCenter
|
|
from: 0
|
|
to: 1
|
|
value: 1.0
|
|
}
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Specular: " + specularSlider.value.toFixed(2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
width: debugViewToggleText.implicitWidth
|
|
height: debugViewToggleText.implicitHeight
|
|
anchors.right: parent.right
|
|
Label {
|
|
id: debugViewToggleText
|
|
text: "Click here " + (dbg.visible ? "to hide DebugView" : "for DebugView")
|
|
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: screenSpaceReflectionsView
|
|
id: dbg
|
|
visible: false
|
|
}
|
|
}
|
|
}
|
|
}
|