Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3344a58
tiny adjustments to get a more complex example with Mitsuba Loader to…
Dec 29, 2025
6cb4956
`system::to_string` for `IAsset::E_TYPE`
Dec 30, 2025
d3958e5
add some operators to hlsl::matrix in C++
Jan 15, 2026
9ddc954
minor improvements and bugfixes
Jan 23, 2026
94696a0
fix minor bugs
Jan 26, 2026
04e6638
fix commandpool reset handling (being false failed)
Jan 26, 2026
4320efc
point at working example 40
Jan 26, 2026
70d4208
Merge remote-tracking branch 'remotes/origin/master' into new_pt
Jan 26, 2026
7753681
improve the SBT api for RT pipeline
Jan 27, 2026
2685e21
precompile fri ext
AnastaZIuk Jan 27, 2026
a8ce292
Merge branch 'new_pt' of github.com:Devsh-Graphics-Programming/Nabla …
AnastaZIuk Jan 27, 2026
3a5d058
update examples_tests submodule
AnastaZIuk Jan 27, 2026
6d8b42d
update examples_tests submodule
AnastaZIuk Jan 27, 2026
37be95b
pick important encoding fix from IES branch fixing (I hope) CI HLSL b…
AnastaZIuk Jan 27, 2026
7fc9ec3
fix a super silly bug
Jan 27, 2026
74f56a2
fix a bug in creating multiple raytracing pipelines in one
Jan 27, 2026
e8c18fb
fix the bug Erfan spotted
Jan 27, 2026
d227546
update examples_tests submodule
Jan 27, 2026
2b08a15
refactor fri ext, lib + archive based with separate precompiled .spv,…
AnastaZIuk Jan 29, 2026
25b4aba
remove old trash
AnastaZIuk Jan 29, 2026
a51e270
update examples_tests
AnastaZIuk Jan 29, 2026
bbcfabd
pull new_pt & resolve conflicts
AnastaZIuk Jan 29, 2026
cfab6f3
start implementing ICPUScene !
Jan 30, 2026
c92dc42
Merge remote-tracking branch 'remotes/origin/fri_precomp_new_pt' into…
Jan 30, 2026
4978b36
make the example submodule point at the correct thing
Jan 30, 2026
4e093f8
mark TODOs for @AnastaZIuk to coordinate
Jan 31, 2026
a39059c
do the ICPUScene filling code with instances (everything but materials)
Jan 31, 2026
fdfb4d4
Merge remote-tracking branch 'remotes/origin/master' into new_pt
Jan 31, 2026
e895a3f
post merge submodule update
Jan 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples_tests
Submodule examples_tests updated 50 files
+3 −1,125 22_RaytracedAO/Renderer.cpp
+1 −37 22_RaytracedAO/Renderer.h
+0 −150 22_RaytracedAO/SimpleJson.cpp
+0 −78 22_RaytracedAO/SimpleJson.h
+0 −36 22_RaytracedAO/common.h
+0 −28 22_RaytracedAO/config.json
+0 −28 22_RaytracedAO/config.json.template
+0 −74 22_RaytracedAO/cull.comp
+0 −40 22_RaytracedAO/extractCubemap.bat
+0 −36 22_RaytracedAO/fillVisBuffer.frag
+22 −665 22_RaytracedAO/main.cpp
+0 −32 22_RaytracedAO/mergeCubemap.bat
+0 −50 22_RaytracedAO/pipeline.groovy
+0 −74 22_RaytracedAO/raytraceCommon.h
+0 −46 22_RaytracedAO/test_scenes.txt
+0 −42 22_RaytracedAO/virtualGeometry.glsl
+1 −0 24_ColorSpaceTest/CMakeLists.txt
+1 −0 30_ComputeShaderPathTracer/CMakeLists.txt
+74 −0 40_PathTracer/CMakeLists.txt
+26 −0 40_PathTracer/app_resources/pathtrace/beauty.hlsl
+26 −0 40_PathTracer/app_resources/pathtrace/debug.hlsl
+25 −0 40_PathTracer/app_resources/pathtrace/previs.hlsl
+42 −0 40_PathTracer/app_resources/present/default.hlsl
+28 −0 40_PathTracer/include/common.hpp
+278 −0 40_PathTracer/include/io/CSceneLoader.h
+197 −0 40_PathTracer/include/renderer/CRenderer.h
+97 −0 40_PathTracer/include/renderer/CScene.h
+158 −0 40_PathTracer/include/renderer/CSession.h
+1,046 −0 40_PathTracer/include/renderer/SAASequence.h
+94 −0 40_PathTracer/include/renderer/present/CWindowPresenter.h
+204 −0 40_PathTracer/include/renderer/present/IPresenter.h
+104 −0 40_PathTracer/include/renderer/resolve/CBasicRWMCResolver.h
+47 −0 40_PathTracer/include/renderer/resolve/IResolver.h
+9 −0 40_PathTracer/include/renderer/shaders/common.hlsl
+23 −0 40_PathTracer/include/renderer/shaders/pathtrace/common.hlsl
+48 −0 40_PathTracer/include/renderer/shaders/pathtrace/push_constants.hlsl
+60 −0 40_PathTracer/include/renderer/shaders/present/push_constants.hlsl
+35 −0 40_PathTracer/include/renderer/shaders/resolve/rwmc.hlsl
+68 −0 40_PathTracer/include/renderer/shaders/scene.hlsl
+111 −0 40_PathTracer/include/renderer/shaders/session.hlsl
+592 −0 40_PathTracer/main.cpp
+541 −0 40_PathTracer/src/io/CSceneLoader.cpp
+710 −0 40_PathTracer/src/renderer/CRenderer.cpp
+78 −0 40_PathTracer/src/renderer/CScene.cpp
+306 −0 40_PathTracer/src/renderer/CSession.cpp
+300 −0 40_PathTracer/src/renderer/present/CWindowPresenter.cpp
+76 −0 40_PathTracer/src/renderer/resolve/CBasicRWMCResolver.cpp
+1 −0 71_RayTracingPipeline/CMakeLists.txt
+37 −57 71_RayTracingPipeline/main.cpp
+8 −3 CMakeLists.txt
68 changes: 68 additions & 0 deletions include/nbl/asset/IAsset.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,72 @@ concept Asset = std::is_base_of_v<IAsset,T>;

}

