add_imgui_app(shaders_lab
    main.cpp
    compiler.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_loader.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_shader.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_framebuffer.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/fullscreen_quad.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/shader_canvas.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/uniform_parser.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/uniform_panel.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_catalog.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_compile.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_uniforms.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_panel.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_node_editor.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_palette.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/dag_node_previews.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/shaderlab_db.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/code_to_generator.cpp
    # Primitivos UI usados por el modal Save-as-generator.
    ${CMAKE_SOURCE_DIR}/functions/core/modal_dialog.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/text_input.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/button.cpp
    # fps_overlay, panel_menu, layouts_menu, app_menubar, layout_storage ya
    # viven en fn_framework.
)
target_include_directories(shaders_lab PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(shaders_lab PRIVATE imgui_node_editor SQLite::SQLite3)

if(WIN32)
    # GUI app: sin consola al lanzar (subsystem:windows / -mwindows)
    set_target_properties(shaders_lab PROPERTIES WIN32_EXECUTABLE TRUE)
endif()
