Skip to content

Commit b97bb9f

Browse files
draft of upgrade work
1 parent 1e1f887 commit b97bb9f

File tree

3 files changed

+98
-93
lines changed

3 files changed

+98
-93
lines changed

examples_tests/22.RaytracedAO/dirty_source/ExtraCrap.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -657,21 +657,7 @@ void Renderer::init(const SAssetBundle& meshes,
657657
core::smart_refctd_ptr(m_raygenDSLayout),
658658
nullptr
659659
);
660-
#ifdef TODO
661-
{
662-
std::string glsl = "raygen.comp" +
663-
globalMeta->materialCompilerGLSL_declarations +
664-
// TODO ds0 descriptors and user-defined functions required by material compiler
665-
globalMeta->materialCompilerGLSL_source;
666-
667-
auto shader = m_driver->createGPUShader(core::make_smart_refctd_ptr<asset::ICPUShader>(glsl.c_str()));
668-
asset::ISpecializedShader::SInfo info(nullptr, nullptr, "main", asset::ISpecializedShader::ESS_COMPUTE);
669-
auto spec = m_driver->createGPUSpecializedShader(shader.get(), info);
670-
m_raygenPipeline = m_driver->createGPUComputePipeline(nullptr, core::smart_refctd_ptr(m_raygenLayout), std::move(spec));
671-
}
672-
#endif
673660
(std::ofstream("material_declarations.glsl") << initData.globalMeta->materialCompilerGLSL_declarations).close();
674-
(std::ofstream("material_source.glsl") << initData.globalMeta->materialCompilerGLSL_source).close();
675661
m_raygenPipeline = m_driver->createGPUComputePipeline(nullptr, core::smart_refctd_ptr(m_raygenPipelineLayout),gpuSpecializedShaderFromFile(m_assetManager,m_driver,"../raygen.comp"));
676662

677663
m_raygenDS = m_driver->createGPUDescriptorSet(core::smart_refctd_ptr(m_raygenDSLayout));

examples_tests/22.RaytracedAO/raygen.comp

Lines changed: 21 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@ layout(set = 2, binding = 1) uniform usampler2D scramblebuf;
1111
// vis buffer
1212
layout(set = 2, binding = 2) uniform sampler2D depthbuf;
1313
layout(set = 2, binding = 3) uniform usampler2D frontFacing_Object_Triangle;
14+
//layout(set = 2, binding = 3) uniform sampler2D barycentricDerivatives;
1415
layout(set = 2, binding = 4) uniform sampler2D encodedNormal;
1516
layout(set = 2, binding = 5) uniform sampler2D uvCoords;
1617

1718

