Skip to content

Commit 9cab317

Browse files
Merge remote-tracking branch 'remotes/origin/przemog_please_work_on_our_repo' into pathtracing
# Conflicts: # examples_tests/22.RaytracedAO/Renderer.cpp # examples_tests/22.RaytracedAO/Renderer.h # examples_tests/22.RaytracedAO/common.h # examples_tests/22.RaytracedAO/cull.comp # examples_tests/22.RaytracedAO/fillVisBuffer.frag # examples_tests/22.RaytracedAO/fillVisBuffer.vert # examples_tests/22.RaytracedAO/raygen.comp # examples_tests/22.RaytracedAO/raytraceCommon.h # examples_tests/22.RaytracedAO/virtualGeometry.glsl # include/nbl/asset/utils/CCPUMeshPackerV2.h # include/nbl/builtin/glsl/virtual_geometry/virtual_attribute_fetch.glsl # include/nbl/ext/RadeonRays/RadeonRays.h
2 parents 34f5413 + 3d38260 commit 9cab317

File tree

10 files changed

+528
-757
lines changed

10 files changed

+528
-757
lines changed

examples_tests/22.RaytracedAO/Renderer.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Renderer::Renderer(IVideoDriver* _driver, IAssetManager* _assetManager, scene::I
7878
break;
7979
}
8080

