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/emissive.cpp')
-rw-r--r--intern/cycles/kernel/osl/emissive.cpp23
1 files changed, 5 insertions, 18 deletions
diff --git a/intern/cycles/kernel/osl/emissive.cpp b/intern/cycles/kernel/osl/emissive.cpp
index f91fd6e015c..3f13e08b302 100644
--- a/intern/cycles/kernel/osl/emissive.cpp
+++ b/intern/cycles/kernel/osl/emissive.cpp
@@ -36,7 +36,9 @@
#include "osl_closures.h"
+#include "kernel_compat_cpu.h"
#include "kernel_types.h"
+#include "closure/alloc.h"
#include "closure/emissive.h"
CCL_NAMESPACE_BEGIN
@@ -52,25 +54,10 @@ using namespace OSL;
///
class GenericEmissiveClosure : public CClosurePrimitive {
public:
- GenericEmissiveClosure() : CClosurePrimitive(Emissive) { }
-
- Color3 eval(const Vec3 &Ng, const Vec3 &omega_out) const
- {
- float3 result = emissive_simple_eval(TO_FLOAT3(Ng), TO_FLOAT3(omega_out));
- return TO_COLOR3(result);
- }
-
- void sample(const Vec3 &Ng, float randu, float randv,
- Vec3 &omega_out, float &pdf) const
- {
- float3 omega_out_;
- emissive_sample(TO_FLOAT3(Ng), randu, randv, &omega_out_, &pdf);
- omega_out = TO_VEC3(omega_out_);
- }
-
- float pdf(const Vec3 &Ng, const Vec3 &omega_out) const
+ void setup(ShaderData *sd, int /* path_flag */, float3 weight)
{
- return emissive_pdf(TO_FLOAT3(Ng), TO_FLOAT3(omega_out));
+ closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_EMISSION_ID, weight);
+ sd->flag |= SD_EMISSION;
}
};