Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-05 20:49:47 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-05 21:05:24 +0300
commite290a0b0568ecfcf47aa55b059de468b2c651e19 (patch)
treef0351e84edcf595f6bf61a77c4fb21384559f32b /intern/cycles/render/attribute.h
parent25c935e65fd901f42d2f26fede91749ee39b29f9 (diff)
Cleanup: add asserts to catch cases where wrong attribute type is used.
Diffstat (limited to 'intern/cycles/render/attribute.h')
-rw-r--r--intern/cycles/render/attribute.h90
1 files changed, 74 insertions, 16 deletions
diff --git a/intern/cycles/render/attribute.h b/intern/cycles/render/attribute.h
index 9a92d98b713..ed9e9fe76d6 100644
--- a/intern/cycles/render/attribute.h
+++ b/intern/cycles/render/attribute.h
@@ -66,22 +66,80 @@ public:
size_t element_size(Mesh *mesh, AttributePrimitive prim) const;
size_t buffer_size(Mesh *mesh, AttributePrimitive prim) const;
- char *data() { return (buffer.size())? &buffer[0]: NULL; };
- float2 *data_float2() { return (float2*)data(); }
- float3 *data_float3() { return (float3*)data(); }
- float4 *data_float4() { return (float4*)data(); }
- float *data_float() { return (float*)data(); }
- uchar4 *data_uchar4() { return (uchar4*)data(); }
- Transform *data_transform() { return (Transform*)data(); }
- VoxelAttribute *data_voxel() { return ( VoxelAttribute*)data(); }
-
- const char *data() const { return (buffer.size())? &buffer[0]: NULL; }
- const float2 *data_float2() const { return (const float2*)data(); }
- const float3 *data_float3() const { return (const float3*)data(); }
- const float4 *data_float4() const { return (const float4*)data(); }
- const float *data_float() const { return (const float*)data(); }
- const Transform *data_transform() const { return (const Transform*)data(); }
- const VoxelAttribute *data_voxel() const { return (const VoxelAttribute*)data(); }
+ char *data()
+ {
+ return (buffer.size())? &buffer[0]: NULL;
+ }
+ float2 *data_float2()
+ {
+ assert(data_sizeof() == sizeof(float2));
+ return (float2*)data();
+ }
+ float3 *data_float3()
+ {
+ assert(data_sizeof() == sizeof(float3));
+ return (float3*)data();
+ }
+ float4 *data_float4()
+ {
+ assert(data_sizeof() == sizeof(float4));
+ return (float4*)data();
+ }
+ float *data_float()
+ {
+ assert(data_sizeof() == sizeof(float));
+ return (float*)data();
+ }
+ uchar4 *data_uchar4()
+ {
+ assert(data_sizeof() == sizeof(uchar4));
+ return (uchar4*)data();
+ }
+ Transform *data_transform()
+ {
+ assert(data_sizeof() == sizeof(Transform));
+ return (Transform*)data();
+ }
+ VoxelAttribute *data_voxel()
+ {
+ assert(data_sizeof() == sizeof(VoxelAttribute));
+ return ( VoxelAttribute*)data();
+ }
+
+ const char *data() const
+ {
+ return (buffer.size())? &buffer[0]: NULL;
+ }
+ const float2 *data_float2() const
+ {
+ assert(data_sizeof() == sizeof(float2));
+ return (const float2*)data();
+ }
+ const float3 *data_float3() const
+ {
+ assert(data_sizeof() == sizeof(float3));
+ return (const float3*)data();
+ }
+ const float4 *data_float4() const
+ {
+ assert(data_sizeof() == sizeof(float4));
+ return (const float4*)data();
+ }
+ const float *data_float() const
+ {
+ assert(data_sizeof() == sizeof(float));
+ return (const float*)data();
+ }
+ const Transform *data_transform() const
+ {
+ assert(data_sizeof() == sizeof(Transform));
+ return (const Transform*)data();
+ }
+ const VoxelAttribute *data_voxel() const
+ {
+ assert(data_sizeof() == sizeof(VoxelAttribute));
+ return (const VoxelAttribute*)data();
+ }
void zero_data(void* dst);
void add_with_weight(void* dst, void* src, float weight);