work on oslworker

This commit is contained in:
itsmattkc
2020-02-14 02:13:38 +11:00
parent fa40d1b682
commit 6a47b05ab8
8 changed files with 119 additions and 60 deletions
+6 -3
View File
@@ -65,21 +65,24 @@ bool OSLBackend::CompileInternal()
foreach (Node* n, deps) {
if (!shader_cache_.Has(n->id())) {
if (n->IsAccelerated()) {
// FIXME: Compile here
std::string oso_buffer;
QString function_name = n->id().replace('.', '_');
if (!compiler.compile_buffer(n->AcceleratedCodeFragment().toStdString(),
oso_buffer,
std::vector<std::string>(),
"",
n->id().toStdString())) {
function_name.toStdString())) {
qWarning() << "Failed to compile" << n->id();
return false;
}
system->LoadMemoryCompiledShader(function_name.toStdString(), oso_buffer);
OSL::ShaderGroupRef ref = system->ShaderGroupBegin(n->id().toStdString());
system->Shader("surface", n->id().toStdString(), "layer1");
system->Shader("shader", function_name.toStdString(), "layer1");
system->ShaderGroupEnd();
shader_cache_.Add(n->id(), ref);