namespace nbl::system::impl
{
template<>
struct to_string_helper<asset::IAsset::E_TYPE>
{
private:
using enum_t = asset::IAsset::E_TYPE;

public:
static inline std::string __call(const enum_t value)
{
switch (value)
{
case enum_t::ET_BUFFER:
return "ICPUBuffer";
case enum_t::ET_BUFFER_VIEW:
return "ICPUBufferView";
case enum_t::ET_SAMPLER:
return "ICPUSampler";
case enum_t::ET_IMAGE:
return "ICPUImage";
case enum_t::ET_IMAGE_VIEW:
return "ICPUImageView";
case enum_t::ET_DESCRIPTOR_SET:
return "ICPUDescriptorSet";
case enum_t::ET_DESCRIPTOR_SET_LAYOUT:
return "ICPUDescriptorSetLayout";
case enum_t::ET_SKELETON:
return "ICPUSkeleton";
case enum_t::ET_ANIMATION_LIBRARY:
return "ICPUAnimationLibrary";
case enum_t::ET_PIPELINE_LAYOUT:
return "ICPUPipelineLayout";
case enum_t::ET_SHADER:
return "IShader";
case enum_t::ET_GEOMETRY:
return "IGeometry<ICPUBuffer>";
case enum_t::ET_RENDERPASS:
return "ICPURenderpass";
case enum_t::ET_FRAMEBUFFER:
return "ICPUFramebuffer";
case enum_t::ET_GRAPHICS_PIPELINE:
return "ICPUGraphicsPipeline";
case enum_t::ET_BOTOM_LEVEL_ACCELERATION_STRUCTURE:
return "ICPUBottomLevelAccelerationStructure";
case enum_t::ET_TOP_LEVEL_ACCELERATION_STRUCTURE:
return "ICPUTopLevelAccelerationStructure";
case enum_t::ET_GEOMETRY_COLLECTION:
return "ICPUGeometryCollection";
case enum_t::ET_MORPH_TARGETS:
return "ICPUMorphTargets";
case enum_t::ET_COMPUTE_PIPELINE:
return "ICPUComputePipeline";
case enum_t::ET_PIPELINE_CACHE:
return "ICPUPipelineCache";
case enum_t::ET_SCENE:
return "ICPUScene";
case enum_t::ET_RAYTRACING_PIPELINE:
return "ICPURayTracingPipeline";
case enum_t::ET_IMPLEMENTATION_SPECIFIC_METADATA:
return "";
default:
break;
}
return "";
}
};
}
#endif
9 changes: 9 additions & 0 deletions include/nbl/asset/IBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,15 @@ struct SBufferRange
inline bool operator!=(const SBufferRange<const BufferType>& rhs) const { return !operator==(rhs); }
};