81+
<<<<<<< HEAD
8182
// set up raycount buffers
8283
{
8384
const uint32_t zeros[RAYCOUNT_N_BUFFERING] = { 0u };
@@ -136,7 +137,7 @@ Renderer::Renderer(IVideoDriver* _driver, IAssetManager* _assetManager, scene::I
136137
}
137138

138139
{
139-
constexpr auto raytracingCommonDescriptorCount = 6u;
140+
constexpr auto raytracingCommonDescriptorCount = 4u;
140141
IGPUDescriptorSetLayout::SBinding bindings[raytracingCommonDescriptorCount];
141142
fillIotaDescriptorBindingDeclarations(bindings,ISpecializedShader::ESS_COMPUTE,raytracingCommonDescriptorCount);
142143
bindings[0].type = asset::EDT_UNIFORM_BUFFER;
@@ -157,7 +158,6 @@ Renderer::Renderer(IVideoDriver* _driver, IAssetManager* _assetManager, scene::I
157158
samplerParams.CompareEnable = false;
158159
auto sampler = m_driver->createGPUSampler(samplerParams);
159160
{
160-
161161
constexpr auto raygenDescriptorCount = 1u;
162162
IGPUDescriptorSetLayout::SBinding bindings[raygenDescriptorCount];
163163
fillIotaDescriptorBindingDeclarations(bindings,ISpecializedShader::ESS_COMPUTE,raygenDescriptorCount,EDT_COMBINED_IMAGE_SAMPLER);
@@ -255,7 +255,7 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
255255

256256
constexpr uint8_t kIndicesPerTriangle = 3u;
257257
constexpr uint16_t minIndicesBatch = minTrisBatch*kIndicesPerTriangle;
258-
258+
259259
CPUMeshPacker::AllocationParams allocParams;
260260
allocParams.vertexBuffSupportedByteSize = 1u<<31u;
261261
allocParams.vertexBufferMinAllocByteSize = minTrisBatch*minVertexSize;
@@ -264,6 +264,7 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
264264
allocParams.MDIDataBuffSupportedCnt = allocParams.indexBuffSupportedCnt/minIndicesBatch;
265265
allocParams.MDIDataBuffMinAllocCnt = 1u; //so structs from different meshbuffers are adjacent in memory
266266

267+
267268
constexpr auto combinedNormalUVAttributeIx = 1;
268269
constexpr auto newEnabledAttributeMask = (0x1u<<combinedNormalUVAttributeIx)|0b1;
269270

@@ -325,6 +326,7 @@ Renderer::InitializationData Renderer::initSceneObjects(const SAssetBundle& mesh
325326
}
326327
for (auto meshBuffer : meshBuffersToProcess)
327328
const_cast<ICPUMeshBuffer*>(meshBuffer)->getPipeline()->getVertexInputParams().enabledAttribFlags = newEnabledAttributeMask;
329+
328330
allocData.resize(meshBuffersToProcess.size());
329331

330332
cpump->alloc(allocData.data(),meshBuffersToProcess.begin(),meshBuffersToProcess.end());
@@ -807,6 +809,7 @@ void Renderer::init(const SAssetBundle& meshes, core::smart_refctd_ptr<ICPUBuffe
807809
core::smart_refctd_ptr(m_commonRaytracingDSLayout),
808810
core::smart_refctd_ptr(m_raygenDSLayout)
809811
);
812+
810813
m_raygenPipeline = m_driver->createGPUComputePipeline(nullptr,std::move(_raygenPipelineLayout),gpuSpecializedShaderFromFile(m_assetManager,m_driver,"../raygen.comp"));
811814

812815
m_raygenDS = m_driver->createGPUDescriptorSet(core::smart_refctd_ptr(m_raygenDSLayout));
@@ -982,6 +985,7 @@ void Renderer::init(const SAssetBundle& meshes, core::smart_refctd_ptr<ICPUBuffe
982985
setDstSetAndDescTypesOnWrites(m_closestHitDS[i].get(),writes,infos,{EDT_STORAGE_BUFFER,EDT_STORAGE_BUFFER});
983986
m_driver->updateDescriptorSets(descriptorUpdateCounts[3],writes,0u,nullptr);
984987
}
988+
initData = {}; // reclaim some memory
985989
// set up m_resolveDS
986990
{
987991
infos[0].buffer = {0u,_staticViewDataBuffer->getSize()};
@@ -1157,6 +1161,8 @@ void Renderer::deinit()
11571161
// one day it will just work like that
11581162
//#include <nbl/builtin/glsl/sampling/box_muller_transform.glsl>
11591163

1164+
constexpr uint16_t m_maxDepth = 2u; // TODO: = 5u
1165+
constexpr uint16_t m_UNUSED_russianRouletteDepth = 5u;
11601166
void Renderer::render(nbl::ITimer* timer)
11611167
{
11621168
if (m_cullPushConstants.maxGlobalInstanceCount==0u)
@@ -1374,6 +1380,7 @@ uint32_t Renderer::traceBounce(uint32_t raycount)
13741380

13751381
auto commandQueue = m_rrManager->getCLCommandQueue();
13761382
const cl_mem clObjects[] = {m_rayBuffer[descSetIx].asRRBuffer.second,m_intersectionBuffer[descSetIx].asRRBuffer.second};
1383+
13771384
const auto objCount = sizeof(clObjects)/sizeof(cl_mem);
13781385
cl_event acquired=nullptr, raycastDone=nullptr;
13791386
// run the raytrace queries

examples_tests/22.RaytracedAO/Renderer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class Renderer : public nbl::core::IReferenceCounted, public nbl::core::Interfac
7676

7777
inline InitializationData& operator=(InitializationData&& other)
7878
{
79+
mdiFirstIndices = std::move(other.mdiFirstIndices);
7980
lights = std::move(other.lights);
8081
lightCDF = std::move(other.lightCDF);
8182
globalMeta = other.globalMeta;
@@ -94,8 +95,10 @@ class Renderer : public nbl::core::IReferenceCounted, public nbl::core::Interfac
9495
void initSceneNonAreaLights(InitializationData& initData);
9596
void finalizeScene(InitializationData& initData);
9697

98+
//
9799
nbl::core::smart_refctd_ptr<nbl::video::IGPUImageView> createScreenSizedTexture(nbl::asset::E_FORMAT format, uint32_t layers = 0u);
98100

101+
//
99102
uint32_t traceBounce(uint32_t raycount);
100103

101104

0 commit comments

Comments
 (0)