Refactor: wrap block of codes into a function

This commit is contained in:
Weizhen Huang 2024-04-11 17:38:32 +02:00 committed by Weizhen Huang
parent 45d2e46752
commit a6330cad7f
2 changed files with 23 additions and 16 deletions

@ -76,22 +76,7 @@ ccl_device_inline void shader_setup_from_ray(KernelGlobals kg,
{
if (sd->type == PRIMITIVE_TRIANGLE) {
/* static triangle */
float3 Ng = triangle_normal(kg, sd);
sd->shader = kernel_data_fetch(tri_shader, sd->prim);
/* vectors */
sd->P = triangle_point_from_uv(kg, sd, isect->prim, isect->u, isect->v);
sd->Ng = Ng;
sd->N = Ng;
/* smooth normal */
if (sd->shader & SHADER_SMOOTH_NORMAL)
sd->N = triangle_smooth_normal(kg, Ng, sd->prim, sd->u, sd->v);
#ifdef __DPDU__
/* dPdu/dPdv */
triangle_dPdudv(kg, sd->prim, &sd->dPdu, &sd->dPdv);
#endif
triangle_shader_setup(kg, sd);
}
else {
/* motion triangle */

@ -159,4 +159,26 @@ ccl_device_inline float3 triangle_point_from_uv(KernelGlobals kg,
return P;
}
ccl_device_inline void triangle_shader_setup(KernelGlobals kg, ccl_private ShaderData *sd)
{
sd->shader = kernel_data_fetch(tri_shader, sd->prim);
sd->P = triangle_point_from_uv(kg, sd, sd->prim, sd->u, sd->v);
/* Normals. */
float3 Ng = triangle_normal(kg, sd);
sd->Ng = Ng;
sd->N = Ng;
/* Smooth normal. */
if (sd->shader & SHADER_SMOOTH_NORMAL) {
sd->N = triangle_smooth_normal(kg, Ng, sd->prim, sd->u, sd->v);
}
#ifdef __DPDU__
/* dPdu/dPdv */
triangle_dPdudv(kg, sd->prim, &sd->dPdu, &sd->dPdv);
#endif
}
CCL_NAMESPACE_END