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:
Diffstat (limited to 'intern/cycles/render/attribute.h')
-rw-r--r--intern/cycles/render/attribute.h287
1 files changed, 0 insertions, 287 deletions
diff --git a/intern/cycles/render/attribute.h b/intern/cycles/render/attribute.h
deleted file mode 100644
index 004c267cabc..00000000000
--- a/intern/cycles/render/attribute.h
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __ATTRIBUTE_H__
-#define __ATTRIBUTE_H__
-
-#include "render/image.h"
-
-#include "kernel/kernel_types.h"
-
-#include "util/util_list.h"
-#include "util/util_param.h"
-#include "util/util_set.h"
-#include "util/util_types.h"
-#include "util/util_vector.h"
-
-CCL_NAMESPACE_BEGIN
-
-class Attribute;
-class AttributeRequest;
-class AttributeRequestSet;
-class AttributeSet;
-class ImageHandle;
-class Geometry;
-class Hair;
-class Mesh;
-struct Transform;
-
-/* AttrKernelDataType.
- *
- * The data type of the device arrays storing the attribute's data. Those data types are different
- * than the ones for attributes as some attribute types are stored in the same array, e.g. Point,
- * Vector, and Transform are all stored as float3 in the kernel.
- *
- * The values of this enumeration are also used as flags to detect changes in AttributeSet. */
-
-enum AttrKernelDataType {
- FLOAT = 0,
- FLOAT2 = 1,
- FLOAT3 = 2,
- UCHAR4 = 3,
-};
-
-/* Attribute
- *
- * Arbitrary data layers on meshes.
- * Supported types: Float, Color, Vector, Normal, Point */
-
-class Attribute {
- public:
- ustring name;
- AttributeStandard std;
-
- TypeDesc type;
- vector<char> buffer;
- AttributeElement element;
- uint flags; /* enum AttributeFlag */
-
- bool modified;
-
- Attribute(ustring name,
- TypeDesc type,
- AttributeElement element,
- Geometry *geom,
- AttributePrimitive prim);
- Attribute(Attribute &&other) = default;
- Attribute(const Attribute &other) = delete;
- Attribute &operator=(const Attribute &other) = delete;
- ~Attribute();
-
- void set(ustring name, TypeDesc type, AttributeElement element);
- void resize(Geometry *geom, AttributePrimitive prim, bool reserve_only);
- void resize(size_t num_elements);
-
- size_t data_sizeof() const;
- size_t element_size(Geometry *geom, AttributePrimitive prim) const;
- size_t buffer_size(Geometry *geom, AttributePrimitive prim) const;
-
- 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();
- }
-
- /* Attributes for voxels are images */
- ImageHandle &data_voxel()
- {
- assert(data_sizeof() == sizeof(ImageHandle));
- return *(ImageHandle *)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 ImageHandle &data_voxel() const
- {
- assert(data_sizeof() == sizeof(ImageHandle));
- return *(const ImageHandle *)data();
- }
-
- void zero_data(void *dst);
- void add_with_weight(void *dst, void *src, float weight);
-
- void add(const float &f);
- void add(const float2 &f);
- void add(const float3 &f);
- void add(const uchar4 &f);
- void add(const Transform &tfm);
- void add(const char *data);
-
- void set_data_from(Attribute &&other);
-
- static bool same_storage(TypeDesc a, TypeDesc b);
- static const char *standard_name(AttributeStandard std);
- static AttributeStandard name_standard(const char *name);
-
- static AttrKernelDataType kernel_type(const Attribute &attr);
-
- void get_uv_tiles(Geometry *geom, AttributePrimitive prim, unordered_set<int> &tiles) const;
-};
-
-/* Attribute Set
- *
- * Set of attributes on a mesh. */
-
-class AttributeSet {
- uint32_t modified_flag;
-
- public:
- Geometry *geometry;
- AttributePrimitive prim;
- list<Attribute> attributes;
-
- AttributeSet(Geometry *geometry, AttributePrimitive prim);
- AttributeSet(AttributeSet &&) = default;
- ~AttributeSet();
-
- Attribute *add(ustring name, TypeDesc type, AttributeElement element);
- Attribute *find(ustring name) const;
- void remove(ustring name);
-
- Attribute *add(AttributeStandard std, ustring name = ustring());
- Attribute *find(AttributeStandard std) const;
- void remove(AttributeStandard std);
-
- Attribute *find(AttributeRequest &req);
-
- void remove(Attribute *attribute);
-
- void remove(list<Attribute>::iterator it);
-
- void resize(bool reserve_only = false);
- void clear(bool preserve_voxel_data = false);
-
- /* Update the attributes in this AttributeSet with the ones from the new set,
- * and remove any attribute not found on the new set from this. */
- void update(AttributeSet &&new_attributes);
-
- /* Return whether the attributes of the given kernel_type are modified, where "modified" means
- * that some attributes of the given type were added or removed from this AttributeSet. This does
- * not mean that the data of the remaining attributes in this AttributeSet were also modified. To
- * check this, use Attribute.modified. */
- bool modified(AttrKernelDataType kernel_type) const;
-
- void clear_modified();
-
- private:
- /* Set the relevant modified flag for the attribute. Only attributes that are stored in device
- * arrays will be considered for tagging this AttributeSet as modified. */
- void tag_modified(const Attribute &attr);
-};
-
-/* AttributeRequest
- *
- * Request from a shader to use a certain attribute, so we can figure out
- * which ones we need to export from the host app end store for the kernel.
- * The attribute is found either by name or by standard attribute type. */
-
-class AttributeRequest {
- public:
- ustring name;
- AttributeStandard std;
-
- /* temporary variables used by GeometryManager */
- TypeDesc type, subd_type;
- AttributeDescriptor desc, subd_desc;
-
- explicit AttributeRequest(ustring name_);
- explicit AttributeRequest(AttributeStandard std);
-};
-
-/* AttributeRequestSet
- *
- * Set of attributes requested by a shader. */
-
-class AttributeRequestSet {
- public:
- vector<AttributeRequest> requests;
-
- AttributeRequestSet();
- ~AttributeRequestSet();
-
- void add(ustring name);
- void add(AttributeStandard std);
- void add(AttributeRequestSet &reqs);
- void add_standard(ustring name);
-
- bool find(ustring name);
- bool find(AttributeStandard std);
-
- size_t size();
- void clear();
-
- bool modified(const AttributeRequestSet &other);
-};
-
-CCL_NAMESPACE_END
-
-#endif /* __ATTRIBUTE_H__ */