GPUOpen-LibrariesAndSDKs / RadeonProRenderSDK

AMD Radeon™ ProRender is a powerful physically-based path traced rendering engine that enables creative professionals to produce stunningly photorealistic images.
https://gpuopen.com/radeon-prorender-suite/
Other
220 stars 46 forks source link

Immediate return from rprContextRender #66

Closed WannaBeKratos closed 1 year ago

WannaBeKratos commented 1 year ago

Im using this library from rust with, but the render function returns immediately here is relevant code :

       `status = rprContextSetAOV(*self.context, rpr_aov_RPR_AOV_COLOR,  *ptr_framebuffer);
        info!("rprContextSetAOV status:{:?}", status);
        status = rprContextSetParameterByKey1f(*self.context, rpr_context_info_RPR_CONTEXT_DISPLAY_GAMMA , 0.2f32 );
        info!("rprContextSetParameterByKey1f status:{:?}", status);
        status = rprContextSetParameterByKey1u(
            *self.context,
            200000 as rpr_context_info,
            10,
        );
        info!("rprContextSetParameterByKey status:{:?}", status);
        status = rprFrameBufferClear( *ptr_framebuffer);
        info!("rprFrameBufferClear status:{:?}", status);
        status = rprContextRender(*self.context);
        info!("rprContextRender status:{:?}", status);
        status = rprContextResolveFrameBuffer(
            *self.context,
            *ptr_framebuffer,
            *ptr_framebuffer,
            1,
        );
        info!("rprContextResolveFrameBuffer status:{:?}", status);
        let mut size: *mut usize = alloc(Layout::new::<usize>()) as *mut usize;
        status = rprFrameBufferGetInfo(
            *ptr_framebuffer_resolved,
            rpr_framebuffer_info_RPR_FRAMEBUFFER_DATA,
            0,
            null_mut(),
            size,
        );
        info!("rprFrameBufferGetInfo status:{:?}", status);
        let mut buffer = vec![255; *size / size_of::<u32>()];
        status = rprFrameBufferGetInfo(
            *ptr_framebuffer_resolved,
            rpr_framebuffer_info_RPR_FRAMEBUFFER_DATA,
            *size,
            buffer.as_mut_ptr() as *mut c_void,
            0 as *mut usize,
        );
        info!("rprFrameBufferGetInfo status:{:?}", status);
        status = rprFrameBufferSaveToFile(*ptr_framebuffer_resolved, "31_temp.bin\0".as_ptr() as *const i8);
        info!("rprFrameBufferSaveToFil status:{:?}", status);
        buffer`
WannaBeKratos commented 1 year ago
       ` let mut lightEnv = alloc(Layout::new::<rpr_light_t>()) as *mut rpr_light;
        let mut imgEnvLight = alloc(Layout::new::<rpr_image_t>()) as *mut rpr_image;
        let mut status = rprContextCreateEnvironmentLight(*self.context, lightEnv);
        info!("rprContextCreateEnvironmentLight status:{:?}", status);
        status = rprContextCreateImageFromFile(*self.context, "../../envLightImage.exr\0".as_ptr() as *const i8, imgEnvLight);
        info!("rprContextCreateImageFromFile status:{:?}", status);
        status = rprEnvironmentLightSetImage(*lightEnv, *imgEnvLight);
        info!("rprEnvironmentLightSetImage status:{:?}", status);
        status = rprEnvironmentLightSetIntensityScale(*lightEnv, 0.8f32); 
        info!("rprEnvironmentLightSetIntensityScale status:{:?}", status);
        status =rprSceneAttachLight(*self.scene, *lightEnv);
        info!("rprSceneAttachLight status:{:?}", status);`
WannaBeKratos commented 1 year ago
       ` let camera_layout = Layout::new::<rpr_camera_t>();
        let camera_ptr = alloc(camera_layout);
        let camera = camera_ptr as *mut rpr_camera;
        let mut status = rprContextCreateCamera(*self.context, camera);
        info!("Camera created with status:{:?}", status);
        status = rprCameraLookAt(*camera, 200.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
        info!("Camera set position with status:{:?}", status);
        status = rprSceneSetCamera(*self.scene, *camera);
        info!("Camera set with status:{:?}", status);
        status = rprCameraSetFocalLength(*camera, 2.0f32);
        info!("rprCameraSetFocalLength status:{:?}", status);
        self.objects.insert(camera_ptr, camera_layout);
        println!("{:?}",*camera)`
WannaBeKratos commented 1 year ago

Closing because I found the issue, I forgot to set the active plugin. The library fail silently without the active plugin set, this should be changed.

bsavery commented 1 year ago

@RichardGe I agree, we should not fail silently here.