@@ -93,56 +93,67 @@ int main()
93
93
vertex cube_data_motionBlur[cube_NumberOfVertices*numberOfBlurKeyTime] =
94
94
{
95
95
// vertices at camera exposure = 0.0
96
- { -1 .0f , 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
97
- { 1 .0f , 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
98
- { 1 .0f , 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
99
- { -1 .0f , 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
100
- { -1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
101
- { 1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
102
- { 1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
103
- { -1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
104
- { -1 .0f , -1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
105
- { -1 .0f , -1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
106
- { -1 .0f , 1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
107
- { -1 .0f , 1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
108
- { 1 .0f , -1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
109
- { 1 .0f , -1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
110
- { 1 .0f , 1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
111
- { 1 .0f , 1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
112
- { -1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
113
- { 1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
114
- { 1 .0f , 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
115
- { -1 .0f , 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
116
- { -1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
117
- { 1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
118
- { 1 .0f , 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
119
- { -1 .0f , 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
96
+ { -1 .0f , 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
97
+ { 1 .0f , 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 1 .f , 0 .f },
98
+ { 1 .0f , 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 1 .f , 1 .f },
99
+ { -1 .0f , 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 1 .f },
100
+
101
+ { -1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
102
+ { 1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 1 .f , 0 .f },
103
+ { 1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 1 .f , 1 .f },
104
+ { -1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 1 .f },
105
+
106
+ { -1 .0f , -1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
107
+ { -1 .0f , -1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 1 .f , 0 .f },
108
+ { -1 .0f , 1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 1 .f , 1 .f },
109
+ { -1 .0f , 1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 1 .f },
110
+
111
+ { 1 .0f , -1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
112
+ { 1 .0f , -1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 1 .f , 0 .f },
113
+ { 1 .0f , 1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 1 .f , 1 .f },
114
+ { 1 .0f , 1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 1 .f },
115
+
116
+ { -1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
117
+ { 1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 1 .f , 0 .f },
118
+ { 1 .0f , 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 1 .f , 1 .f },
119
+ { -1 .0f , 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 1 .f },
120
+
121
+ { -1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
122
+ { 1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 1 .f , 0 .f },
123
+ { 1 .0f , 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 1 .f , 1 .f },
124
+ { -1 .0f , 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 1 .f },
125
+
120
126
121
127
// vertices at camera exposure = 1.0 : slightly deform the Cube
122
- { -1 .0f +shiftX, 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
123
- { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
124
- { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
125
- { -1 .0f +shiftX, 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
126
- { -1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
127
- { 1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
128
- { 1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
129
- { -1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
130
- { -1 .0f , -1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
131
- { -1 .0f , -1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
132
- { -1 .0f +shiftX, 1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
133
- { -1 .0f +shiftX, 1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
134
- { 1 .0f , -1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
135
- { 1 .0f , -1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
136
- { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
137
- { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
138
- { -1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
139
- { 1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
140
- { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
141
- { -1 .0f +shiftX, 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
142
- { -1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
143
- { 1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
144
- { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
145
- { -1 .0f +shiftX, 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
128
+ { -1 .0f +shiftX, 1 .0f , -1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 0 .f },
129
+ { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 0 .f , 1 .f , 0 .f , 1 .f , 0 .f },
130
+ { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 0 .f , 1 .f , 0 .f , 1 .f , 1 .f },
131
+ { -1 .0f +shiftX, 1 .0f , 1 .0f , 0 .f , 1 .f , 0 .f , 0 .f , 1 .f },
132
+
133
+ { -1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 0 .f },
134
+ { 1 .0f , -1 .0f , -1 .0f , 0 .f , -1 .f , 0 .f , 1 .f , 0 .f },
135
+ { 1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 1 .f , 1 .f },
136
+ { -1 .0f , -1 .0f , 1 .0f , 0 .f , -1 .f , 0 .f , 0 .f , 1 .f },
137
+
138
+ { -1 .0f , -1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
139
+ { -1 .0f , -1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 1 .f , 0 .f },
140
+ { -1 .0f +shiftX, 1 .0f , -1 .0f , -1 .f , 0 .f , 0 .f , 1 .f , 1 .f },
141
+ { -1 .0f +shiftX, 1 .0f , 1 .0f , -1 .f , 0 .f , 0 .f , 0 .f , 1 .f },
142
+
143
+ { 1 .0f , -1 .0f , 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 0 .f },
144
+ { 1 .0f , -1 .0f , -1 .0f , 1 .f , 0 .f , 0 .f , 1 .f , 0 .f },
145
+ { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 1 .f , 0 .f , 0 .f , 1 .f , 1 .f },
146
+ { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 1 .f , 0 .f , 0 .f , 0 .f , 1 .f },
147
+
148
+ { -1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 0 .f },
149
+ { 1 .0f , -1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 1 .f , 0 .f },
150
+ { 1 .0f +shiftX, 1 .0f +shiftY, -1 .0f , 0 .f , 0 .f , -1 .f , 1 .f , 1 .f },
151
+ { -1 .0f +shiftX, 1 .0f , -1 .0f , 0 .f , 0 .f , -1 .f , 0 .f , 1 .f },
152
+
153
+ { -1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 0 .f },
154
+ { 1 .0f , -1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 1 .f , 0 .f },
155
+ { 1 .0f +shiftX, 1 .0f +shiftY, 1 .0f , 0 .f , 0 .f , 1 .f , 1 .f , 1 .f },
156
+ { -1 .0f +shiftX, 1 .0f , 1 .0f , 0 .f , 0 .f , 1 .f , 0 .f , 1 .f },
146
157
147
158
};
148
159
@@ -217,26 +228,77 @@ int main()
217
228
CHECK (rprLightSetTransform (light, RPR_TRUE, &lightm.m00 ));
218
229
219
230
// Set light radiant power in Watts
220
- CHECK (rprPointLightSetRadiantPower3f (light, 100 , 100 , 100 ));
231
+ CHECK (rprPointLightSetRadiantPower3f (light, 200 , 200 , 200 ));
221
232
222
233
// Attach the light to the scene
223
234
CHECK (rprSceneAttachLight (scene, light));
224
235
}
225
236
237
+ // apply material on cube
238
+ rpr_material_node diffuseA = nullptr ;
239
+ rpr_material_node diffuseB = nullptr ;
240
+ rpr_material_node uv_node = nullptr ;
241
+ rpr_material_node uv_scaled_node = nullptr ;
242
+ rpr_material_node checker = nullptr ;
243
+ rpr_material_node layered = nullptr ;
244
+ {
245
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_DIFFUSE, &diffuseA));
246
+ CHECK ( rprMaterialNodeSetInputFByKey (diffuseA, RPR_MATERIAL_INPUT_COLOR, 0 .0f , 0 .5f , 1 .0f , 0 .0f )); // Diffuse color
247
+
248
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_DIFFUSE, &diffuseB));
249
+ CHECK ( rprMaterialNodeSetInputFByKey (diffuseB, RPR_MATERIAL_INPUT_COLOR, 0 .5f , 0 .20f , 1 .0f , 0 .0f )); // Diffuse color
250
+
251
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_INPUT_LOOKUP, &uv_node));
252
+ CHECK ( rprMaterialNodeSetInputUByKey (uv_node, RPR_MATERIAL_INPUT_VALUE, RPR_MATERIAL_NODE_LOOKUP_UV));
253
+
254
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_ARITHMETIC, &uv_scaled_node));
255
+ CHECK ( rprMaterialNodeSetInputUByKey (uv_scaled_node, RPR_MATERIAL_INPUT_OP, RPR_MATERIAL_NODE_OP_MUL));
256
+ CHECK ( rprMaterialNodeSetInputNByKey (uv_scaled_node, RPR_MATERIAL_INPUT_COLOR0, uv_node));
257
+ CHECK ( rprMaterialNodeSetInputFByKey (uv_scaled_node, RPR_MATERIAL_INPUT_COLOR1, 0 .7f , 0 .7f , 0 .0f , 0 ));
258
+
259
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_CHECKER_TEXTURE, &checker));
260
+ CHECK ( rprMaterialNodeSetInputNByKey (checker, RPR_MATERIAL_INPUT_UV , uv_scaled_node));
261
+
262
+ // Create layered material
263
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_BLEND, &layered));
264
+ CHECK ( rprMaterialNodeSetInputNByKey (layered, RPR_MATERIAL_INPUT_COLOR0, diffuseA)); // Set material for base layer
265
+ CHECK ( rprMaterialNodeSetInputNByKey (layered, RPR_MATERIAL_INPUT_COLOR1, diffuseB)); // Set material for top layer
266
+ CHECK ( rprMaterialNodeSetInputNByKey (layered, RPR_MATERIAL_INPUT_WEIGHT, checker));
267
+
268
+ CHECK ( rprShapeSetMaterial (cube,layered));
269
+ }
270
+
271
+ // apply material on floor
272
+ rpr_material_node diffuseC = nullptr ;
273
+ {
274
+ CHECK ( rprMaterialSystemCreateNode (matsys, RPR_MATERIAL_NODE_DIFFUSE, &diffuseC));
275
+ CHECK ( rprMaterialNodeSetInputFByKey (diffuseC, RPR_MATERIAL_INPUT_COLOR, 1 .0f , 0 .2f , 0 .0f , 0 .0f )); // Diffuse color
276
+
277
+ CHECK ( rprShapeSetMaterial (plane,diffuseC));
278
+ }
279
+
226
280
// set exposure, for motion blur
227
281
CHECK (rprCameraSetExposure (camera,1.0 ));
228
282
229
283
// Progressively render an image
284
+ CHECK ( rprContextSetParameterByKey1f (context, RPR_CONTEXT_DISPLAY_GAMMA , 2 .2f ) ); // set display gamma
230
285
CHECK (rprContextSetParameterByKey1u (context,RPR_CONTEXT_ITERATIONS,NUM_ITERATIONS));
231
286
CHECK ( rprContextRender (context) );
232
- CHECK (rprContextResolveFrameBuffer (context,frame_buffer,frame_buffer_resolved,true ));
287
+ CHECK (rprContextResolveFrameBuffer (context,frame_buffer,frame_buffer_resolved,false ));
233
288
234
289
std::cout << " Rendering finished.\n " ;
235
290
236
291
// Save the result to file
237
292
CHECK ( rprFrameBufferSaveToFile (frame_buffer_resolved, " 13.png" ) );
238
293
239
294
// Release the stuff we created
295
+ CHECK (rprObjectDelete (diffuseA));diffuseA=nullptr ;
296
+ CHECK (rprObjectDelete (diffuseB));diffuseB=nullptr ;
297
+ CHECK (rprObjectDelete (uv_node));uv_node=nullptr ;
298
+ CHECK (rprObjectDelete (uv_scaled_node));uv_scaled_node=nullptr ;
299
+ CHECK (rprObjectDelete (checker));checker=nullptr ;
300
+ CHECK (rprObjectDelete (layered));layered=nullptr ;
301
+ CHECK (rprObjectDelete (diffuseC));diffuseC=nullptr ;
240
302
CHECK (rprObjectDelete (matsys));matsys=nullptr ;
241
303
CHECK (rprObjectDelete (plane));plane=nullptr ;
242
304
CHECK (rprObjectDelete (cube));cube=nullptr ;
0 commit comments