[Bf-blender-cvs] [a78b3ee53aa] openvdb: Merge remote-tracking branch 'origin/master' into openvdb

Lukas Tönne noreply at git.blender.org
Mon Oct 16 11:24:19 CEST 2017


Commit: a78b3ee53aa53020b086a6df25c0e28491223dcc
Author: Lukas Tönne
Date:   Mon Oct 16 10:16:13 2017 +0100
Branches: openvdb
https://developer.blender.org/rBa78b3ee53aa53020b086a6df25c0e28491223dcc

Merge remote-tracking branch 'origin/master' into openvdb

===================================================================



===================================================================

diff --cc intern/cycles/blender/CMakeLists.txt
index 3612456f34d,ae4977aaed0..4a1c3377055
--- a/intern/cycles/blender/CMakeLists.txt
+++ b/intern/cycles/blender/CMakeLists.txt
@@@ -33,9 -28,9 +28,10 @@@ set(SR
  	blender_shader.cpp
  	blender_sync.cpp
  	blender_texture.cpp
 +	blender_volume.cpp
  
  	CCL_api.h
+ 	blender_object_cull.h
  	blender_sync.h
  	blender_session.h
  	blender_texture.h
diff --cc intern/cycles/blender/blender_object.cpp
index 5ff3293020d,eb573b75e9e..48e7bebeff8
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@@ -14,24 -14,24 +14,25 @@@
   * limitations under the License.
   */
  
- #include "camera.h"
- #include "integrator.h"
- #include "graph.h"
- #include "light.h"
- #include "mesh.h"
- #include "object.h"
- #include "scene.h"
- #include "nodes.h"
- #include "particles.h"
- #include "shader.h"
+ #include "render/camera.h"
+ #include "render/integrator.h"
+ #include "render/graph.h"
+ #include "render/light.h"
+ #include "render/mesh.h"
+ #include "render/object.h"
+ #include "render/scene.h"
+ #include "render/nodes.h"
+ #include "render/particles.h"
+ #include "render/shader.h"
 +#include "volume.h"
  
- #include "blender_sync.h"
- #include "blender_util.h"
+ #include "blender/blender_object_cull.h"
+ #include "blender/blender_sync.h"
+ #include "blender/blender_util.h"
  
- #include "util_foreach.h"
- #include "util_hash.h"
- #include "util_logging.h"
+ #include "util/util_foreach.h"
+ #include "util/util_hash.h"
+ #include "util/util_logging.h"
  
  CCL_NAMESPACE_BEGIN
  
@@@ -460,15 -349,8 +365,13 @@@ Object *BlenderSync::sync_object(BL::Ob
  	if(object_map.sync(&object, b_ob, b_parent, key))
  		object_updated = true;
  	
- 	bool use_holdout = (layer_flag & render_layer.holdout_layer) != 0;
- 	
 -	/* mesh sync */
 -	object->mesh = sync_mesh(b_ob, object_updated, hide_tris);
 +	if(object_has_sparse_volume(b_ob)) {
 +		sync_volume(b_ob);
 +	}
 +	/*else*/ {
 +		/* mesh sync */
 +		object->mesh = sync_mesh(b_ob, object_updated, hide_tris);
 +	}
  
  	/* special case not tracked by object update flags */
  
diff --cc intern/cycles/blender/blender_util.h
index c729f5f2a35,363e19f7a20..5b63f986538
--- a/intern/cycles/blender/blender_util.h
+++ b/intern/cycles/blender/blender_util.h
@@@ -781,26 -784,35 +784,55 @@@ struct ParticleSystemKey 
  	}
  };
  
+ class EdgeMap {
+ public:
+ 	EdgeMap() {
+ 	}
+ 
+ 	void clear() {
+ 		edges_.clear();
+ 	}
+ 
+ 	void insert(int v0, int v1) {
+ 		get_sorted_verts(v0, v1);
+ 		edges_.insert(std::pair<int, int>(v0, v1));
+ 	}
+ 
+ 	bool exists(int v0, int v1) {
+ 		get_sorted_verts(v0, v1);
+ 		return edges_.find(std::pair<int, int>(v0, v1)) != edges_.end();
+ 	}
+ 
+ protected:
+ 	void get_sorted_verts(int& v0, int& v1) {
+ 		if(v0 > v1) {
+ 			swap(v0, v1);
+ 		}
+ 	}
+ 
+ 	set< std::pair<int, int> > edges_;
+ };
+ 
 +/* Volume Key */
 +
 +/* XXX For now we just use Object ID as a volume key;
 + * Volumes may become a true ID block in Blender later,
 + * or the key can be augmented to distinguish multiple volumes inside the same object.
 + */
 +struct VolumeKey {
 +	void *ob;
 +
 +	VolumeKey(void *ob_)
 +	: ob(ob_)
 +	{
 +	}
 +
 +	bool operator<(const VolumeKey& k) const
 +	{
 +		return ob < k.ob;
 +	}
 +};
 +
  CCL_NAMESPACE_END
  
  #endif /* __BLENDER_UTIL_H__ */