template<typename BufferType>
struct SStridedRange
{
inline operator bool() const {return range.isValid();}

SBufferRange<BufferType> range = {};
uint32_t stride = 0;
};

}

namespace std
Expand Down
50 changes: 26 additions & 24 deletions include/nbl/asset/ICPUBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,30 +119,32 @@ class ICPUBuffer final : public asset::IBuffer, public IPreHashed
return (m_alignment > 0 && !(m_alignment & (m_alignment - 1)));
}

protected:
inline void discardContent_impl() override
{
if (m_data)
m_mem_resource->deallocate(m_data, m_creationParams.size, m_alignment);
m_data = nullptr;
m_mem_resource = nullptr;
m_creationParams.size = 0ull;
}

private:
ICPUBuffer(SCreationParams&& params) :
asset::IBuffer({ params.size, EUF_TRANSFER_DST_BIT }), m_data(params.data),
m_mem_resource(params.memoryResource), m_alignment(params.alignment) {}

~ICPUBuffer() override {
discardContent_impl();
}

inline void visitDependents_impl(std::function<bool(const IAsset*)> visit) const override {}

void* m_data;
core::smart_refctd_ptr<core::refctd_memory_resource> m_mem_resource;
size_t m_alignment;
protected:
inline void discardContent_impl() override
{
if (m_data)
m_mem_resource->deallocate(m_data, m_creationParams.size, m_alignment);
m_data = nullptr;
m_mem_resource = nullptr;
m_creationParams.size = 0ull;
}

private:
// TODO: we should remove the addition of TRANSFER_DST_BIT because its the asset converter patcher that handles that
// But we need LLVM-pipe CI first so I don't have to test 70 examples by hand
inline ICPUBuffer(SCreationParams&& params) : asset::IBuffer({params.size,params.usage|EUF_TRANSFER_DST_BIT}),
m_data(params.data), m_mem_resource(params.memoryResource), m_alignment(params.alignment) {}

inline ~ICPUBuffer() override
{
discardContent_impl();
}

inline void visitDependents_impl(std::function<bool(const IAsset*)> visit) const override {}

void* m_data;
core::smart_refctd_ptr<core::refctd_memory_resource> m_mem_resource;
size_t m_alignment;
};

} // end namespace nbl::asset
Expand Down
12 changes: 9 additions & 3 deletions include/nbl/asset/ICPUGeometryCollection.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,15 @@ class NBL_API2 ICPUGeometryCollection : public IAsset, public IGeometryCollectio
inline E_TYPE getAssetType() const override {return AssetType;}

//
inline bool valid() const //override
inline bool valid() const override
{
for (const auto& ref : m_geometries)
if (!ref.geometry->valid())
return false;
{
if (!ref.operator bool() || !ref.geometry->valid())
return false;
if (ref.jointRedirectView.src && ref.jointRedirectView.composed.getRange<hlsl::shapes::AABB<1,uint32_t>>().maxVx[0]>=getJointCount())
return false;
}
return true;
}

Expand Down Expand Up @@ -61,6 +65,8 @@ class NBL_API2 ICPUGeometryCollection : public IAsset, public IGeometryCollectio
return false;
}

//
inline const core::vector<SGeometryReference>& getGeometries() const {return base_t::getGeometries();}
//
inline core::vector<SGeometryReference>* getGeometries()
{
Expand Down
4 changes: 2 additions & 2 deletions include/nbl/asset/ICPURayTracingPipeline.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ namespace nbl::asset
{

//! CPU Version of RayTracing Pipeline
class ICPURayTracingPipeline final : public ICPUPipeline<IRayTracingPipeline<ICPUPipelineLayout>>
class ICPURayTracingPipeline final : public ICPUPipeline<IRayTracingPipeline<ICPUPipelineLayout,ICPUBuffer>>
{
using pipeline_base_t = IRayTracingPipeline<ICPUPipelineLayout>;
using pipeline_base_t = IRayTracingPipeline<ICPUPipelineLayout,ICPUBuffer>;
using base_t = ICPUPipeline<pipeline_base_t>;

public:
Expand Down
Loading
Loading