tornavis/source/blender/gpu/shaders/material/gpu_shader_material_light_p...

36 lines
1.4 KiB
GLSL

/* SPDX-FileCopyrightText: 2019-2022 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
void node_light_path(out float is_camera_ray,
out float is_shadow_ray,
out float is_diffuse_ray,
out float is_glossy_ray,
out float is_singular_ray,
out float is_reflection_ray,
out float is_transmission_ray,
out float ray_length,
out float ray_depth,
out float diffuse_depth,
out float glossy_depth,
out float transparent_depth,
out float transmission_depth)
{
/* Supported. */
is_camera_ray = float(g_data.ray_type == RAY_TYPE_CAMERA);
is_shadow_ray = float(g_data.ray_type == RAY_TYPE_SHADOW);
is_diffuse_ray = float(g_data.ray_type == RAY_TYPE_DIFFUSE);
is_glossy_ray = float(g_data.ray_type == RAY_TYPE_GLOSSY);
/* Kind of supported. */
is_singular_ray = is_glossy_ray;
is_reflection_ray = is_glossy_ray;
is_transmission_ray = is_glossy_ray;
ray_depth = g_data.ray_depth;
diffuse_depth = (is_diffuse_ray == 1.0) ? g_data.ray_depth : 0.0;
glossy_depth = (is_glossy_ray == 1.0) ? g_data.ray_depth : 0.0;
transmission_depth = (is_transmission_ray == 1.0) ? glossy_depth : 0.0;
ray_length = g_data.ray_length;
/* Not supported. */
transparent_depth = 0.0;
}