1 // Copyright 2020-2021 Intel Corporation 2 // SPDX-License-Identifier: Apache-2.0 3 4 #pragma once 5 6 #ifdef __cplusplus 7 #include <cstdint> 8 #include <cstdlib> 9 #else 10 #include <stdint.h> 11 #include <stdlib.h> 12 #endif 13 14 #include "common.h" 15 #include "volume.h" 16 17 #ifdef __cplusplus 18 struct Sampler : public ManagedObject 19 { 20 }; 21 #else 22 typedef ManagedObject Sampler; 23 #endif 24 25 typedef Sampler *VKLSampler; 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 OPENVKL_INTERFACE VKLSampler vklNewSampler(VKLVolume volume); 32 33 // single attribute sampling 34 35 OPENVKL_INTERFACE 36 float vklComputeSample(VKLSampler sampler, 37 const vkl_vec3f *objectCoordinates, 38 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 39 float time VKL_DEFAULT_VAL(= 0)); 40 41 OPENVKL_INTERFACE 42 void vklComputeSample4(const int *valid, 43 VKLSampler sampler, 44 const vkl_vvec3f4 *objectCoordinates, 45 float *samples, 46 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 47 const float *times VKL_DEFAULT_VAL(= nullptr)); 48 49 OPENVKL_INTERFACE 50 void vklComputeSample8(const int *valid, 51 VKLSampler sampler, 52 const vkl_vvec3f8 *objectCoordinates, 53 float *samples, 54 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 55 const float *times VKL_DEFAULT_VAL(= nullptr)); 56 57 OPENVKL_INTERFACE 58 void vklComputeSample16(const int *valid, 59 VKLSampler sampler, 60 const vkl_vvec3f16 *objectCoordinates, 61 float *samples, 62 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 63 const float *times VKL_DEFAULT_VAL(= nullptr)); 64 65 OPENVKL_INTERFACE 66 void vklComputeSampleN(VKLSampler sampler, 67 unsigned int N, 68 const vkl_vec3f *objectCoordinates, 69 float *samples, 70 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 71 const float *times VKL_DEFAULT_VAL(= nullptr)); 72 73 // multi-attribute sampling 74 75 OPENVKL_INTERFACE 76 void vklComputeSampleM(VKLSampler sampler, 77 const vkl_vec3f *objectCoordinates, 78 float *samples, 79 unsigned int M, 80 const unsigned int *attributeIndices, 81 float time VKL_DEFAULT_VAL(= 0)); 82 83 OPENVKL_INTERFACE 84 void vklComputeSampleM4(const int *valid, 85 VKLSampler sampler, 86 const vkl_vvec3f4 *objectCoordinates, 87 float *samples, 88 unsigned int M, 89 const unsigned int *attributeIndices, 90 const float *times VKL_DEFAULT_VAL(= nullptr)); 91 92 OPENVKL_INTERFACE 93 void vklComputeSampleM8(const int *valid, 94 VKLSampler sampler, 95 const vkl_vvec3f8 *objectCoordinates, 96 float *samples, 97 unsigned int M, 98 const unsigned int *attributeIndices, 99 const float *times VKL_DEFAULT_VAL(= nullptr)); 100 101 OPENVKL_INTERFACE 102 void vklComputeSampleM16(const int *valid, 103 VKLSampler sampler, 104 const vkl_vvec3f16 *objectCoordinates, 105 float *samples, 106 unsigned int M, 107 const unsigned int *attributeIndices, 108 const float *times VKL_DEFAULT_VAL(= nullptr)); 109 110 OPENVKL_INTERFACE 111 void vklComputeSampleMN(VKLSampler sampler, 112 unsigned int N, 113 const vkl_vec3f *objectCoordinates, 114 float *samples, 115 unsigned int M, 116 const unsigned int *attributeIndices, 117 const float *times VKL_DEFAULT_VAL(= nullptr)); 118 119 OPENVKL_INTERFACE 120 vkl_vec3f vklComputeGradient(VKLSampler sampler, 121 const vkl_vec3f *objectCoordinates, 122 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 123 float time VKL_DEFAULT_VAL(= 0)); 124 125 OPENVKL_INTERFACE 126 void vklComputeGradient4(const int *valid, 127 VKLSampler sampler, 128 const vkl_vvec3f4 *objectCoordinates, 129 vkl_vvec3f4 *gradients, 130 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 131 const float *times VKL_DEFAULT_VAL(= nullptr)); 132 133 OPENVKL_INTERFACE 134 void vklComputeGradient8(const int *valid, 135 VKLSampler sampler, 136 const vkl_vvec3f8 *objectCoordinates, 137 vkl_vvec3f8 *gradients, 138 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 139 const float *times VKL_DEFAULT_VAL(= nullptr)); 140 141 OPENVKL_INTERFACE 142 void vklComputeGradient16(const int *valid, 143 VKLSampler sampler, 144 const vkl_vvec3f16 *objectCoordinates, 145 vkl_vvec3f16 *gradients, 146 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 147 const float *times VKL_DEFAULT_VAL(= nullptr)); 148 149 OPENVKL_INTERFACE 150 void vklComputeGradientN(VKLSampler sampler, 151 unsigned int N, 152 const vkl_vec3f *objectCoordinates, 153 vkl_vec3f *gradients, 154 unsigned int attributeIndex VKL_DEFAULT_VAL(= 0), 155 const float *times VKL_DEFAULT_VAL(= nullptr)); 156 157 #ifdef __cplusplus 158 } // extern "C" 159 #endif 160