Skip to content

Commit e158f94

Browse files
committed
tutorial clean and improve for Northstar
1 parent 6ccae26 commit e158f94

File tree

25 files changed

+840
-879
lines changed

25 files changed

+840
-879
lines changed

tutorials/01_camera_setup/main.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,8 @@ int main()
127127
}
128128

129129
// Progressively render an image
130-
for (int i = 0; i < NUM_ITERATIONS; ++i)
131-
{
132-
CHECK( rprContextRender(context) );
133-
}
130+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
131+
CHECK( rprContextRender(context) );
134132

135133
std::cout << "Rendering finished.\n";
136134

tutorials/02_mesh/main.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,8 @@ int main()
137137
}
138138

139139
// Progressively render an image
140-
for (int i = 0; i < NUM_ITERATIONS; ++i)
141-
{
142-
CHECK( rprContextRender(context) );
143-
}
140+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
141+
CHECK( rprContextRender(context) );
144142

145143
std::cout << "Rendering finished.\n";
146144

tutorials/03_instance/main.cpp

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ int main()
2525
// set this before any rpr API calls
2626
// rprContextSetParameterByKey1u(0,RPR_CONTEXT_TRACING_ENABLED,1);
2727

28-
std::cout << "Radeon ProRender SDK simple rendering tutorial.\n";
29-
// Indicates whether the last operation has suceeded or not
30-
rpr_int status = RPR_SUCCESS;
28+
std::cout << "Radeon ProRender SDK simple rendering tutorial.\n";
29+
// Indicates whether the last operation has suceeded or not
30+
rpr_int status = RPR_SUCCESS;
3131
// Create OpenCL context using a single GPU
3232
rpr_context context = NULL;
3333

@@ -59,7 +59,7 @@ int main()
5959
rpr_scene scene=nullptr;
6060
CHECK( rprContextCreateScene(context, &scene) );
6161

62-
// Create cube mesh
62+
// Create cube mesh
6363
rpr_shape cube=nullptr;
6464
{
6565
CHECK( rprContextCreateMesh(context,
@@ -80,7 +80,7 @@ int main()
8080
// Set the transform
8181
CHECK( rprShapeSetTransform(cube, RPR_TRUE, &m.m00) );
8282
}
83-
// Create plane mesh
83+
// Create plane mesh
8484
rpr_shape plane=nullptr;
8585
{
8686
CHECK( rprContextCreateMesh(context,
@@ -95,7 +95,7 @@ int main()
9595
// Add plane into the scene
9696
CHECK( rprSceneAttachShape(scene, plane) );
9797
}
98-
// Create camera
98+
// Create camera
9999
rpr_camera camera=nullptr;
100100
{
101101
CHECK( rprContextCreateCamera(context, &camera) );
@@ -111,24 +111,24 @@ int main()
111111
// Set camera for the scene
112112
CHECK( rprSceneSetCamera(scene, camera) );
113113
}
114-
// Set scene to render for the context
115-
CHECK( rprContextSetScene(context, scene) );
114+
// Set scene to render for the context
115+
CHECK( rprContextSetScene(context, scene) );
116116

117-
// Create framebuffer to store rendering result
118-
rpr_framebuffer_desc desc;
119-
desc.fb_width = 800;
120-
desc.fb_height = 600;
117+
// Create framebuffer to store rendering result
118+
rpr_framebuffer_desc desc;
119+
desc.fb_width = 800;
120+
desc.fb_height = 600;
121121

122-
// 4 component 32-bit float value each
123-
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
122+
// 4 component 32-bit float value each
123+
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
124124
rpr_framebuffer frame_buffer;
125125
CHECK( rprContextCreateFrameBuffer(context, fmt, &desc, &frame_buffer) );
126126

127-
// Clear framebuffer to black color
128-
CHECK( rprFrameBufferClear(frame_buffer) );
127+
// Clear framebuffer to black color
128+
CHECK( rprFrameBufferClear(frame_buffer) );
129129

130-
// Set framebuffer for the context
131-
CHECK( rprContextSetAOV(context, RPR_AOV_COLOR, frame_buffer) );
130+
// Set framebuffer for the context
131+
CHECK( rprContextSetAOV(context, RPR_AOV_COLOR, frame_buffer) );
132132

133133
CHECK( rprContextSetParameterByKey1u(context, RPR_CONTEXT_RENDER_MODE, RPR_RENDER_MODE_NORMAL) );
134134

@@ -149,28 +149,26 @@ int main()
149149
CHECK(rprSceneAttachShape(scene, instance));
150150
}
151151

152-
// Progressively render an image
153-
for (int i = 0; i < NUM_ITERATIONS; ++i)
154-
{
155-
CHECK( rprContextRender(context) );
156-
}
152+
// Progressively render an image
153+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
154+
CHECK( rprContextRender(context) );
157155

158-
std::cout << "Rendering finished.\n";
156+
std::cout << "Rendering finished.\n";
159157

160-
// Save the result to file
161-
CHECK( rprFrameBufferSaveToFile(frame_buffer, "03.png") );
158+
// Save the result to file
159+
CHECK( rprFrameBufferSaveToFile(frame_buffer, "03.png") );
162160

163-
// Release the stuff we created
161+
// Release the stuff we created
164162
CHECK(rprObjectDelete(matsys));matsys=nullptr;
165-
CHECK(rprObjectDelete(plane));plane=nullptr;
163+
CHECK(rprObjectDelete(plane));plane=nullptr;
166164
CHECK(rprObjectDelete(cube));cube=nullptr;
167165
CHECK(rprObjectDelete(instance));instance=nullptr;
168166
CHECK(rprObjectDelete(scene));scene=nullptr;
169167
CHECK(rprObjectDelete(camera));camera=nullptr;
170168
CHECK(rprObjectDelete(frame_buffer));frame_buffer=nullptr;
171169
CheckNoLeak(context);
172170
CHECK(rprObjectDelete(context));context=nullptr; // Always delete the RPR Context in last.
173-
return 0;
171+
return 0;
174172
}
175173

176174

tutorials/10_light_point/main.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,7 @@ int main()
142142
}
143143

144144
// Create framebuffer to store rendering result
145-
rpr_framebuffer_desc desc;
146-
desc.fb_width = 800;
147-
desc.fb_height = 600;
145+
rpr_framebuffer_desc desc = { 800,600 };
148146

149147
// 4 component 32-bit float value each
150148
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
@@ -178,10 +176,8 @@ int main()
178176
}
179177

