Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/osl/osl_services.cpp')
-rw-r--r--intern/cycles/kernel/osl/osl_services.cpp50
1 files changed, 32 insertions, 18 deletions
diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index 97f97a4887e..5b4bddbb6de 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -879,11 +879,6 @@ bool OSLRenderServices::get_userdata(bool derivatives, ustring name, TypeDesc ty
return false; /* disabled by lockgeom */
}
-bool OSLRenderServices::has_userdata(ustring name, TypeDesc type, OSL::ShaderGlobals *sg)
-{
- return false; /* never called by OSL */
-}
-
TextureSystem::TextureHandle *OSLRenderServices::get_texture_handle(ustring filename)
{
if(filename.length() && filename[0] == '@') {
@@ -1072,7 +1067,8 @@ bool OSLRenderServices::texture3d(ustring filename,
float *result,
float *dresultds,
float *dresultdt,
- float *dresultdr)
+ float *dresultdr,
+ ustring *errormessage)
{
OSL::TextureSystem *ts = osl_ts;
ShaderData *sd = (ShaderData *)(sg->renderstate);
@@ -1138,22 +1134,36 @@ bool OSLRenderServices::texture3d(ustring filename,
return status;
}
-bool OSLRenderServices::environment(ustring filename, TextureOpt &options,
- OSL::ShaderGlobals *sg, const OSL::Vec3 &R,
- const OSL::Vec3 &dRdx, const OSL::Vec3 &dRdy,
- int nchannels, float *result)
+bool OSLRenderServices::environment(ustring filename,
+ TextureHandle *th,
+ TexturePerthread *thread_info,
+ TextureOpt &options,
+ OSL::ShaderGlobals *sg,
+ const OSL::Vec3 &R,
+ const OSL::Vec3 &dRdx,
+ const OSL::Vec3 &dRdy,
+ int nchannels,
+ float *result,
+ float *dresultds,
+ float *dresultdt,
+ ustring *errormessage)
{
OSL::TextureSystem *ts = osl_ts;
- ShaderData *sd = (ShaderData *)(sg->renderstate);
- KernelGlobals *kg = sd->osl_globals;
- OSLThreadData *tdata = kg->osl_tdata;
- OIIO::TextureSystem::Perthread *thread_info = tdata->oiio_thread_info;
- OIIO::TextureSystem::TextureHandle *th = ts->get_texture_handle(filename, thread_info);
+ if (thread_info == NULL) {
+ ShaderData *sd = (ShaderData *)(sg->renderstate);
+ KernelGlobals *kg = sd->osl_globals;
+ OSLThreadData *tdata = kg->osl_tdata;
+ thread_info = tdata->oiio_thread_info;
+ }
+
+ if (th == NULL) {
+ th = ts->get_texture_handle(filename, thread_info);
+ }
bool status = ts->environment(th, thread_info,
options, R, dRdx, dRdy,
- nchannels, result);
+ nchannels, result, dresultds, dresultdt);
if(!status) {
if(nchannels == 3 || nchannels == 4) {
@@ -1169,9 +1179,13 @@ bool OSLRenderServices::environment(ustring filename, TextureOpt &options,
return status;
}
-bool OSLRenderServices::get_texture_info(OSL::ShaderGlobals *sg, ustring filename, int subimage,
+bool OSLRenderServices::get_texture_info(OSL::ShaderGlobals *sg,
+ ustring filename,
+ TextureHandle *th,
+ int subimage,
ustring dataname,
- TypeDesc datatype, void *data)
+ TypeDesc datatype,
+ void *data)
{
OSL::TextureSystem *ts = osl_ts;
if(filename.length() && filename[0] == '@') {