[Bf-blender-cvs] [73397a5] bake-cycles: Cycles-Bake: initialize RNG and other small changes as per Brecht suggestion
Dalai Felinto
noreply at git.blender.org
Wed Apr 23 02:46:53 CEST 2014
Commit: 73397a55a56eebf638990a64b7d8909ff9d839bc
Author: Dalai Felinto
Date: Thu Jan 23 15:05:56 2014 -0200
https://developer.blender.org/rB73397a55a56eebf638990a64b7d8909ff9d839bc
Cycles-Bake: initialize RNG and other small changes as per Brecht suggestion
===================================================================
M intern/cycles/kernel/kernel_displace.h
===================================================================
diff --git a/intern/cycles/kernel/kernel_displace.h b/intern/cycles/kernel/kernel_displace.h
index 9255289..b6df218 100644
--- a/intern/cycles/kernel/kernel_displace.h
+++ b/intern/cycles/kernel/kernel_displace.h
@@ -16,13 +16,14 @@
CCL_NAMESPACE_BEGIN
+#include "util_hash.h"
#include "kernel_primitive.h"
-ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadiance *L)
+ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadiance *L, uint xy_hash)
{
- RNG rng;
- PathState hit_state;
- Ray hit_ray;
+ RNG rng = lcg_init(xy_hash);
+ PathState state;
+ Ray ray;
/* initialize */
float3 throughput = make_float3(1.0f, 1.0f, 1.0f);
@@ -30,18 +31,14 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
path_radiance_init(L, kernel_data.film.use_light_pass);
/* TODO: copy bounce and other settings from scene */
- path_state_init(kg, &hit_state, &rng, 0);
+ path_state_init(kg, &state, &rng, 0);
- hit_state.flag |= PATH_RAY_BSSRDF_ANCESTOR;
- hit_state.rng_offset += PRNG_BOUNCE_NUM;
+ //state.rng_offset += PRNG_BOUNCE_NUM;
- /* PROBLEM:
- 1) Do I need to call shader_eval_surface()?
- 2) kernel_path_integrate_lighting() is returning pure black for all the PathRadiance data
- */
+ float rbsdf = path_state_rng_1D(kg, &rng, &state, PRNG_BSDF);
- shader_eval_surface(kg, sd, 0.f, 0, SHADER_CONTEXT_MAIN);
- kernel_path_integrate_lighting(kg, &rng, sd, &throughput, &hit_state, L, &hit_ray);
+ shader_eval_surface(kg, sd, rbsdf, 0, SHADER_CONTEXT_MAIN);
+ kernel_path_integrate_lighting(kg, &rng, sd, &throughput, &state, L, &ray);
}
ccl_device bool is_light_pass(ShaderEvalType type)
@@ -101,7 +98,8 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
if (is_light_pass(type)){
- compute_light_pass(kg, &sd, &L);
+ uint xy_hash = ::ccl::ccl::hash_int_2d(in.x, in.y);
+ compute_light_pass(kg, &sd, &L, xy_hash);
}
switch (type) {
More information about the Bf-blender-cvs
mailing list