Modern C++14 library for the development of real-time graphical applications

Overview

CI Community Support
Build Status Build status Forums Discord Patreon Paypal

bs::framework is a C++ library that aims to provide a unified foundation for the development of real-time graphical applications, whether games, engines or tools.

Highlights

  • Built from the ground up in modern C++14 with a clean user-facing API
  • Lightweight implementations without the crud often found in older, larger solutions
  • Clean, highly modular architecture that can be easily understood, modified and built upon
  • Cross-platform, highly optimized, multi-threaded core capable of running very demanding projects
  • Focus on modern technologies and high-fidelity graphics
  • Fully documented codebase with an extensive API reference

Current feature-set includes a wide range of high level systems, ranging from math and utility libraries, to a physically based renderer backed by Vulkan, DirectX or OpenGL, all the way to input, GUI, physics, audio, animation and scripting systems, with asset support for most popular resource formats.

Features

  • Features - A detailed list of all currently available features.
  • Roadmap - A list of features to be implemented in both near and far future.

Get started

  • Documentation - Head over to the "User manuals" section to learn how to use the framework from the ground up. Use the API reference to look up what a particular class/method does.
  • Examples - Grab a set of working examples and start tinkering and analyzing them to figure out how things work. They are well documented and can be used for quickly learning the framework.
  • Compiling - Learn how to compile the framework from the source code.

Screenshots

1 2

3 4

5 6

