Skip to content

rtx use example #32

Open
Open

Description

@tigrazone

I have 2 questions.

  1. did you can publish example with use of rtx raytracing?
  2. why you use sdl?
    thank you!

Activity

  1. BeRo1985 commented on Nov 4, 2023

    @BeRo1985
    Owner

    Thanks for asking about ray tracing capabilities in PasVulkan. I am still actively working on integrating this feature. It's a complex task that requires careful implementation to meet the performance and functionality standards I've set for PasVulkan.

    And I appreciate your question on why SDL is utilized in specific contexts within PasVulkan. Allow me to outline the reasoning behind its selective integration based on the operating system:

    The integration of SDL is highly contingent on the operating system:

    1. Linux: SDL is invaluable in this environment due to the complex and varied nature of the available APIs for different system functionalities, ranging from UI/visuals (X11, Wayland, Raw-Framebuffer) to audio (ALSA, OSS, JACK, PulseAudio, PipeWire, and so on) and input devices (jsapi, xinput, evdev, among others). The abstraction provided by SDL simplifies the process by managing this diversity. This is especially helpful considering that Linux does not always maintain backward compatibility with its APIs, which are subject to frequent changes and trends (e.g., systemd and the like). SDL, therefore, relieves developers of the considerable task of maintaining API wrappers by deferring this responsibility to the SDL and Linux distribution maintainers.

    2. Windows: Contrary to Linux, PasVulkan does not use SDL on Windows. The consistent backward compatibility of Windows APIs allows for a more streamlined and stable native development process, making the need for the SDL layer unnecessary. As a result, PasVulkan runs smoothly and reliably on Windows without the need for SDL, utilizing the Windows native APIs for its operations in a direct way.

    3. Android: SDL's role in PasVulkan for Android falls somewhere between its usage in Linux and Windows. While direct native API usage is generally smoother for certain tasks, such as handling display modes, SDL still provides a layer of abstraction that can be beneficial in managing the diversity of Android's system functions, since Android is also introducing new APIs and breaking old APIs often. It's a balancing act of leveraging SDL for its strengths while also recognizing scenarios where native APIs offer better performance or control.

    Overall, SDL is integrated into PasVulkan where it offers significant advantages, which is mainly in the Linux environment. But for Windows, PasVulkan takes advantage of the robust native OS APIs, and on Android, it strikes a balance between SDL and native APIs based on what offers the best outcome for performance and control.

    I hope this clarifies why SDL is used selectively in PasVulkan as cross-OS-API-wrapper, at least for Linux and Android.

    Should you have further questions, feel free to ask.

  2. tigrazone commented on Nov 4, 2023

    @tigrazone
    Author

    Is no equivalents like ImGUI for Pascal for glfw/vulkan, no SDL?
    I see in c++ world ImGUI now is standard

  3. BeRo1985 commented on Nov 4, 2023

    @BeRo1985
    Owner

    At least, PasVulkan has its own quite feature-complete GUI framework, but it's a retained-mode GUI and not an immediate-mode GUI, because I personally don't like the idea behind ImGUIs.

    In my opinion, retained-mode GUIs (RmGUIs) offer a superior approach to user interface design, particularly due to their robust handling of state and event management. The upfront layout and automatic state retention simplify the development process, making it far more convenient to handle user interactions and dynamic changes within the UI. This built-in efficiency is a significant advantage, enabling the creation of complex, responsive interfaces with less manual overhead.

    Admittedly, immediate-mode GUIs (ImGUIs) can facilitate quicker development and more straightforward iteration of GUIs, often in a single pass, which can be particularly beneficial during prototyping or for simpler interfaces. However, it's important to weigh these advantages against the potential downsides, such as less efficient rendering and more complex state management, to determine if it's the best approach for a given project.

    But tastes are different, after all. I myself favor RmGUIs. :-)

    Screenshot_20231104_200514

  4. tigrazone commented on Nov 4, 2023

    @tigrazone
    Author

    I want to see as soon as possible your rtx approach with RmGUI.
    When it can be possible? It can be first rtx project on pascal.
    One more question. Is in RmGUI can be changed font and font size?

  5. Coldzer0 commented on Nov 16, 2023

    @Coldzer0

    Is no equivalents like ImGUI for Pascal for glfw/vulkan, no SDL? I see in C++ world ImGUI now is standard

    I've been working on a binding for ImGui in Pascal ^_^
    https://github.com/Coldzer0/ImGui-Pascal

    You may find it interesting.

  6. tigrazone commented on Nov 16, 2023

    @tigrazone
    Author

    Is no equivalents like ImGUI for Pascal for glfw/vulkan, no SDL? I see in C++ world ImGUI now is standard

    I've been working on a binding for ImGui in Pascal ^_^ https://github.com/Coldzer0/ImGui-Pascal

    You may find it interesting.

    did you use OpenGL3 or SDL?

  7. Coldzer0 commented on Nov 16, 2023

    @Coldzer0

    Is no equivalents like ImGUI for Pascal for glfw/vulkan, no SDL? I see in C++ world ImGUI now is standard

    I've been working on a binding for ImGui in Pascal ^_^ https://github.com/Coldzer0/ImGui-Pascal
    You may find it interesting.

    did you use OpenGL3 or SDL?

    SDL2 is for window creation, and OpenGL3 is a renderer.
    But you can change the backend to anything you want
    I'm currently working on implementing more of the ImGui backends in pure Pascal.

  8. tigrazone commented on Nov 16, 2023

    @tigrazone
    Author

    I wish not use SDL. Like in c++ version of ImGUI ;-)

  9. Coldzer0 commented on Nov 16, 2023

    @Coldzer0

    I wish not use SDL. Like in c++ version of ImGUI ;-)

    ImGui has a lot of backends, and SDL is one of them; you can use any of them.
    What operation system are you targeting?

  10. tigrazone commented on Nov 16, 2023

    @tigrazone
    Author

    And I think If you want talk more about it we may use something like Discord my handle is coldzer0

    I dont use Discord.
    Preffered os for me is Windows and Linux. I like to use backends OpenGL/GLFW without SDL, maybe Vulkan

  11. tigrazone commented on Oct 29, 2024

    @tigrazone
    Author

    ok. what about rtx usage after 1 year of my question.
    is example with rtx pipeline and ray_query pipeline exists?
    with SDL is not a problem.

    one more question. Is this repo works on mac?

  12. tigrazone commented on Oct 29, 2024

    @tigrazone
    Author

    one more idea is gltf viewer with ray_query pipeline. i interesed with build PBR raytracer

  13. BeRo1985 commented on Nov 2, 2024

    @BeRo1985
    Owner

    The current PasVulkan’s Scene3D based gltfviewer has been using ray_query for raytraced shadows for a long time. If a GPU with raytracing capabilities is detected, it enables raytraced shadows; otherwise, it falls back to shadow mapping. PasVulkan’s Scene3D also includes fairly complete raytracing support on the mesh side, including BVH BLAS refitting and rebuilds for animations and dynamic meshes, among other features. However, the code for BVH BLAS compaction (a two-pass method for creating BVH BLAS instances for static meshes that are smaller in VRAM than those built with a one-pass approach) is not yet complete. This feature is primarily for memory optimization and does not impact other functionalities.

    Additionally, full raytracing/pathtracing support is planned for PasVulkan’s Scene3D in the near future, although this won’t be implemented until after I complete the current PasVulkan-based indie game project.

    Regarding Vulkan on macOS, it’s a complicated topic. Apple does not support Vulkan natively, so you would need to use the MoltenVK Vulkan-to-Metal wrapper. However, MoltenVK cannot wrap all Vulkan features to Metal because Metal lacks support for some Vulkan features or supports them in a way that makes wrapping challenging or even impossible.

  14. tigrazone commented on Nov 2, 2024

    @tigrazone
    Author

    thank you for impressive work. I go to test it

  15. tigrazone commented on Nov 2, 2024

    @tigrazone
    Author

    I'm try to compile gltfviewer but I have compiler error.
    Before compile I call start.bat
    Windows 10.
    Lazarus 3.6
    compiler-err1

  16. 6 remaining items

  17. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    maybe exe can be smaller?
    for example, switchable parameters.
    also i have proposition - please add some indicator of loading file.
    I try to load big gltf and where is no indicator

  18. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    big scenes rendered with 4-5 fps on my rtx 3060.
    used rtx or why is slow?

  19. BeRo1985 commented on Nov 3, 2024

    @BeRo1985
    Owner

    Unfortunately, the executable can’t be made smaller, as it’s now effectively a comprehensive game engine (currently powering two commercial games in development). The name "gltfviewer" might be misleading here, as it has evolved into a general 3D model viewer that runs on a full game engine. The gltfviewer is intended primarily as a starting-point example project for using the Scene3D stuff.

    The performance slowdown could be due to raytracing but might also result from running out of video RAM, causing the system to swap in and out, which can be extremely slow—especially if you don’t have ReBAR-ready hardware (CPU, motherboard, or GPU).

  20. BeRo1985 commented on Nov 3, 2024

    @BeRo1985
    Owner

    And try CTRL+F8 for dumping the Vulkan-side memory usage, and Shift+F8 for Resource usage and just F8 for CPU+GPU profiler time values (it will get dump into the terminal console window).

  21. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    Delphi build works without console and I dont know why

  22. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    about 34 MB.
    Maybe some special flags?
    Give it to me

  23. BeRo1985 commented on Nov 3, 2024

    @BeRo1985
    Owner

    about 34 MB.
    Maybe some special flags?
    Give it to me

    image

    Delphi build works without console and I dont know why

    And with FreePascal + Lazarus?

  24. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    On this screen all checkboxes off in my Lazarus. Only last where strip is on

  25. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    Fpc+Lazarus generate code with console by default. Maybe sort of "generate gui app" dont show console

  26. tigrazone commented on Nov 3, 2024

    @tigrazone
    Author

    If gltfviwer is demo for game engine, where I can read about this engine? And maybe cheatsheet of api?

  27. tigrazone commented on Nov 12, 2024

    @tigrazone
    Author

    about 34 MB
    When I removed -dDEBUG from Project/Project Options/Custom Options I can compile 34 MB exe

  28. tigrazone commented on Dec 2, 2024

    @tigrazone
    Author

    Additionally, full raytracing/pathtracing support is planned for PasVulkan’s Scene3D in the near future, although this won’t be implemented until after I complete the current PasVulkan-based indie game project.

    When you plan to implement fully path tracing support? I interested on this feature

  29. tigrazone commented on Dec 2, 2024

    @tigrazone
    Author

    please don't take it as impudence, but could you please give an example of path tracing with accumulation and use of tonemapper?
    And save result of rendering to hdr or png?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions