Commit: c0b3e3daebd36a483e659d32e6517f2fb9b0e277
Author: Brecht Van Lommel
Date:   Fri Oct 26 19:26:06 2018 +0200
Branches: master
https://developer.blender.org/rBc0b3e3daebd36a483e659d32e6517f2fb9b0e277

Fix T57393: Cycles OSL bevel and AO not working after OSL upgrade.

===================================================================

M       intern/cycles/kernel/osl/osl_services.cpp
M       intern/cycles/kernel/osl/osl_services.h

===================================================================

diff --git a/intern/cycles/kernel/osl/osl_services.cpp 
b/intern/cycles/kernel/osl/osl_services.cpp
index 7902381440b..81348f5594d 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -884,6 +884,23 @@ bool OSLRenderServices::has_userdata(ustring name, 
TypeDesc type, OSL::ShaderGlo
        return false; /* never called by OSL */
 }
 
+TextureSystem::TextureHandle *OSLRenderServices::get_texture_handle(ustring 
filename)
+{
+       if (filename.length() && filename[0] == '@') {
+               /* Dummy, we don't use texture handles for builtin textures but 
need
+                * to tell the OSL runtime optimizer that this is a valid 
texture. */
+               return NULL;
+       }
+       else {
+               return texturesys()->get_texture_handle(filename);
+       }
+}
+
+bool OSLRenderServices::good(TextureSystem::TextureHandle *texture_handle)
+{
+       return texturesys()->good(texture_handle);
+}
+
 bool OSLRenderServices::texture(ustring filename,
                                 TextureHandle *texture_handle,
                                 TexturePerthread *texture_thread_info,
@@ -894,7 +911,8 @@ bool OSLRenderServices::texture(ustring filename,
                                 int nchannels,
                                 float *result,
                                 float *dresultds,
-                                float *dresultdt)
+                                float *dresultdt,
+                                ustring *errormessage)
 {
        OSL::TextureSystem *ts = osl_ts;
        ShaderData *sd = (ShaderData *)(sg->renderstate);
@@ -1156,7 +1174,13 @@ bool 
OSLRenderServices::get_texture_info(OSL::ShaderGlobals *sg, ustring filenam
                                          TypeDesc datatype, void *data)
 {
        OSL::TextureSystem *ts = osl_ts;
-       return ts->get_texture_info(filename, subimage, dataname, datatype, 
data);
+       if (filename.length() && filename[0] == '@') {
+               /* Special builtin textures. */
+               return false;
+       }
+       else {
+               return ts->get_texture_info(filename, subimage, dataname, 
datatype, data);
+       }
 }
 
 int OSLRenderServices::pointcloud_search(OSL::ShaderGlobals *sg, ustring 
filename, const OSL::Vec3 &center,
diff --git a/intern/cycles/kernel/osl/osl_services.h 
b/intern/cycles/kernel/osl/osl_services.h
index 50044746fd1..5dcaa4d7445 100644
--- a/intern/cycles/kernel/osl/osl_services.h
+++ b/intern/cycles/kernel/osl/osl_services.h
@@ -93,6 +93,10 @@ public:
        bool getmessage(OSL::ShaderGlobals *sg, ustring source, ustring name,
                        TypeDesc type, void *val, bool derivatives);
 
+       TextureSystem::TextureHandle *get_texture_handle(ustring filename);
+
+       bool good(TextureSystem::TextureHandle *texture_handle);
+
        bool texture(ustring filename,
                     TextureSystem::TextureHandle *texture_handle,
                     TexturePerthread *texture_thread_info,
@@ -103,7 +107,8 @@ public:
                     int nchannels,
                     float *result,
                     float *dresultds,
-                    float *dresultdt);
+                    float *dresultdt,
+                    ustring *errormessage);
 
        bool texture3d(ustring filename,
                       TextureHandle *texture_handle,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to