diff --cc intern/cycles/device/CMakeLists.txt
index 091bb767162,3c632160fbd..711f81790e5
--- a/intern/cycles/device/CMakeLists.txt
+++ b/intern/cycles/device/CMakeLists.txt
@@@ -1,13 -1,6 +1,7 @@@
  
  set(INC
- 	.
- 	../graph
- 	../kernel
- 	../kernel/svm
+ 	..
 +	../kernel/openvdb
- 	../kernel/osl
- 	../util
- 	../render
  	../../glew-mx
  )
  
diff --cc intern/cycles/device/device_cpu.cpp
index fe870b1587f,a17caabc850..e4830ca77fd
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@@ -24,32 -24,34 +24,40 @@@
  #  include <OSL/oslexec.h>
  #endif
  
- #include "device.h"
- #include "device_intern.h"
+ #include "device/device.h"
+ #include "device/device_denoising.h"
+ #include "device/device_intern.h"
+ #include "device/device_split_kernel.h"
  
- #include "kernel.h"
- #include "kernel_compat_cpu.h"
- #include "kernel_types.h"
- #include "kernel_globals.h"
+ #include "kernel/kernel.h"
+ #include "kernel/kernel_compat_cpu.h"
+ #include "kernel/kernel_types.h"
+ #include "kernel/split/kernel_split_data.h"
+ #include "kernel/kernel_globals.h"
  
- #include "osl_shader.h"
- #include "osl_globals.h"
+ #include "kernel/filter/filter.h"
+ 
+ #include "kernel/osl/osl_shader.h"
+ #include "kernel/osl/osl_globals.h"
  
 +#ifdef WITH_OPENVDB
 +#include "vdb_globals.h"
 +#include "vdb_thread.h"
 +#endif
 +
- #include "buffers.h"
 +
- #include "util_debug.h"
- #include "util_foreach.h"
- #include "util_function.h"
- #include "util_logging.h"
- #include "util_opengl.h"
- #include "util_progress.h"
- #include "util_system.h"
- #include "util_thread.h"
+ #include "render/buffers.h"
+ 
+ #include "util/util_debug.h"
+ #include "util/util_foreach.h"
+ #include "util/util_function.h"
+ #include "util/util_logging.h"
+ #include "util/util_map.h"
+ #include "util/util_opengl.h"
+ #include "util/util_optimization.h"
+ #include "util/util_progress.h"
+ #include "util/util_system.h"
+ #include "util/util_thread.h"
  
  CCL_NAMESPACE_BEGIN
  
@@@ -116,6 -126,143 +132,147 @@@ public
  		}
  	}
  
