Cycles / OSL:

* __OSL__ is now defined for CPU when building with OSL.

* First batch of compile fixes, remove some unneeded std namespace declarations and added missing includes.
This commit is contained in:
Thomas Dinges 2012-06-04 19:00:13 +00:00
parent 5024996eea
commit ca7197b620
4 changed files with 16 additions and 9 deletions

@ -39,6 +39,9 @@ CCL_NAMESPACE_BEGIN
#ifdef __KERNEL_CPU__ #ifdef __KERNEL_CPU__
#define __KERNEL_SHADING__ #define __KERNEL_SHADING__
#define __KERNEL_ADV_SHADING__ #define __KERNEL_ADV_SHADING__
#ifdef WITH_OSL
#define __OSL__
#endif
#endif #endif
#ifdef __KERNEL_CUDA__ #ifdef __KERNEL_CUDA__
@ -107,7 +110,6 @@ CCL_NAMESPACE_BEGIN
#endif #endif
//#define __MULTI_LIGHT__ //#define __MULTI_LIGHT__
//#define __OSL__
//#define __SOBOL_FULL_SCREEN__ //#define __SOBOL_FULL_SCREEN__
//#define __QBVH__ //#define __QBVH__

@ -36,6 +36,8 @@
#include "osl_closures.h" #include "osl_closures.h"
#include "util_math.h"
CCL_NAMESPACE_BEGIN CCL_NAMESPACE_BEGIN
using namespace OSL; using namespace OSL;
@ -50,7 +52,7 @@ public:
void setup() void setup()
{ {
m_sigma = std::max(m_sigma, 0.01f); m_sigma = max(m_sigma, 0.01f);
m_invsigma2 = 1.0f/(m_sigma * m_sigma); m_invsigma2 = 1.0f/(m_sigma * m_sigma);
} }
@ -89,7 +91,7 @@ public:
float cosHO = fabsf(omega_out.dot(H)); float cosHO = fabsf(omega_out.dot(H));
float cosNHdivHO = cosNH / cosHO; float cosNHdivHO = cosNH / cosHO;
cosNHdivHO = std::max(cosNHdivHO, 0.00001f); cosNHdivHO = max(cosNHdivHO, 0.00001f);
float fac1 = 2 * fabsf(cosNHdivHO * cosNO); float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
float fac2 = 2 * fabsf(cosNHdivHO * cosNI); float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
@ -99,7 +101,7 @@ public:
float cotangent2 = (cosNH * cosNH) / sinNH2; float cotangent2 = (cosNH * cosNH) / sinNH2;
float D = expf(-cotangent2 * m_invsigma2) * m_invsigma2 * float(M_1_PI) / sinNH4; float D = expf(-cotangent2 * m_invsigma2) * m_invsigma2 * float(M_1_PI) / sinNH4;
float G = std::min(1.0f, std::min(fac1, fac2)); // TODO: derive G from D analytically float G = min(1.0f, min(fac1, fac2)); // TODO: derive G from D analytically
float out = 0.25f * (D * G) / cosNO; float out = 0.25f * (D * G) / cosNO;
@ -133,7 +135,7 @@ public:
float cosHO = fabsf(omega_out.dot(H)); float cosHO = fabsf(omega_out.dot(H));
float cosNHdivHO = cosNH / cosHO; float cosNHdivHO = cosNH / cosHO;
cosNHdivHO = std::max(cosNHdivHO, 0.00001f); cosNHdivHO = max(cosNHdivHO, 0.00001f);
float fac1 = 2 * fabsf(cosNHdivHO * cosNO); float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
float fac2 = 2 * fabsf(cosNHdivHO * cosNI); float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
@ -143,7 +145,7 @@ public:
float cotangent2 = (cosNH * cosNH) / sinNH2; float cotangent2 = (cosNH * cosNH) / sinNH2;
float D = expf(-cotangent2 * m_invsigma2) * m_invsigma2 * float(M_1_PI) / sinNH4; float D = expf(-cotangent2 * m_invsigma2) * m_invsigma2 * float(M_1_PI) / sinNH4;
float G = std::min(1.0f, std::min(fac1, fac2)); // TODO: derive G from D analytically float G = min(1.0f, min(fac1, fac2)); // TODO: derive G from D analytically
float power = 0.25f * (D * G) / cosNO; float power = 0.25f * (D * G) / cosNO;

@ -36,6 +36,8 @@
#include "osl_closures.h" #include "osl_closures.h"
#include "util_math.h"
CCL_NAMESPACE_BEGIN CCL_NAMESPACE_BEGIN
using namespace OSL; using namespace OSL;
@ -69,7 +71,7 @@ public:
Color3 eval_reflect (const Vec3 &omega_out, const Vec3 &omega_in, float& pdf) const Color3 eval_reflect (const Vec3 &omega_out, const Vec3 &omega_in, float& pdf) const
{ {
float cos_pi = std::max(m_N.dot(omega_in),0.0f) * (float) M_1_PI; float cos_pi = max(m_N.dot(omega_in),0.0f) * (float) M_1_PI;
pdf = cos_pi; pdf = cos_pi;
return Color3 (cos_pi, cos_pi, cos_pi); return Color3 (cos_pi, cos_pi, cos_pi);
} }
@ -137,7 +139,7 @@ public:
Color3 eval_transmit (const Vec3 &omega_out, const Vec3 &omega_in, float& pdf) const Color3 eval_transmit (const Vec3 &omega_out, const Vec3 &omega_in, float& pdf) const
{ {
float cos_pi = std::max(-m_N.dot(omega_in), 0.0f) * (float) M_1_PI; float cos_pi = max(-m_N.dot(omega_in), 0.0f) * (float) M_1_PI;
pdf = cos_pi; pdf = cos_pi;
return Color3 (cos_pi, cos_pi, cos_pi); return Color3 (cos_pi, cos_pi, cos_pi);
} }

@ -19,6 +19,7 @@
#include <OpenImageIO/fmath.h> #include <OpenImageIO/fmath.h>
#include <OSL/genclosure.h> #include <OSL/genclosure.h>
#include "osl_closures.h" #include "osl_closures.h"
#include "util_math.h"
CCL_NAMESPACE_BEGIN CCL_NAMESPACE_BEGIN
@ -118,7 +119,7 @@ private:
float t = l.dot(v) - nl * nv; float t = l.dot(v) - nl * nv;
if(t > 0.0f) { if(t > 0.0f) {
t /= max(nl, vl) + 1e-8f; t /= max(nl, nv) + 1e-8f;
} }
return nl * (m_a + m_b * t); return nl * (m_a + m_b * t);
} }