Qt Quick 3D - Stencil Outline Extension Example

 # Copyright (C) 2023 The Qt Company Ltd.
 # SPDX-License-Identifier: BSD-3-Clause

 cmake_minimum_required(VERSION 3.16)
 project(stenciloutline LANGUAGES CXX)

 set(CMAKE_AUTOMOC ON)

 if(NOT DEFINED INSTALL_EXAMPLESDIR)
     set(INSTALL_EXAMPLESDIR "examples")
 endif()

 set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/quick3d/extensions/stenciloutline")

 find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Quick3D)

 qt_add_executable(stenciloutline
     main.cpp
 )

 set(stenciloutline_uri "QtQuick3D.Examples.OutlineRenderExtension")

 set_target_properties(stenciloutline PROPERTIES
     WIN32_EXECUTABLE TRUE
     MACOSX_BUNDLE TRUE
 )

 target_link_libraries(stenciloutline PUBLIC
         Qt::Gui
         Qt::Quick
         Qt::Quick3D
         Qt::GuiPrivate
         Qt::Quick3DPrivate
 )

 set(qml_resource_files
     "Main.qml"
     "ColorPicker.qml"
     "SectionLayout.qml"
 )

 set(image_resource_files
     "images/TreeExpanded.png"
     "images/TreeUnexpanded.png"
     "images/grid_8x8.png"
 )

 set(mesh_resource_files
     "models/suzanne.mesh"
 )

 qt_add_qml_module(stenciloutline
     VERSION 1.0
     URI ${stenciloutline_uri}
     QML_FILES
         ${qml_resource_files}
     RESOURCES
         ${image_resource_files}
         ${mesh_resource_files}
     SOURCES
         outlinerenderextension.cpp outlinerenderextension.h
     NO_PLUGIN
 )

 qt_add_shaders(stenciloutline "baked-shaders"
     FILES
         "shaders/huesaturation.frag"
 )

 install(TARGETS stenciloutline
     RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
     BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
     LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
 )