Issues
  • Vulkan to Metal - MacOSX - integration - WIP

    Vulkan to Metal - MacOSX - integration - WIP

    This compiles and links with VulkanSDK and activated Vulkan API on MacOSX. I've build it with XCode 10 and MacOSX 10.13.6

    Requirements: VulkanSDK >= 1.1.92.1

    OLD: MoltenVK 1.0.24 (because VK_FORMAT_B10G11R11_UFLOAT_PACK32 format support) I've updated vk_mem_alloc.h to latest version. It is a partial Vulkan 1.1 port as well.

    opened by remoe 83
  • Issue with Fonts and GUI Elements & Weird build errors when compiling in Release

    Issue with Fonts and GUI Elements & Weird build errors when compiling in Release

    Back with another issue,

    Running DX build of the framework (latest version) code is here: https://hastebin.com/osukigepit.cpp

    The font I'm loading is from the examples data GUI folder

    Error I'm getting: Run-Time Check Failure #2 - Stack around the variable 'skin' was corrupted. https://i.imgur.com/03Osb25.png

    Without loading a custom font I get this: https://i.imgur.com/7q2VAoM.png

    No clue where to go from here with this. First time I've ever encountered it. When running in release the error is of course incomprehensible. https://i.imgur.com/4oQxg1M.png

    Building in Release causes these errors: https://i.imgur.com/fZHjb5l.png I have to hit rebuild all to get rid of them.

    Next to that I always have these errors: https://i.imgur.com/0WoLJEM.png

    But they don't matter for the build, everything keeps running fine. might just be a setting in my visual studio though.

    Hope this makes sense to you and it's on my side that I'm doing something wrong.

    Sorry for reporting so many issues but I really like working with your framework and would like to keep going without ripping out my hairs ;)

    opened by Pitj3 24
  • Integrate EnTT ECS components

    Integrate EnTT ECS components

    This isn't a feature request so much as me just writing out an issue to track my thoughts on the matter. I'm going to be evaluating bs framework for whether EnTT can be used as an alternative scene framework. Luckily bsf is already composition-friendly from what I can tell.

    @BearishSun I should just make a Source/Plugin/bsfEnTT plugin right when I fork and play around right?

    type: enhancement [MAJOR] 
    opened by pgruenbacher 20
  • Full Cotire Support

    Full Cotire Support

    This set of patches enables full cotire support. There are sill problems with building with cotire on mac, which are still to be fixed, but I am unable to fix them due to me not having a mac at all.

    This also enabled -fdiagnotisics-color=always on ninja builds.

    This resolves #139.

    opened by cwfitzgerald 20
  • Sample application seg faults on macOS

    Sample application seg faults on macOS

    The first sample application at https://www.bsframework.io/docs/build.html seg faults in Application::startUp. This occurs on both master (58a47c8) and release-v1.0.0 (40e0d08). I'm using the exact CMake and source code from the example. The fault occurs with prebuilt binaries as well as with a manually built bsf. No CrashReports are created. I'm running macOS High Sierra, and installed ossp-uuid using HomeBrew.

    $ cat Main.cpp
    #include "BsApplication.h"
    
    int main()
    {
        using namespace bs;
        VideoMode videoMode(1280, 720);
        Application::startUp(videoMode, "Example", false);
        Application::instance().runMainLoop();
        Application::shutDown();
    
        return 0;
    }
    
    $ cat CMakeLists.txt
    # Minimum version of CMake as required by bsf
    cmake_minimum_required (VERSION 3.9.0)
    
    # Name of your project
    project (myProject)
    
    # Make sure to use the C++14 standard
    set(CMAKE_CXX_STANDARD 14)
    
    # Build an executable from the provided C++ files
    add_executable(myApp "Main.cpp")
    
    # Path to where you have installed bsf
    set(bsf_INSTALL_DIR "/Users/jeff/opt/bsf")
    
    # Let CMake know where to find the Findbsf.cmake file (at current folder)
    set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}")
    
    # Find bsf libraries and headers
    find_package(bsf REQUIRED)
    
    # Link bsf library with your application
    target_link_libraries(myApp PRIVATE bsf)
    
    $ mkdir build
    
    $ cd build
    
    $ cmake .. -G Ninja
    -- The C compiler identification is AppleClang 9.1.0.9020039
    -- The CXX compiler identification is AppleClang 9.1.0.9020039
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Looking for bsf installation...
    -- ...bsf OK.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/jeff/var/src/cpp/build
    
    $ ninja
    [2/2] Linking CXX executable myApp
    
    $ ./myApp
    Segmentation fault: 11
    
    opened by jeffs 20
  • imgui plugin [feature]

    imgui plugin [feature]

    I've started another branch for imgui plugin while I wait for feedback on the ECS renderer. https://github.com/pgruenbacher/bsf/blob/imgui/Source/Plugins/bsfImgui/Src/imgui_impl_bsf.cpp

    This issue is just to track these feature changes. It seems pretty straight forward enough in terms of mapping BsInput to the imgui io. We'll see if it the existing imgui vulkan and opengl implementations can be used directly.

    type: enhancement [MAJOR] 
    opened by pgruenbacher 18
  • fix sse, UtilityTest

    fix sse, UtilityTest

    I don't actually really expect this to be merged but is meant for comparison to highlight some issues and fixes.

    1. The BUILD_TESTS works if I add -msse4.1 to my cmakelist.
    2. UtitliyTest has an infinite recurisve ERR due to modules not being setup, so i added the minimal modules. Likewise MemStack::beginThread was necessary.
    3. StaticVector doesn't seem to work, so I took them out and just did std::vector::reserve instead. I feel like Static allocations are a bit of an overoptimization compared to just doing basic reserve operations in general, it just adds fragility.
    opened by pgruenbacher 17
  • Added external window resize

    Added external window resize

    With these methods when using an external window handle, the window can be resized properly. Only tested on Linux as I couldn't get the master branch version running on my laptop: https://pastebin.com/eT9gZwv8

    fixes #382

    opened by hhyyrylainen 12
  • Crash on loading skybox texture asset

    Crash on loading skybox texture asset

    https://discourse.bsframework.io/t/random-skybox-texture-loading-crash/500?u=hhyyrylainen

    Applying this diff to examples:

    diff --git a/Source/SkeletalAnimation/Main.cpp b/Source/SkeletalAnimation/Main.cpp
    index 3c9b87a..778d3a9 100644
    --- a/Source/SkeletalAnimation/Main.cpp
    +++ b/Source/SkeletalAnimation/Main.cpp
    @@ -88,7 +88,8 @@ namespace bs
                    assets.exampleMaterial->setTexture("gMetalnessTex", assets.exampleMetalnessTex);
     
                    // Load an environment map
    -               assets.exampleSkyCubemap = ExampleFramework::loadTexture(ExampleTexture::EnvironmentRathaus, false, true, true);
    +        assets.exampleSkyCubemap = bs::gResources().load<bs::Texture>(exampleDataPath + "Materials/Thrive_ocean_skybox.asset");
    +        // assets.exampleSkyCubemap = ExampleFramework::loadTexture(ExampleTexture::EnvironmentRathaus, false, true, true);
     
                    return assets;
            }
    @@ -212,4 +213,4 @@ int main()
            Application::shutDown();
     
            return 0;
    -}
    \ No newline at end of file
    +}
    

    And putting this: https://boostslair.com/files/temp/thrive/Thrive_ocean_skybox.asset asset in: bsfExamples/Data/Materials Results in this crash:

    0  in ?? of /lib64/libnvidia-glcore.so.430.40
    1  in ?? of /lib64/libnvidia-glcore.so.430.40
    2  in ?? of /lib64/libnvidia-glcore.so.430.40
    3  in ?? of /lib64/libnvidia-glcore.so.430.40
    4  in ?? of /lib64/libnvidia-glcore.so.430.40
    5  in ?? of /lib64/libnvidia-glcore.so.430.40
    6  in ?? of /lib64/libnvidia-glcore.so.430.40
    7  in bs::ct::GLTextureBuffer::upload of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Plugins/bsfGLRenderAPI/BsGLPixelBuffer.cpp:263
    8  in bs::ct::GLTexture::writeDataImpl of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Plugins/bsfGLRenderAPI/BsGLTexture.cpp:445
    9  in bs::ct::Texture::writeData of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/Image/BsTexture.cpp:358
    10 in bs::Texture::<lambda(bs::SPtr<bs::ct::Texture>&, bs::UINT32, bs::UINT32, bs::SPtr<bs::PixelData>&, bool, bs::AsyncOp&)>::operator()(const bs::SPtr &, bs::UINT32, bs::UINT32, const bs::SPtr &, bool, bs::AsyncOp &) const of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/Image/BsTexture.cpp:127
    11 in std::_Function_handler<void(const std::shared_ptr<bs::ct::Texture>&, unsigned int, unsigned int, const std::shared_ptr<bs::PixelData>&, bool, bs::AsyncOp&), bs::Texture::writeData(bs::SPtr<bs::PixelData>&, bs::UINT32, bs::UINT32, bool)::<lambda(bs::SPtr<bs::ct::Texture>&, bs::UINT32, bs::UINT32, bs::SPtr<bs::PixelData>&, bool, bs::AsyncOp&)> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<bs::ct::Texture> &, unsigned int &&, unsigned int &&, const std::shared_ptr<bs::PixelData> &, bool &&, bs::AsyncOp &) of /usr/include/c++/8/bits/std_function.h:297
    12 in std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)>::operator()(std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&) const of /usr/include/c++/8/bits/std_function.h:687
    13 in std::__invoke_impl<void, std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)>&, std::shared_ptr<bs::ct::Texture>&, unsigned int&, unsigned int&, std::shared_ptr<bs::PixelData>&, bool&, bs::AsyncOp&>(std::__invoke_other, std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)>&, std::shared_ptr<bs::ct::Texture>&, unsigned int&, unsigned int&, std::shared_ptr<bs::PixelData>&, bool&, bs::AsyncOp&) of /usr/include/c++/8/bits/invoke.h:60
    14 in std::__invoke<std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)>&, std::shared_ptr<bs::ct::Texture>&, unsigned int&, unsigned int&, std::shared_ptr<bs::PixelData>&, bool&, bs::AsyncOp&>(std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)>&, std::shared_ptr<bs::ct::Texture>&, unsigned int&, unsigned int&, std::shared_ptr<bs::PixelData>&, bool&, bs::AsyncOp&) of /usr/include/c++/8/bits/invoke.h:95
    15 in std::_Bind<std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)> (std::shared_ptr<bs::ct::Texture>, unsigned int, unsigned int, std::shared_ptr<bs::PixelData>, bool, std::_Placeholder<1>)>::__call<void, bs::AsyncOp&, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::tuple<bs::AsyncOp&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) of /usr/include/c++/8/functional:400
    16 in std::_Bind<std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)> (std::shared_ptr<bs::ct::Texture>, unsigned int, unsigned int, std::shared_ptr<bs::PixelData>, bool, std::_Placeholder<1>)>::operator()<bs::AsyncOp&, void>(bs::AsyncOp&) of /usr/include/c++/8/functional:484
    17 in std::_Function_handler<void (bs::AsyncOp&), std::_Bind<std::function<void (std::shared_ptr<bs::ct::Texture> const&, unsigned int, unsigned int, std::shared_ptr<bs::PixelData> const&, bool, bs::AsyncOp&)> (std::shared_ptr<bs::ct::Texture>, unsigned int, unsigned int, std::shared_ptr<bs::PixelData>, bool, std::_Placeholder<1>)> >::_M_invoke(std::_Any_data const&, bs::AsyncOp&) of /usr/include/c++/8/bits/std_function.h:297
    18 in std::function<void (bs::AsyncOp&)>::operator()(bs::AsyncOp&) const of /usr/include/c++/8/bits/std_function.h:687
    19 in bs::CommandQueueBase::playbackWithNotify(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*, std::function<void (unsigned int)>) of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/CoreThread/BsCommandQueue.cpp:113
    20 in bs::CommandQueueBase::playback of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/CoreThread/BsCommandQueue.cpp:140
    21 in std::__invoke_impl<void, void (bs::CommandQueueBase::*&)(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*), bs::CommandQueueBase*&, std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*&> of /usr/include/c++/8/bits/invoke.h:73
    22 in std::__invoke<void (bs::CommandQueueBase::*&)(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*), bs::CommandQueueBase*&, std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*&> of /usr/include/c++/8/bits/invoke.h:95
    23 in std::_Bind<void (bs::CommandQueueBase::*(bs::CommandQueueBase*, std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*))(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) of /usr/include/c++/8/functional:400
    24 in std::_Bind<void (bs::CommandQueueBase::*(bs::CommandQueueBase*, std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*))(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*)>::operator()<, void>() of /usr/include/c++/8/functional:484
    25 in std::_Function_handler<void (), std::_Bind<void (bs::CommandQueueBase::*(bs::CommandQueueBase*, std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*))(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*)> >::_M_invoke(std::_Any_data const&) of /usr/include/c++/8/bits/std_function.h:297
    26 in std::function<void ()>::operator()() const of /usr/include/c++/8/bits/std_function.h:687
    27 in bs::CommandQueueBase::playbackWithNotify(std::queue<bs::QueuedCommand, std::deque<bs::QueuedCommand, bs::StdAlloc<bs::QueuedCommand, bs::GenAlloc> > >*, std::function<void (unsigned int)>) of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/CoreThread/BsCommandQueue.cpp:124
    28 in bs::CoreThread::runCoreThread of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfCore/CoreThread/BsCoreThread.cpp:117
    29 in std::__invoke_impl<void, void (bs::CoreThread::*&)(), bs::CoreThread*&> of /usr/include/c++/8/bits/invoke.h:73
    30 in std::__invoke<void (bs::CoreThread::*&)(), bs::CoreThread*&> of /usr/include/c++/8/bits/invoke.h:95
    31 in std::_Bind<void (bs::CoreThread::*(bs::CoreThread*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) of /usr/include/c++/8/functional:400
    32 in std::_Bind<void (bs::CoreThread::*(bs::CoreThread*))()>::operator()<, void>() of /usr/include/c++/8/functional:484
    33 in std::_Function_handler<void (), std::_Bind<void (bs::CoreThread::*(bs::CoreThread*))()> >::_M_invoke(std::_Any_data const&) of /usr/include/c++/8/bits/std_function.h:297
    34 in std::function<void ()>::operator()() const of /usr/include/c++/8/bits/std_function.h:687
    35 in bs::PooledThread::run of /home/hhyyrylainen/Projects/bsfExamples/bsf/Source/Foundation/bsfUtility/Threading/BsThreadPool.cpp:122
    36 in std::__invoke_impl<void, void (bs::PooledThread::*&)(), bs::PooledThread*&> of /usr/include/c++/8/bits/invoke.h:73
    37 in std::__invoke<void (bs::PooledThread::*&)(), bs::PooledThread*&> of /usr/include/c++/8/bits/invoke.h:95
    38 in std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) of /usr/include/c++/8/functional:400
    39 in std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>::operator()<, void>() of /usr/include/c++/8/functional:484
    40 in std::__invoke_impl<void, std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>>(std::__invoke_other, std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>&&) of /usr/include/c++/8/bits/invoke.h:60
    41 in std::__invoke<std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>>(std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()>&&) of /usr/include/c++/8/bits/invoke.h:95
    42 in std::thread::_Invoker<std::tuple<std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) of /usr/include/c++/8/thread:244
    43 in std::thread::_Invoker<std::tuple<std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()> > >::operator()() of /usr/include/c++/8/thread:253
    44 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::_Bind<void (bs::PooledThread::*(bs::PooledThread*))()> > > >::_M_run() of /usr/include/c++/8/thread:196
    45 in ?? of /lib64/libstdc++.so.6
    46 in start_thread of /lib64/libpthread.so.0
    47 in clone of /lib64/libc.so.6
    

    This is on Linux with OpenGL and Vulkan (there's a slightly different crash there, but I don't have a callstack on hand for it right now).

    There might be an additional crash lurking somewhere, but I can't try to locate it (see the thread I linked) because this crash always happens.

    type: bug 
    opened by hhyyrylainen 12
  • Warning about type-punned pointer in BsBitwise.h

    Warning about type-punned pointer in BsBitwise.h

    Compiling with gcc (GCC) 8.3.1 I get this warning whenever bsfUtility/Utility/BsBitwise.h is included. Here's the warnings:

    /home/hhyyrylainen/Projects/Leviathan/build/ThirdParty/include/bsfUtility/Utility/BsBitwise.h: Staattinen jäsenfunktio ”static float bs::Bitwise::float10ToFloat(bs::UINT32)”:
    /home/hhyyrylainen/Projects/Leviathan/build/ThirdParty/include/bsfUtility/Utility/BsBitwise.h:682:12: varoitus: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
        return *(float*)&output;
                ^~~~~~~~~~~~~~~
    /home/hhyyrylainen/Projects/Leviathan/build/ThirdParty/include/bsfUtility/Utility/BsBitwise.h: Staattinen jäsenfunktio ”static float bs::Bitwise::float11ToFloat(bs::UINT32)”:
    /home/hhyyrylainen/Projects/Leviathan/build/ThirdParty/include/bsfUtility/Utility/BsBitwise.h:722:12: varoitus: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
        return *(float*)&output;
                ^~~~~~~~~~~~~~~
    
    type: bug 
    opened by hhyyrylainen 10
  • Lighting broken?

    Lighting broken?

    I've been using the Framework since last night and so far I really enjoy using it. But when it comes to lighting, I get a bit confused by the results.

    Created a small demo to explain what I mean: https://hastebin.com/pedocepeca.cpp

    In this I'm just using a simple Radial light, which already doesn't behave as expected. one of the triangles of the quad never gets lit, the shading is not what you would assume from a light at that position. (you'd assume the top of the cube to be lit, instead the bottom is lit? )

    Here is a screencap of the application running: https://i.imgur.com/9Z4f4CG.png

    And a screencap of the console which has some stuff I get confused about as well: https://i.imgur.com/yeuJ9j3.png

    Is there just something I'm completely doing wrong?

    I've tried directional lights as well, just can't get them to do what I want. Shadows not showing as well

    opened by Pitj3 10
  • [PSA] - Project Death Update

    [PSA] - Project Death Update

    Banshee/bsf in its current state is unlikely to be continued for the time being, but a much improved version has been in the works for a while and I hope I can share it with you guys in the next year or so!

    -BearishSun July 2nd, 2021

    If you need a game engine today, look somewhere else. If you're invested in this project then hang tight for a while longer. I'm sure the wait will be worth it.

    opened by alchemyyy 0
  • [PSA] DEAD - Project is [assumed to be] dead

    [PSA] DEAD - Project is [assumed to be] dead

    Just leaving this hear for people to see.

    If the project is not dead this issue can be remove (and perhaps some of the outstanding PRs can be looked at)

    opened by MatthewScholefield 3
  • How to turn off the automatic download function in CMAKE

    How to turn off the automatic download function in CMAKE

    At that site, I used cmake to download and failed. I used other tools to download successfully. But when building, cmake always has to download. What should I do?

    opened by runner0353 0
  • memcpy parameters flipped

    memcpy parameters flipped

    https://github.com/GameFoundry/bsf/blob/master/Source/Foundation/bsfCore/Text/BsTextData.cpp#L604

    A few places in the same file has the same issue. Data is being copied from new buffer to old instead of from old to new. Whenever the buffers need to expand the old contents will be nuked.

    opened by jayrulez 0
  • Mesh and material in one file

    Mesh and material in one file

    I'm currently writing an importer for a custom mesh file format which stores the material information and the mesh data in the same file. My question would be, what is the best practice way of adding Material information to a mesh at import time, since (as far as I found out) the material needs to be loaded and assigned seperatly to a renderable?

    opened by Nostritius 0
  • macOS 10.14+ support

    macOS 10.14+ support

    BsMacOSContext in bsfGLRendererAPI uses deprecated macOS OpenGL/AppKit functions such as NSOpenGLContext setView and NSOpenGLCPSwapInterval. As result - run bsf applications is not possible on modern OS X versions. Is there any solutions for this?

    opened by nikitamiroshnichenko 0
Overlay Microsoft Flight Simulator (FS2020) aircraft data onto real airport charts in real-time

FLIGHTSIM CHARTS Introduction Overlay Microsoft Flight Simulator (FS2020) aircraft data onto real airport charts in real-time. Instantly teleport to a

Scott Vincent 3 May 31, 2022
Kimera is a C++ library for real-time metric-semantic simultaneous localization and mapping

Kimera is a C++ library for real-time metric-semantic simultaneous localization and mapping, which uses camera images and inertial data to build a semantically annotated 3D mesh of the environment. Kimera is modular, ROS-enabled, and runs on a CPU.

null 1.2k Jun 23, 2022
Dear ImGui is a bloat-free graphical user interface library for C++

dear imgui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

Douglas McCloskey 6 Oct 27, 2020
Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities

Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities

Raul Mur-Artal 7.3k Jun 29, 2022
A toy renderer written in C using Vulkan to perform real-time ray tracing research.

This is a toy renderer written in C using Vulkan. It is intentionally minimalist. It has been developed and used for the papers "BRDF Importance Sampl

Christoph Peters 250 Jun 27, 2022
Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK 9.4k Jun 22, 2022
A personal project that uses DX12 to implement various render techniques to ultimately create breathtaking real-time visuals

D3D12Playground (Real Time) A personal project that uses DX12 to implement various render techniques to ultimately create breathtaking real-time visua

null 3 Apr 27, 2022
Source Code for "Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs" by Eric Haines and Tomas Akenine-Möller

Apress Source Code This repository accompanies Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs by Eric Haines and Tomas

Apress 819 Jun 15, 2022
A real-time DirectX 11 renderer. The renderer is named by my girlfriend's english name.

sophia Sophia is a real-time DirectX 11 renderer. It is not quite a rich graphics engine, only packages some low-level DirectX functions and contains

BB 6 Dec 11, 2021
A sample app that demonstrates several techniques for rendering real-time shadow maps

Shadows This is a D3D11 sample app that demonstrates several techniques for rendering real-time shadow maps. The following techniques are implemented:

MJP 516 Jun 21, 2022
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui

Orbit Engine Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui and more... The development of the engine is documented via

Madsycode 11 Jul 3, 2021
Graphical and minimalistic hex editor.

hexing Graphical and minimalistic hex editor. Comes with coloring of magic numbers to aid in recognizing the type of file you are dealing with. Build

null 13 Apr 18, 2022
Grapple is a graphical menu of plumbable lines.

grapple grapple is a graphical menu of plumbable lines. When run, grapple captures all output from a pipe looking for plumbable text (pattern is: (:)?

phil9 6 Nov 26, 2021
A tiny uefi graphical user interfaces libaray......

TUGUI a tiny uefi graphical user interfaces libaray...... 1.最近动态 1.添加 数学相关基础库 齐次坐标 .... 2.图形学 变换 2D/3D .... 2. 编译运行 2.1 开发环境 编译工具链: g++-mingw-w64-x86-

UnknownBugs 4 Jan 12, 2022
OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation

OpenCorr OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation. It aims to provide a devel

Zhenyu Jiang 43 Jun 22, 2022
StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR!

StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR! Inspired by libraries like XNA and Processing, StereoKit is meant to be fun to use and easy to develop with, yet still quite capable of creating professional and business ready software.

Nick Klingensmith 410 Jun 24, 2022
A multi core friendly rigid body physics and collision detection library suitable for games and VR applications.

A multi core friendly rigid body physics and collision detection library suitable for games and VR applications.

null 1.8k Jun 24, 2022
SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications.

SPIRV-Reflect SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications. SPIRV-Ref

The Khronos Group 407 Jun 18, 2022
Dear PyGui 3D Engine (early development) and Graphics API demos.

Marvel This repo is the working location of the eventual Dear PyGui 3D Engine. It also contains several single file examples of creating a triangle wi

Jonathan Hoffstadt 78 Jun 21, 2022