OptiX  3.9
NVIDIA OptiX Acceleration Engine
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
optixu_math.h
1 
2 /*
3  * Copyright (c) 2010 NVIDIA Corporation. All rights reserved.
4  *
5  * NVIDIA Corporation and its licensors retain all intellectual property and proprietary
6  * rights in and to this software, related documentation and any modifications thereto.
7  * Any use, reproduction, disclosure or distribution of this software and related
8  * documentation without an express license agreement from NVIDIA Corporation is strictly
9  * prohibited.
10  *
11  * TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS*
12  * AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED,
13  * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
14  * PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY
15  * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT
16  * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
17  * BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
18  * INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF
19  * SUCH DAMAGES
20  */
21 
22 #ifndef __optixu_optixu_math_h__
23 #define __optixu_optixu_math_h__
24 
25 /*
26  * This is a backward compatibility header designed to keep all the CUDA vector types in
27  * the global namespace. If you wish to have an unpolluted global namespace use
28  * <file>_namespace.h version of the headers instead. NOTE: within a project, the usage
29  * of either the optix or global namespace versions of the header files must be
30  * consistent. Mixing the two can cause errors either at compile time or link time.
31  */
32 
33 /*
34  * These need to be included first in order to make sure the CUDA vector types are defined
35  * in the global namespace necessary to maintain backward compatibility.
36  */
37 #include <vector_types.h>
38 #include <vector_functions.h>
39 
40 /*
41  * Any types that were defined in the global namespace in previous versions need to be
42  * declared here. We will also set RT_UINT_USHORT_DEFINED to signal to
43  * optixu_math_namespace.h that these types have already been defined here.
44  */
45 #if defined(_WIN32)
46  /* uint and ushort are not already defined on Windows systems */
47  typedef unsigned int uint;
48  typedef unsigned short ushort;
49 # define RT_UINT_USHORT_DEFINED
50 #endif
51 
52 #include "optixu_math_namespace.h"
53 
54 /*
55  * In order to maintain backward compatibility we are pulling all the functions in optix's
56  * namespace into the global namespace. If you need your global namespace unpolluted,
57  * include optixu_math_namespace.h instead.
58  */
59 
60 
61 /* From optixu_math_namespace.h */
62 
63 /* Types */
64 using optix::uint;
65 using optix::ushort;
66 
67 /* Functions that also exist on the system */
68 using optix::copysignf;
69 using optix::expf;
70 using optix::floor;
71 using optix::fmaxf;
72 using optix::fminf;
73 using optix::max;
74 using optix::min;
75 
76 /* Useful graphics functions */
77 using optix::clamp;
78 using optix::cross;
79 using optix::dot;
80 using optix::faceforward;
81 using optix::fresnel_schlick;
82 using optix::length;
83 using optix::lerp;
84 using optix::normalize;
85 using optix::reflect;
86 using optix::refract;
87 using optix::smoothstep;
88 using optix::temperature;
89 
90 #endif /* #ifndef __optixu_optixu_math_h__ */
OptiX public API.