+ 	inline F operator()() const {
+ 		assert(kernel);
+ 		return kernel;
+ 	}
+ protected:
+ 	F kernel;
+ };
+ 
+ class CPUSplitKernel : public DeviceSplitKernel {
+ 	CPUDevice *device;
+ public:
+ 	explicit CPUSplitKernel(CPUDevice *device);
+ 
+ 	virtual bool enqueue_split_kernel_data_init(const KernelDimensions& dim,
+ 	                                            RenderTile& rtile,
+ 	                                            int num_global_elements,
+ 	                                            device_memory& kernel_globals,
+ 	                                            device_memory& kernel_data_,
+ 	                                            device_memory& split_data,
+ 	                                            device_memory& ray_state,
+ 	                                            device_memory& queue_index,
+ 	                                            device_memory& use_queues_flag,
+ 	                                            device_memory& work_pool_wgs);
+ 
+ 	virtual SplitKernelFunction* get_split_kernel_function(const string& kernel_name,
+ 	                                                       const DeviceRequestedFeatures&);
+ 	virtual int2 split_kernel_local_size();
+ 	virtual int2 split_kernel_global_size(device_memory& kg, device_memory& data, DeviceTask *task);
+ 	virtual uint64_t state_buffer_size(device_memory& kg, device_memory& data, size_t num_threads);
+ };
+ 
+ class CPUDevice : public Device
+ {
+ public:
+ 	TaskPool task_pool;
+ 	KernelGlobals kernel_globals;
+ 
+ 	device_vector<TextureInfo> texture_info;
+ 	bool need_texture_info;
+ 
+ #ifdef WITH_OSL
+ 	OSLGlobals osl_globals;
+ #endif
+ 
++#ifdef WITH_OPENVDB
++	OpenVDBGlobals vdb_globals;
++#endif
++
+ 	bool use_split_kernel;
+ 
+ 	DeviceRequestedFeatures requested_features;
+ 
+ 	KernelFunctions<void(*)(KernelGlobals *, float *, int, int, int, int, int)>             path_trace_kernel;
+ 	KernelFunctions<void(*)(KernelGlobals *, uchar4 *, float *, float, int, int, int, int)> convert_to_half_float_kernel;
+ 	KernelFunctions<void(*)(KernelGlobals *, uchar4 *, float *, float, int, int, int, int)> convert_to_byte_kernel;
+ 	KernelFunctions<void(*)(KernelGlobals *, uint4 *, float4 *, int, int, int, int, int)>   shader_kernel;
+ 
+ 	KernelFunctions<void(*)(int, TilesInfo*, int, int, float*, float*, float*, float*, float*, int*, int, int)> filter_divide_shadow_kernel;
+ 	KernelFunctions<void(*)(int, TilesInfo*, int, int, int, int, float*, float*, int*, int, int)>               filter_get_feature_kernel;
+ 	KernelFunctions<void(*)(int, int, float*, float*, float*, float*, int*, int)>                               filter_detect_outliers_kernel;
+ 	KernelFunctions<void(*)(int, int, float*, float*, float*, float*, int*, int)>                               filter_combine_halves_kernel;
+ 
+ 	KernelFunctions<void(*)(int, int, float*, float*, float*, int*, int, int, float, float)> filter_nlm_calc_difference_kernel;
+ 	KernelFunctions<void(*)(float*, float*, int*, int, int)>                                 filter_nlm_blur_kernel;
+ 	KernelFunctions<void(*)(float*, float*, int*, int, int)>                                 filter_nlm_calc_weight_kernel;
+ 	KernelFunctions<void(*)(int, int, float*, float*, float*, float*, int*, int, int)>       filter_nlm_update_output_kernel;
+ 	KernelFunctions<void(*)(float*, float*, int*, int)>                                      filter_nlm_normalize_kernel;
+ 
+ 	KernelFunctions<void(*)(float*, int, int, int, float*, int*, int*, int, int, float)>                              filter_construct_transform_kernel;
+ 	KernelFunctions<void(*)(int, int, float*, float*, float*, int*, float*, float3*, int*, int*, int, int, int, int)> filter_nlm_construct_gramian_kernel;
+ 	KernelFunctions<void(*)(int, int, int, int, int, float*, int*, float*, float3*, int*, int)>                       filter_finalize_kernel;
+ 
+ 	KernelFunctions<void(*)(KernelGlobals *, ccl_constant KernelData*, ccl_global void*, int, ccl_global char*,
+ 	                       int, int, int, int, int, int, int, int, ccl_global int*, int,
+ 	                       ccl_global char*, ccl_global unsigned int*, unsigned int, ccl_global float*)>        data_init_kernel;
+ 	unordered_map<string, KernelFunctions<void(*)(KernelGlobals*, KernelData*)> > split_kernels;
+ 
+ #define KERNEL_FUNCTIONS(name) \
+ 	      KERNEL_NAME_EVAL(cpu, name), \
+ 	      KERNEL_NAME_EVAL(cpu_sse2, name), \
+ 	      KERNEL_NAME_EVAL(cpu_sse3, name), \
+ 	      KERNEL_NAME_EVAL(cpu_sse41, name), \
+ 	      KERNEL_NAME_EVAL(cpu_avx, name), \
+ 	      KERNEL_NAME_EVAL(cpu_avx2, name)
+ 
+ 	CPUDevice(DeviceInfo& info, Stats &stats, bool background)
+ 	: Device(info, stats, background),
+ #define REGISTER_KERNEL(name) name ## _kernel(KERNEL_FUNCTIONS(name))
+ 	  REGISTER_KERNEL(path_trace),
+ 	  REGISTER_KERNEL(convert_to_half_float

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list