Changes to enable MacOS viewport. #70

Closed
Brian Savery (AMD) wants to merge 1 commits from BrianSavery/blender:mac_build into hydra-render

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
3 changed files with 15 additions and 10 deletions

View File

@ -62,6 +62,7 @@ void RenderTaskDelegate::set_renderer_aov(pxr::TfToken const &aov)
binding.aovName = aov;
binding.renderBufferId = buffer_id;
binding.aovSettings = aov_desc.aovSettings;
binding.clearValue = pxr::VtValue(pxr::GfVec4f(0));
task_params_.aovBindings.push_back(binding);
GetRenderIndex().GetChangeTracker().MarkTaskDirty(get_task_id(),

View File

@ -136,7 +136,7 @@ pxr::GfCamera ViewSettings::gf_camera()
(float)border[3] / screen_height));
}
DrawTexture::DrawTexture() : texture_(nullptr), width_(0), height_(0), channels_(4)
DrawTexture::DrawTexture() : texture_(nullptr), width_(0), height_(0), channels_(4), format_(GPU_DATA_HALF_FLOAT)
{
float coords[8] = {0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0};
@ -173,7 +173,7 @@ void DrawTexture::set_buffer(pxr::HdRenderBuffer *buffer)
}
void *data = buffer->Map();
GPU_texture_update(texture_, GPU_DATA_FLOAT, data);
GPU_texture_update(texture_, format_, data);
buffer->Unmap();
}
@ -204,7 +204,14 @@ void DrawTexture::create(pxr::HdRenderBuffer *buffer)
1,
GPU_RGBA16F,
GPU_TEXTURE_USAGE_GENERAL,
(float *)data);
nullptr);
/* Hydra Storm defaults to HdFormatFloat16Vec4 for the color AOV.
* For now, assume anything else is Float32. */
format_ = GPU_DATA_HALF_FLOAT;
if (buffer->GetFormat() != pxr::HdFormat::HdFormatFloat16Vec4) {
format_ = GPU_DATA_FLOAT;
}
GPU_texture_update(texture_, format_, data);
buffer->Unmap();
GPU_texture_filter_mode(texture_, true);
@ -240,9 +247,7 @@ void ViewportEngine::render(Depsgraph * /* depsgraph */, bContext *context)
simple_light_task_delegate_->set_camera_path(free_camera_delegate_->GetCameraId());
}
if ((bl_engine_->type->flag & RE_USE_GPU_CONTEXT) == 0) {
render_task_delegate_->set_renderer_aov(pxr::HdAovTokens->color);
}
render_task_delegate_->set_renderer_aov(pxr::HdAovTokens->color);
Review

This has to be reverted, because it returns empty image in viewport.

This has to be reverted, because it returns empty image in viewport.
GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_IMAGE);
GPU_shader_bind(shader);
@ -255,10 +260,8 @@ void ViewportEngine::render(Depsgraph * /* depsgraph */, bContext *context)
engine_->Execute(render_index_.get(), &tasks);
if ((bl_engine_->type->flag & RE_USE_GPU_CONTEXT) == 0) {
draw_texture_.set_buffer(render_task_delegate_->get_renderer_aov(pxr::HdAovTokens->color));
draw_texture_.draw(shader, view_settings.border[0], view_settings.border[1]);
}
draw_texture_.set_buffer(render_task_delegate_->get_renderer_aov(pxr::HdAovTokens->color));
Review

This has to be reverted, because it returns empty image in viewport.

This has to be reverted, because it returns empty image in viewport.
draw_texture_.draw(shader, view_settings.border[0], view_settings.border[1]);
GPU_shader_unbind();

View File

@ -28,6 +28,7 @@ class DrawTexture {
GPUTexture *texture_;
GPUBatch *batch_;
int width_, height_, channels_;
eGPUDataFormat format_;
};
class ViewportEngine : public Engine {