Fix T52470: cycles OpenCL hair rendering not working after recent changes.

This commit is contained in:
Brecht Van Lommel 2017-08-20 23:16:25 +02:00
parent ce0fce2207
commit 1d1ddd48db
Notes: blender-bot 2023-02-14 06:40:30 +01:00
Referenced by issue #52470, Failed loading render kernel when rendering Victor benchmark file
4 changed files with 13 additions and 6 deletions

View File

@ -46,7 +46,7 @@ bool kernel_path_subsurface_scatter(
*/
kernel_assert(!ss_indirect->tracing);
uint lcg_state = lcg_state_init(state, 0x68bc21eb);
uint lcg_state = lcg_state_init_addrspace(state, 0x68bc21eb);
SubsurfaceIntersection ss_isect;
float bssrdf_u, bssrdf_v;

View File

@ -307,12 +307,19 @@ ccl_device_inline void path_state_branch(ccl_addr_space PathState *state,
state->num_samples = state->num_samples*num_branches;
}
ccl_device_inline uint lcg_state_init(ccl_addr_space PathState *state,
ccl_device_inline uint lcg_state_init(PathState *state,
uint scramble)
{
return lcg_init(state->rng_hash + state->rng_offset + state->sample*scramble);
}
ccl_device_inline uint lcg_state_init_addrspace(ccl_addr_space PathState *state,
uint scramble)
{
return lcg_init(state->rng_hash + state->rng_offset + state->sample*scramble);
}
ccl_device float lcg_step_float_addrspace(ccl_addr_space uint *rng)
{
/* Implicit mod 2^32 */

View File

@ -896,7 +896,7 @@ ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd,
}
if(sd->flag & SD_BSDF_NEEDS_LCG) {
sd->lcg_state = lcg_state_init(state, 0xb4bc3953);
sd->lcg_state = lcg_state_init_addrspace(state, 0xb4bc3953);
}
}

View File

@ -51,8 +51,8 @@ ccl_device_noinline bool kernel_split_branched_path_subsurface_indirect_light_it
if(branched_state->ss_next_sample == 0 && branched_state->next_hit == 0 &&
branched_state->next_closure == 0 && branched_state->next_sample == 0)
{
branched_state->lcg_state = lcg_state_init(&branched_state->path_state,
0x68bc21eb);
branched_state->lcg_state = lcg_state_init_addrspace(&branched_state->path_state,
0x68bc21eb);
}
int num_samples = kernel_data.integrator.subsurface_samples;
float num_samples_inv = 1.0f/num_samples;
@ -258,7 +258,7 @@ ccl_device void kernel_subsurface_scatter(KernelGlobals *kg)
/* do bssrdf scatter step if we picked a bssrdf closure */
if(sc) {
uint lcg_state = lcg_state_init(state, 0x68bc21eb);
uint lcg_state = lcg_state_init_addrspace(state, 0x68bc21eb);
float bssrdf_u, bssrdf_v;
path_state_rng_2D(kg,
state,