Blender V4.3
kernel/svm/camera.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#pragma once
6
8
11 ccl_private float *stack,
12 uint out_vector,
13 uint out_zdepth,
14 uint out_distance)
15{
16 float distance;
17 float zdepth;
19
20 Transform tfm = kernel_data.cam.worldtocamera;
21 vector = transform_point(&tfm, sd->P);
22 zdepth = vector.z;
24
25 if (stack_valid(out_vector)) {
26 stack_store_float3(stack, out_vector, normalize(vector));
27 }
28
29 if (stack_valid(out_zdepth)) {
30 stack_store_float(stack, out_zdepth, zdepth);
31 }
32
33 if (stack_valid(out_distance)) {
34 stack_store_float(stack, out_distance, distance);
35 }
36}
37
unsigned int uint
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
Definition btVector3.h:303
#define kernel_data
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define ccl_private
#define ccl_device_noinline
#define CCL_NAMESPACE_END
int len
CCL_NAMESPACE_BEGIN ccl_device_noinline void svm_node_camera(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint out_vector, uint out_zdepth, uint out_distance)
ccl_device_inline void stack_store_float3(ccl_private float *stack, uint a, float3 f)
ccl_device_inline void stack_store_float(ccl_private float *stack, uint a, float f)
ccl_device_inline bool stack_valid(uint a)
ShaderData
float distance(float a, float b)
CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN ccl_device_inline float3 transform_point(ccl_private const Transform *t, const float3 a)
Definition transform.h:63