180178
// Progressively render an image
181-
for (int i = 0; i < NUM_ITERATIONS; ++i)
182-
{
183-
CHECK( rprContextRender(context) );
184-
}
179+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
180+
CHECK( rprContextRender(context) );
185181

186182
std::cout << "Rendering finished.\n";
187183

tutorials/11_light_mesh/main.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,7 @@ int main()
130130
}
131131

132132
// Create framebuffer to store rendering result
133-
rpr_framebuffer_desc desc;
134-
desc.fb_width = 800;
135-
desc.fb_height = 600;
133+
rpr_framebuffer_desc desc = { 800,600 };
136134

137135
// 4 component 32-bit float value each
138136
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
@@ -153,7 +151,8 @@ int main()
153151
///////// Tutorial Emissive Light //////////
154152

155153
// Create the light
156-
rpr_shape light;
154+
rpr_shape light = nullptr;
155+
rpr_material_node emissive = nullptr;
157156
{
158157
CHECK( rprContextCreateMesh(context,
159158
(rpr_float const*)&plane_data[0], 4, sizeof(vertex),
@@ -170,7 +169,6 @@ int main()
170169
// Set transform for the light
171170
CHECK( rprShapeSetTransform(light, RPR_TRUE, &lightm.m00) );
172171

173-
rpr_material_node emissive;
174172
{
175173
CHECK( rprMaterialSystemCreateNode(matsys, RPR_MATERIAL_NODE_EMISSIVE, &emissive) );
176174

@@ -186,17 +184,16 @@ int main()
186184
}
187185

188186
// Progressively render an image
189-
for (int i = 0; i < NUM_ITERATIONS; ++i)
190-
{
191-
CHECK( rprContextRender(context) );
192-
}
187+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
188+
CHECK( rprContextRender(context) );
193189

194190
std::cout << "Rendering finished.\n";
195191

196192
// Save the result to file
197193
CHECK( rprFrameBufferSaveToFile(frame_buffer, "11.png") );
198194

199195
// Release the stuff we created
196+
CHECK(rprObjectDelete(emissive));
200197
CHECK(rprObjectDelete(matsys));
201198
CHECK(rprObjectDelete(plane));
202199
CHECK(rprObjectDelete(cube));

tutorials/12_light_environment/main.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,7 @@ int main()
141141
}
142142

143143
// Create framebuffer to store rendering result
144-
rpr_framebuffer_desc desc;
145-
desc.fb_width = 800;
146-
desc.fb_height = 600;
144+
rpr_framebuffer_desc desc = { 800,600 };
147145

148146
// 4 component 32-bit float value each
149147
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
@@ -181,10 +179,8 @@ int main()
181179
}
182180

183181
// Progressively render an image
184-
for (int i = 0; i < NUM_ITERATIONS; ++i)
185-
{
186-
CHECK( rprContextRender(context) );
187-
}
182+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
183+
CHECK( rprContextRender(context) );
188184

189185
std::cout << "Rendering finished.\n";
190186

tutorials/20_material_textured/main.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,7 @@ int main()
162162
}
163163

164164
// Create framebuffer to store rendering result
165-
rpr_framebuffer_desc desc;
166-
desc.fb_width = 800;
167-
desc.fb_height = 600;
165+
rpr_framebuffer_desc desc = { 800,600 };
168166

169167
// 4 component 32-bit float value each
170168
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
@@ -208,10 +206,8 @@ int main()
208206
}
209207

210208
// Progressively render an image
211-
for (int i = 0; i < NUM_ITERATIONS; ++i)
212-
{
213-
CHECK( rprContextRender(context) );
214-
}
209+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
210+
CHECK( rprContextRender(context) );
215211