18-
// no idea yet
19-
#define sizeof_bsdf_data 1u // wtf??? it's not supposed to be user-defined
20-
#include <nbl/builtin/glsl/material_compiler/common_declarations.glsl>
19+
#include "bin/material_declarations.glsl"
2120
vec3 normalizedV;
2221
vec3 nbl_glsl_MC_getNormalizedWorldSpaceV()
2322
{
@@ -33,92 +32,26 @@ vec3 nbl_glsl_MC_getWorldSpacePosition()
3332
{
3433
return worldPosition;
3534
}
35+
mat2x3 dPosdScreen = mat2x3(vec3(0.0),vec3(0.0)); // TODO
3636
mat2x3 nbl_glsl_MC_getdPos(in vec3 p)
3737
{
38-
return mat2x3(vec3(0.0/0.0), vec3(0.0/0.0));
38+
return dPosdScreen;
3939
}
40-
/*
41-
#define _IRR_USER_PROVIDED_MATERIAL_COMPILER_GLSL_BACKEND_FUNCTIONS_
42-
instr_stream_t getEvalStream(in MC_precomputed_t precomp)
43-
{
44-
instr_stream_t stream;
45-
if (precomp.frontface)
46-
{
47-
stream.offset = InstData.data[InstanceIndex].front_instr_offset;
48-
stream.count = InstData.data[InstanceIndex].front_rem_pdf_count;
49-
}
50-
else
51-
{
52-
stream.offset = InstData.data[InstanceIndex].back_instr_offset;
53-
stream.count = InstData.data[InstanceIndex].back_rem_pdf_count;
54-
}
55-
return stream;
56-
}
57-
instr_t nbl_glsl_MC_fetchInstr(in uint ix)
40+
41+
nbl_glsl_instr_t nbl_glsl_MC_fetchInstr(in uint ix)
5842
{
5943
return instr_buf.data[ix];
6044
}
61-
prefetch_instr_t nbl_glsl_MC_fetchPrefetchInstr(in uint ix)
45+
nbl_glsl_prefetch_instr_t nbl_glsl_MC_fetchPrefetchInstr(in uint ix)
6246
{
6347
return prefetch_instr_buf.data[ix];
6448
}
65-
bsdf_data_t nbl_glsl_MC_fetchBSDFData(in uint ix)
49+
nbl_glsl_bsdf_data_t nbl_glsl_MC_fetchBSDFData(in uint ix)
6650
{
6751
return bsdf_buf.data[ix];
6852
}
69-
///
70-
//rem'n'pdf and eval use the same instruction stream
71-
instr_stream_t getRemAndPdfStream(in MC_precomputed_t precomp)
72-
{
73-
return getEvalStream(precomp);
74-
}
75-
instr_stream_t getGenChoiceStream(in MC_precomputed_t precomp)
76-
{
77-
instr_stream_t stream;
78-
if (precomp.frontface)
79-
{
80-
stream.offset = InstData.data[InstanceIndex].front_instr_offset + InstData.data[InstanceIndex].front_rem_pdf_count;
81-
stream.count = InstData.data[InstanceIndex].front_genchoice_count;
82-
}
83-
else
84-
{
85-
stream.offset = InstData.data[InstanceIndex].back_instr_offset + InstData.data[InstanceIndex].back_rem_pdf_count;
86-
stream.count = InstData.data[InstanceIndex].back_genchoice_count;
87-
}
88-
return stream;
89-
}
90-
instr_stream_t getTexPrefetchStream(in MC_precomputed_t precomp)
91-
{
92-
instr_stream_t stream;
93-
if (precomp.frontface)
94-
{
95-
stream.offset = InstData.data[InstanceIndex].front_prefetch_offset;
96-
stream.count = InstData.data[InstanceIndex].front_prefetch_count;
97-
}
98-
else
99-
{
100-
stream.offset = InstData.data[InstanceIndex].back_prefetch_offset;
101-
stream.count = InstData.data[InstanceIndex].back_prefetch_count;
102-
}
103-
return stream;
104-
}
105-
instr_stream_t getNormalPrecompStream(in MC_precomputed_t precomp)
106-
{
107-
instr_stream_t stream;
108-
if (precomp.frontface)
109-
{
110-
stream.offset = InstData.data[InstanceIndex].front_instr_offset + InstData.data[InstanceIndex].front_rem_pdf_count + InstData.data[InstanceIndex].front_genchoice_count;
111-
stream.count = InstData.data[InstanceIndex].front_nprecomp_count;
112-
}
113-
else
114-
{
115-
stream.offset = InstData.data[InstanceIndex].back_instr_offset + InstData.data[InstanceIndex].back_rem_pdf_count + InstData.data[InstanceIndex].back_genchoice_count;
116-
stream.count = InstData.data[InstanceIndex].back_nprecomp_count;
117-
}
118-
return stream;
119-
}
120-
#include <irr/builtin/material_compiler/glsl/common.glsl>
121-
*/
53+
#define _NBL_USER_PROVIDED_MATERIAL_COMPILER_GLSL_BACKEND_FUNCTIONS_
54+
#include <nbl/builtin/glsl/material_compiler/common.glsl>
12255

12356
//
12457
///
@@ -284,6 +217,15 @@ void main()
284217
{
285218
// vis buffer read
286219
const uvec2 visBuffer = texelFetch(frontFacing_Object_Triangle,pixelCoord,0).rg;
220+
mat2x3 dBarydScreen;/*
221+
{
222+
// TODO: future https://diaryofagraphicsprogrammer.blogspot.com/2018/03/triangle-visibility-buffer.html
223+
vec4 data;// = texelFetch(barycentricDerivatives,pixelCoord,0);
224+
dBarydScreen[0] = vec3(data.rg,-data.r-data.g);
225+
dBarydScreen[1] = vec3(data.ba,-data.b-data.a);
226+
}
227+
dPosdScreen = mat3(vPos[0],vPos[1],vPos[2])*dBarydScreen;
228+
*/
287229
// init scramble
288230
start_scramble = texelFetch(scramblebuf,pixelCoord,0).rg;
289231
// tmp gbuffer reads
@@ -313,8 +255,8 @@ void main()
313255
normalizedN = nbl_glsl_NormalDecode_signedSpherical(normalBuffer);
314256
}
315257

316-
// TODO: once we merge the material compiler with the raygen
317-
//precomputed = precomputeData(frontfacing);
258+
//
259+
nbl_glsl_MC_precomputed_t precomputed = nbl_glsl_precomputeData(frontfacing);
318260

319261
//
320262
const vec3 emissive = vec3(0.0,1.0,0.0);

examples_tests/22.RaytracedAO/raytraceCommon.glsl

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ layout(set = 1, binding = 2, std430) restrict /*writeonly/readonly TODO dependin
118118
{
119119
nbl_glsl_ext_RadeonRays_ray rays[];
120120
};
121+
// materials
122+
/*
123+
#include <nbl/builtin/glsl/material_compiler/common_invariant_declarations.glsl>
124+
layout(set = 1, binding = 3, std430) restrict readonly buffer Materials
125+
{
126+
nbl_glsl_MC_MaterialData materials[];
127+
};
128+
*/
121129
// lights
122130
layout(set = 1, binding = 3, std430) restrict readonly buffer CumulativeLightPDF
123131
{
@@ -149,3 +157,72 @@ void storeAccumulation(in vec3 color, in ivec2 coord)
149157

150158

151159
#endif
160+
161+
/*
162+
///
163+
instr_stream_t getEvalStream(in MC_precomputed_t precomp)
164+
{
165+
instr_stream_t stream;
166+
if (precomp.frontface)
167+
{
168+
stream.offset = InstData.data[InstanceIndex].front_instr_offset;
169+
stream.count = InstData.data[InstanceIndex].front_rem_pdf_count;
170+
}
171+
else
172+
{
173+
stream.offset = InstData.data[InstanceIndex].back_instr_offset;
174+
stream.count = InstData.data[InstanceIndex].back_rem_pdf_count;
175+
}
176+
return stream;
177+
}
178+
//rem'n'pdf and eval use the same instruction stream
179+
instr_stream_t getRemAndPdfStream(in MC_precomputed_t precomp)
180+
{
181+
return getEvalStream(precomp);
182+
}
183+
instr_stream_t getGenChoiceStream(in MC_precomputed_t precomp)
184+
{
185+
instr_stream_t stream;
186+
if (precomp.frontface)
187+
{
188+
stream.offset = InstData.data[InstanceIndex].front_instr_offset + InstData.data[InstanceIndex].front_rem_pdf_count;
189+
stream.count = InstData.data[InstanceIndex].front_genchoice_count;
190+
}
191+
else
192+
{
193+
stream.offset = InstData.data[InstanceIndex].back_instr_offset + InstData.data[InstanceIndex].back_rem_pdf_count;
194+
stream.count = InstData.data[InstanceIndex].back_genchoice_count;
195+
}
196+
return stream;
197+
}
198+
instr_stream_t getTexPrefetchStream(in MC_precomputed_t precomp)
199+
{
200+
instr_stream_t stream;
201+
if (precomp.frontface)
202+
{
203+
stream.offset = InstData.data[InstanceIndex].front_prefetch_offset;
204+
stream.count = InstData.data[InstanceIndex].front_prefetch_count;
205+
}
206+
else
207+
{
208+
stream.offset = InstData.data[InstanceIndex].back_prefetch_offset;
209+
stream.count = InstData.data[InstanceIndex].back_prefetch_count;
210+
}
211+
return stream;
212+
}
213+
instr_stream_t getNormalPrecompStream(in MC_precomputed_t precomp)
214+
{
215+
instr_stream_t stream;
216+
if (precomp.frontface)
217+
{
218+
stream.offset = InstData.data[InstanceIndex].front_instr_offset + InstData.data[InstanceIndex].front_rem_pdf_count + InstData.data[InstanceIndex].front_genchoice_count;
219+
stream.count = InstData.data[InstanceIndex].front_nprecomp_count;
220+
}
221+
else
222+
{
223+
stream.offset = InstData.data[InstanceIndex].back_instr_offset + InstData.data[InstanceIndex].back_rem_pdf_count + InstData.data[InstanceIndex].back_genchoice_count;
224+
stream.count = InstData.data[InstanceIndex].back_nprecomp_count;
225+
}
226+
return stream;
227+
}
228+
*/

0 commit comments

Comments
 (0)