2023-06-14 06:52:36 +00:00
|
|
|
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
2016-04-15 21:01:20 +00:00
|
|
|
|
|
|
|
#ifndef __UTIL_TEXTURE_H__
|
|
|
|
#define __UTIL_TEXTURE_H__
|
|
|
|
|
2021-10-24 12:19:19 +00:00
|
|
|
#include "util/transform.h"
|
2020-03-17 15:48:00 +00:00
|
|
|
|
2016-04-15 21:01:20 +00:00
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
|
|
|
|
/* Color to use when textures are not found. */
|
|
|
|
#define TEX_IMAGE_MISSING_R 1
|
|
|
|
#define TEX_IMAGE_MISSING_G 0
|
|
|
|
#define TEX_IMAGE_MISSING_B 1
|
|
|
|
#define TEX_IMAGE_MISSING_A 1
|
|
|
|
|
2017-10-06 19:47:41 +00:00
|
|
|
/* Interpolation types for textures
|
2022-03-30 00:38:24 +00:00
|
|
|
* CUDA also use texture space to store other objects. */
|
2017-10-08 00:36:05 +00:00
|
|
|
typedef enum InterpolationType {
|
2017-10-06 19:47:41 +00:00
|
|
|
INTERPOLATION_NONE = -1,
|
|
|
|
INTERPOLATION_LINEAR = 0,
|
|
|
|
INTERPOLATION_CLOSEST = 1,
|
|
|
|
INTERPOLATION_CUBIC = 2,
|
|
|
|
INTERPOLATION_SMART = 3,
|
|
|
|
|
|
|
|
INTERPOLATION_NUM_TYPES,
|
2017-10-08 00:36:05 +00:00
|
|
|
} InterpolationType;
|
2017-10-06 19:47:41 +00:00
|
|
|
|
2017-10-08 00:36:05 +00:00
|
|
|
typedef enum ImageDataType {
|
2017-10-06 19:47:41 +00:00
|
|
|
IMAGE_DATA_TYPE_FLOAT4 = 0,
|
|
|
|
IMAGE_DATA_TYPE_BYTE4 = 1,
|
|
|
|
IMAGE_DATA_TYPE_HALF4 = 2,
|
|
|
|
IMAGE_DATA_TYPE_FLOAT = 3,
|
|
|
|
IMAGE_DATA_TYPE_BYTE = 4,
|
|
|
|
IMAGE_DATA_TYPE_HALF = 5,
|
2018-07-05 10:37:52 +00:00
|
|
|
IMAGE_DATA_TYPE_USHORT4 = 6,
|
|
|
|
IMAGE_DATA_TYPE_USHORT = 7,
|
2020-10-02 15:40:28 +00:00
|
|
|
IMAGE_DATA_TYPE_NANOVDB_FLOAT = 8,
|
|
|
|
IMAGE_DATA_TYPE_NANOVDB_FLOAT3 = 9,
|
2022-05-20 16:01:26 +00:00
|
|
|
IMAGE_DATA_TYPE_NANOVDB_FPN = 10,
|
|
|
|
IMAGE_DATA_TYPE_NANOVDB_FP16 = 11,
|
2017-10-06 19:47:41 +00:00
|
|
|
|
|
|
|
IMAGE_DATA_NUM_TYPES
|
2017-10-08 00:36:05 +00:00
|
|
|
} ImageDataType;
|
2017-10-06 19:47:41 +00:00
|
|
|
|
2019-05-18 18:52:20 +00:00
|
|
|
/* Alpha types
|
|
|
|
* How to treat alpha in images. */
|
|
|
|
typedef enum ImageAlphaType {
|
|
|
|
IMAGE_ALPHA_UNASSOCIATED = 0,
|
|
|
|
IMAGE_ALPHA_ASSOCIATED = 1,
|
|
|
|
IMAGE_ALPHA_CHANNEL_PACKED = 2,
|
|
|
|
IMAGE_ALPHA_IGNORE = 3,
|
|
|
|
IMAGE_ALPHA_AUTO = 4,
|
|
|
|
|
|
|
|
IMAGE_ALPHA_NUM_TYPES,
|
|
|
|
} ImageAlphaType;
|
|
|
|
|
2017-10-06 19:47:41 +00:00
|
|
|
/* Extension types for textures.
|
|
|
|
*
|
|
|
|
* Defines how the image is extrapolated past its original bounds. */
|
2017-10-08 00:36:05 +00:00
|
|
|
typedef enum ExtensionType {
|
2017-10-06 19:47:41 +00:00
|
|
|
/* Cause the image to repeat horizontally and vertically. */
|
|
|
|
EXTENSION_REPEAT = 0,
|
|
|
|
/* Extend by repeating edge pixels of the image. */
|
|
|
|
EXTENSION_EXTEND = 1,
|
|
|
|
/* Clip to image size and set exterior pixels as transparent. */
|
|
|
|
EXTENSION_CLIP = 2,
|
2022-12-14 18:19:52 +00:00
|
|
|
/* Repeatedly flip the image horizontally and vertically. */
|
|
|
|
EXTENSION_MIRROR = 3,
|
2017-10-06 19:47:41 +00:00
|
|
|
|
|
|
|
EXTENSION_NUM_TYPES,
|
2017-10-08 00:36:05 +00:00
|
|
|
} ExtensionType;
|
2017-10-06 19:47:41 +00:00
|
|
|
|
|
|
|
typedef struct TextureInfo {
|
|
|
|
/* Pointer, offset or texture depending on device. */
|
|
|
|
uint64_t data;
|
2020-02-26 16:31:33 +00:00
|
|
|
/* Data Type */
|
|
|
|
uint data_type;
|
2017-10-06 19:47:41 +00:00
|
|
|
/* Interpolation and extension type. */
|
|
|
|
uint interpolation, extension;
|
|
|
|
/* Dimensions. */
|
|
|
|
uint width, height, depth;
|
2020-03-17 15:48:00 +00:00
|
|
|
/* Transform for 3D textures. */
|
|
|
|
uint use_transform_3d;
|
|
|
|
Transform transform_3d;
|
2017-10-06 19:47:41 +00:00
|
|
|
} TextureInfo;
|
|
|
|
|
2016-04-15 21:01:20 +00:00
|
|
|
CCL_NAMESPACE_END
|
|
|
|
|
|
|
|
#endif /* __UTIL_TEXTURE_H__ */
|