216212
std::cout << "Rendering finished.\n";
217213

tutorials/21_material_layered/main.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,7 @@ int main()
164164

165165

166166
// Create framebuffer to store rendering result
167-
rpr_framebuffer_desc desc;
168-
desc.fb_width = 800;
169-
desc.fb_height = 600;
167+
rpr_framebuffer_desc desc = { 800,600 };
170168

171169
// 4 component 32-bit float value each
172170
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
@@ -230,10 +228,8 @@ int main()
230228

231229

232230
// Progressively render an image
233-
for (int i = 0; i < NUM_ITERATIONS; ++i)
234-
{
235-
CHECK( rprContextRender(context) );
236-
}
231+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
232+
CHECK( rprContextRender(context) );
237233

238234
std::cout << "Rendering finished.\n";
239235

tutorials/22_material_uber/main.cpp

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@
2020
#include <cassert>
2121
#include <iostream>
2222

23+
struct UPDATE_CALLBACK_DATA
24+
{
25+
// developpers fill it as he wants
26+
// ...
27+
// ...
28+
};
29+
30+
void UpdateCallback( float progress, void* userData )
31+
{
32+
UPDATE_CALLBACK_DATA* userDataIn = (UPDATE_CALLBACK_DATA*)userData;
33+
std::cout << "progress = "<< (int)(progress*100) << "%" << std::endl;
34+
return;
35+
}
36+
2337
int main()
2438
{
2539
// enable Radeon ProRender API trace
@@ -41,6 +55,11 @@ int main()
4155
// Create context using a single GPU
4256
CHECK( rprCreateContext(RPR_API_VERSION, plugins, pluginCount, RPR_CREATION_FLAGS_ENABLE_GPU0, NULL, NULL, &context) );
4357

58+
UPDATE_CALLBACK_DATA dataCallback;
59+
60+
CHECK( rprContextSetParameterByKeyPtr(context, RPR_CONTEXT_RENDER_UPDATE_CALLBACK_FUNC, (void*)UpdateCallback));
61+
CHECK( rprContextSetParameterByKeyPtr(context, RPR_CONTEXT_RENDER_UPDATE_CALLBACK_DATA, &dataCallback));
62+
4463
// Set active plugin.
4564
CHECK( rprContextSetActivePlugin(context, plugins[0]) );
4665

@@ -163,14 +182,14 @@ int main()
163182

164183

165184
// Create framebuffer to store rendering result
166-
rpr_framebuffer_desc desc;
167-
desc.fb_width = 800;
168-
desc.fb_height = 600;
185+
rpr_framebuffer_desc desc = { 800,600 };
169186

170187
// 4 component 32-bit float value each
171188
rpr_framebuffer_format fmt = {4, RPR_COMPONENT_TYPE_FLOAT32};
172-
rpr_framebuffer frame_buffer;
189+
rpr_framebuffer frame_buffer = nullptr;
190+
rpr_framebuffer frame_buffer_resolved = nullptr;
173191
CHECK( rprContextCreateFrameBuffer(context, fmt, &desc, &frame_buffer) );
192+
CHECK( rprContextCreateFrameBuffer(context, fmt, &desc, &frame_buffer_resolved) );
174193

175194
// Clear framebuffer to black color
176195
CHECK( rprFrameBufferClear(frame_buffer) );
@@ -195,15 +214,14 @@ int main()
195214
}
196215

197216
// Progressively render an image
198-
for (int i = 0; i < NUM_ITERATIONS; ++i)
199-
{
200-
CHECK( rprContextRender(context) );
201-
}
217+
CHECK(rprContextSetParameterByKey1u(context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
218+
CHECK( rprContextRender(context) );
219+
CHECK(rprContextResolveFrameBuffer(context,frame_buffer,frame_buffer_resolved,true));
202220

203221
std::cout << "Rendering finished.\n";
204222

205223
// Save the result to file
206-
CHECK( rprFrameBufferSaveToFile(frame_buffer, "22.png") );
224+
CHECK( rprFrameBufferSaveToFile(frame_buffer_resolved, "22.png") );
207225

208226
// Release the stuff we created
209227
CHECK(rprObjectDelete(img));img=nullptr;
@@ -217,12 +235,9 @@ int main()
217235
CHECK(rprObjectDelete(scene));scene=nullptr;
218236
CHECK(rprObjectDelete(camera));camera=nullptr;
219237
CHECK(rprObjectDelete(frame_buffer));frame_buffer=nullptr;
238+
CHECK(rprObjectDelete(frame_buffer_resolved));frame_buffer_resolved=nullptr;
220239
CheckNoLeak(context);
221240
CHECK(rprObjectDelete(context));context=nullptr; // Always delete the RPR Context in last.
222241
return 0;
223242
}
224243

225-
226-
// Things to try in this tutorial:
227-
// 1) Did you notice the x after rpr (rprxCreateMaterial), rprx use rpr, don't get confuse
228-
// 2) Try to play with the UBER material properties look into RprSupport.h and apply it on the cube

0 commit comments

Comments
 (0)