diff options
author | Ton Roosendaal <ton@blender.org> | 2011-04-27 15:58:34 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-04-27 15:58:34 +0400 |
commit | da376e0237517543aa21740ee2363234ee1c20ae (patch) | |
tree | 014a513ed8d0eccc5e54fef42347781e85bae56a /intern/cycles/bvh/bvh_params.h | |
parent | 693780074388111e7b9ef1c3825e462f398dc6c4 (diff) |
Cycles render engine, initial commit. This is the engine itself, blender modifications and build instructions will follow later.
Cycles uses code from some great open source projects, many thanks them:
* BVH building and traversal code from NVidia's "Understanding the Efficiency of Ray Traversal on GPUs":
http://code.google.com/p/understanding-the-efficiency-of-ray-traversal-on-gpus/
* Open Shading Language for a large part of the shading system:
http://code.google.com/p/openshadinglanguage/
* Blender for procedural textures and a few other nodes.
* Approximate Catmull Clark subdivision from NVidia Mesh tools:
http://code.google.com/p/nvidia-mesh-tools/
* Sobol direction vectors from:
http://web.maths.unsw.edu.au/~fkuo/sobol/
* Film response functions from:
http://www.cs.columbia.edu/CAVE/software/softlib/dorf.php
Diffstat (limited to 'intern/cycles/bvh/bvh_params.h')
-rw-r--r-- | intern/cycles/bvh/bvh_params.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/intern/cycles/bvh/bvh_params.h b/intern/cycles/bvh/bvh_params.h new file mode 100644 index 00000000000..b38e40cfbda --- /dev/null +++ b/intern/cycles/bvh/bvh_params.h @@ -0,0 +1,86 @@ +/* + * Adapted from code copyright 2009-2010 NVIDIA Corporation + * Modifications Copyright 2011, 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 __BVH_PARAMS_H__ +#define __BVH_PARAMS_H__ + +CCL_NAMESPACE_BEGIN + +/* BVH Parameters */ + +class BVHParams +{ +public: + /* spatial split area threshold */ + bool use_spatial_split; + float spatial_split_alpha; + + /* SAH costs */ + float sah_node_cost; + float sah_triangle_cost; + + /* number of triangles in leaf */ + int min_leaf_size; + int max_leaf_size; + + /* object or mesh level bvh */ + bool top_level; + + /* disk cache */ + bool use_cache; + + /* QBVH */ + bool use_qbvh; + + /* fixed parameters */ + enum { + MAX_DEPTH = 64, + MAX_SPATIAL_DEPTH = 48, + NUM_SPATIAL_BINS = 32 + }; + + BVHParams() + { + use_spatial_split = true; + spatial_split_alpha = 1e-5f; + + sah_node_cost = 1.0f; + sah_triangle_cost = 1.0f; + + min_leaf_size = 1; + max_leaf_size = 0x7FFFFFF; + + top_level = false; + use_cache = false; + use_qbvh = false; + } + + /* SAH costs */ + float cost(int num_nodes, int num_tris) const + { return node_cost(num_nodes) + triangle_cost(num_tris); } + + float triangle_cost(int n) const + { return n*sah_triangle_cost; } + + float node_cost(int n) const + { return n*sah_node_cost; } +}; + +CCL_NAMESPACE_END + +#endif /* __BVH_PARAMS_H__ */ + |