[Bf-blender-cvs] [27b3ea6] cycles_camera_nodes: Merge remote-tracking branch 'origin/master' into cycles_camera_nodes

Dalai Felinto noreply at git.blender.org
Thu Sep 24 17:32:07 CEST 2015


Commit: 27b3ea622f8bd313a8e2827dfec752bf2125566c
Author: Dalai Felinto
Date:   Thu Sep 24 12:24:20 2015 -0300
Branches: cycles_camera_nodes
https://developer.blender.org/rB27b3ea622f8bd313a8e2827dfec752bf2125566c

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

Note: the branch currently crashes in blender_camera_nodes.cpp:
BL::NodeTree b_ntree = b_data.node_groups[nodes_tree_name];

The crash was introduced in:
cb7cf523e5c000609f32a382e2c0fcc57f635a42

Conflicts:
	intern/cycles/SConscript
	intern/cycles/blender/addon/__init__.py
	intern/cycles/blender/addon/properties.py
	intern/cycles/blender/blender_camera.cpp
	intern/cycles/kernel/kernel_types.h
	intern/cycles/kernel/svm/svm.h
	intern/cycles/kernel/svm/svm_types.h
	intern/cycles/render/camera.cpp
	intern/cycles/render/camera.h

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



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

diff --cc intern/cycles/CMakeLists.txt
index ae38fbb,c252a61..5b68da7
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@@ -131,28 -182,19 +182,26 @@@ endif(
  if(WITH_CYCLES_LOGGING)
  	add_definitions(-DWITH_CYCLES_LOGGING)
  	add_definitions(-DGOOGLE_GLOG_DLL_DECL=)
- 	if(WIN32)
- 		include_directories(
- 			SYSTEM
- 			../../extern/libmv/third_party/glog/src/windows
- 			../../extern/libmv/third_party/gflags
- 		)
- 	else()
- 		include_directories(
- 			SYSTEM
- 			../../extern/libmv/third_party/glog/src
- 			../../extern/libmv/third_party/gflags
- 		)
- 	endif()
+ 	add_definitions(-DCYCLES_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
+ 	include_directories(
+ 		SYSTEM
+ 		${GLOG_INCLUDE_DIRS}
+ 		${GFLAGS_INCLUDE_DIRS}
+ 	)
+ endif()
+ 
+ # Debugging capabilities (debug passes etc).
+ if(WITH_CYCLES_DEBUG)
+ 	add_definitions(-DWITH_CYCLES_DEBUG)
  endif()
  
 +if(WITH_LIBMV)
 +	add_definitions(-DWITH_CYCLES_DISTORTION)
 +	include_directories(
 +		../../extern/libmv
 +	)
 +endif()
 +
  include_directories(
  	SYSTEM
  	${BOOST_INCLUDE_DIR}
diff --cc intern/cycles/SConscript
index 58685f5,99df8c2..11af440
--- a/intern/cycles/SConscript
+++ b/intern/cycles/SConscript
@@@ -59,10 -67,20 +67,24 @@@ if env['WITH_BF_CYCLES_OSL']
      defs.append('OSL_STATIC_LIBRARY')
      incs.append(cycles['BF_OSL_INC'])
  
 +if env['WITH_BF_LIBMV']:
 +    defs.append('WITH_CYCLES_DISTORTION')
 +    incs.append('#extern/libmv')
 +
+ if env['WITH_BF_CYCLES_DEBUG']:
+     defs.append('WITH_CYCLES_DEBUG')
+ 
+ if env['WITH_BF_CYCLES_LOGGING']:
+     defs.append('WITH_CYCLES_LOGGING')
+     defs.append('GOOGLE_GLOG_DLL_DECL=')
+     defs.append('CYCLES_GFLAGS_NAMESPACE=gflags')
+     if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
+         incs.append('#extern/libmv/third_party/glog/src/windows')
+         incs.append('#extern/libmv/third_party/gflags')
+     else:
+         incs.append('#extern/libmv/third_party/glog/src')
+         incs.append('#extern/libmv/third_party/gflags')
+ 
  incs.extend('. bvh render device kernel kernel/osl kernel/svm util subd'.split())
  incs.extend('#intern/guardedalloc #source/blender/makesrna #source/blender/makesdna #source/blender/blenlib'.split())
  incs.extend('#source/blender/blenloader ../../source/blender/makesrna/intern'.split())
diff --cc intern/cycles/blender/addon/properties.py
index 12c1cd8,5f65fd7..c130594
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@@ -578,9 -597,34 +598,37 @@@ class CyclesCameraSettings(bpy.types.Pr
                  min=0.01, soft_max=15.0, max=100.0,
                  default=10.5,
                  )
+         cls.latitude_min = FloatProperty(
+                 name="Min Latitude",
+                 description="Minimum latitude (vertical angle) for the equirectangular lens",
+                 min=-0.5 * math.pi, max=0.5 * math.pi,
+                 subtype='ANGLE',
+                 default=-0.5 * math.pi,
+                 )
+         cls.latitude_max = FloatProperty(
+                 name="Max Latitude",
+                 description="Maximum latitude (vertical angle) for the equirectangular lens",
+                 min=-0.5 * math.pi, max=0.5 * math.pi,
+                 subtype='ANGLE',
+                 default=0.5 * math.pi,
+                 )
+         cls.longitude_min = FloatProperty(
+                 name="Min Longitude",
+                 description="Minimum longitude (horizontal angle) for the equirectangular lens",
+                 min=-math.pi, max=math.pi,
+                 subtype='ANGLE',
+                 default=-math.pi,
+                 )
+         cls.longitude_max = FloatProperty(
+                 name="Max Longitude",
+                 description="Maximum longitude (horizontal angle) for the equirectangular lens",
+                 min=-math.pi, max=math.pi,
+                 subtype='ANGLE',
+                 default=math.pi,
+                 )
 +        cls.nodes = StringProperty(
 +                name="nodes",
 +                description="Camera ray nodes")
  
      @classmethod
      def unregister(cls):
diff --cc intern/cycles/blender/blender_camera.cpp
index d26317b,1cc601c..d45dc62
--- a/intern/cycles/blender/blender_camera.cpp
+++ b/intern/cycles/blender/blender_camera.cpp
@@@ -396,18 -455,24 +461,25 @@@ void BlenderSync::sync_camera(BL::Rende
  	/* sync */
  	Camera *cam = scene->camera;
  	blender_camera_sync(cam, &bcam, width, height);
 +	sync_camera_nodes(b_ob);
- 	scene->camera->use_camera_in_volume = experimental;
  }
  
- void BlenderSync::sync_camera_motion(BL::Object b_ob, float motion_time)
+ void BlenderSync::sync_camera_motion(BL::RenderSettings b_render,
+                                      BL::Object b_ob,
+                                      int width, int height,
+                                      float motion_time)
  {
- 	Camera *cam = scene->camera;
+ 	if(!b_ob)
+ 		return;
  
- 	Transform tfm = get_transform(b_ob.matrix_world());
- 	tfm = blender_camera_matrix(tfm, cam->type);
+ 	Camera *cam = scene->camera;
+ 	BL::Array<float, 16> b_ob_matrix;
+ 	b_engine.camera_model_matrix(b_ob, b_ob_matrix);
+ 	Transform tfm = get_transform(b_ob_matrix);
+ 	tfm = blender_camera_matrix(tfm, cam->type, cam->panorama_type);
  
  	if(tfm != cam->matrix) {
+ 		VLOG(1) << "Camera " << b_ob.name() << " motion detected.";
  		if(motion_time == -1.0f) {
  			cam->motion.pre = tfm;
  			cam->use_motion = true;
@@@ -557,16 -682,14 +689,15 @@@ static void blender_camera_border(Blend
  void BlenderSync::sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height)
  {
  	BlenderCamera bcam;
- 	blender_camera_init(&bcam, b_scene.render(), b_scene);
- 	blender_camera_from_view(&bcam, b_scene, b_v3d, b_rv3d, width, height);
- 	blender_camera_border(&bcam, b_scene.render(), b_scene, b_v3d, b_rv3d, width, height);
+ 	blender_camera_init(&bcam, b_scene.render());
+ 	blender_camera_from_view(&bcam, b_engine, b_scene, b_v3d, b_rv3d, width, height);
+ 	blender_camera_border(&bcam, b_engine, b_scene.render(), b_scene, b_v3d, b_rv3d, width, height);
  
  	blender_camera_sync(scene->camera, &bcam, width, height);
 +	sync_view_nodes(b_rv3d);
- 	scene->camera->use_camera_in_volume = experimental;
  }
  
- BufferParams BlenderSync::get_buffer_params(BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, Camera *cam, int width, int height)
+ BufferParams BlenderSync::get_buffer_params(BL::RenderSettings b_render, BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, Camera *cam, int width, int height)
  {
  	BufferParams params;
  	bool use_border = false;
diff --cc intern/cycles/kernel/kernel_math.h
index d95a5c7,453f4c8..9e14d8c
--- a/intern/cycles/kernel/kernel_math.h
+++ b/intern/cycles/kernel/kernel_math.h
@@@ -19,8 -19,8 +19,9 @@@
  
  #include "util_color.h"
  #include "util_math.h"
+ #include "util_math_fast.h"
  #include "util_transform.h"
 +#include "util_distort.h"
  
  #endif /* __KERNEL_MATH_H__ */
  
diff --cc intern/cycles/kernel/kernel_types.h
index 0ec34da,740a5f1..60973a7
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@@ -69,7 -73,7 +73,8 @@@ CCL_NAMESPACE_BEGI
  #define __VOLUME_DECOUPLED__
  #define __VOLUME_SCATTER__
  #define __SHADOW_RECORD_ALL__
+ #define __VOLUME_RECORD_ALL__
 +#define __CAMERA_RAY_NODES__
  #endif
  
  #ifdef __KERNEL_CUDA__
@@@ -786,10 -795,6 +796,10 @@@ typedef struct KernelCamera 
  	float inv_aperture_ratio;
  
  	int is_inside_volume;
 +	int shader;
 +
 +	float focal_length;
- 	float pad[3];
++	float pad[2];
  
  	/* more matrices */
  	Transform screentoworld;
@@@ -976,13 -999,68 +1004,75 @@@ typedef struct KernelData 
  	KernelTables tables;
  } KernelData;
  
 +typedef struct CameraData {
 +	float2 raster;
 +	float2 lens;
 +	Ray ray;
 +	int shader;
 +} CameraData;
 +
+ #ifdef __KERNEL_DEBUG__
+ typedef ccl_addr_space struct DebugData {
+ 	// Total number of BVH node traversal steps and primitives intersections
+ 	// for the camera rays.
+ 	int num_bvh_traversal_steps;
+ 	int num_bvh_traversed_instances;
+ 	int num_ray_bounces;
+ } DebugData;
+ #endif
+ 
+ /* Declarations required for split kernel */
+ 
+ /* Macro for queues */
+ /* Value marking queue's empty slot */
+ #define QUEUE_EMPTY_SLOT -1
+ 
+ /*
+ * Queue 1 - Active rays
+ * Queue 2 - Background queue
+ * Queue 3 - Shadow ray cast kernel - AO
+ * Queeu 4 - Shadow ray cast kernel - direct lighting
+ */
+ #define NUM_QUEUES 4
+ 
+ /* Queue names */
+ enum QueueNumber {
+ 	QUEUE_ACTIVE_AND_REGENERATED_RAYS = 0,     /* All active rays and regenerated rays are enqueued here. */
+ 	QUEUE_HITBG_BUFF_UPDATE_TOREGEN_RAYS = 1,  /* All
+ 	                                            * 1. Background-hit rays,
+ 	                                            * 2. Rays that has exited path-iteration but needs to update output buffer
+ 	                                            * 3. Rays to be regenerated
+ 	                                            * are enqueued here.
+ 	                                            */
+ 	QUEUE_SHADOW_RAY_CAST_AO_RAYS = 2,         /* All rays for which a shadow ray should be cast to determine radiance
+ 	                                            * contribution for AO are enqueued here.
+ 	                                            */
+ 	QUEUE_SHADOW_RAY_CAST_DL_RAYS = 3,         /* All rays for which a shadow ray should be cast to determine radiance
+ 	                                            * contributing for direct lighting are enqueued here.
+ 	                                            */
+ };
+ 
+ /* We use RAY_STATE_MASK to get ray_state (enums 0 to 5) */
+ #define RAY_STATE_MASK 0x007
+ #define RAY_FLAG_MASK 0x0F8
+ enum RayState {
+ 	RAY_ACTIVE = 0,             // Denotes ray is actively involved in path-iteration
+ 	RAY_INACTIVE = 1,           // Denotes ray has completed processing all samples and is inactive
+ 	RAY_UPDATE_BUFFER = 2,      // Denoted ray has exited path-iteration and needs to update output buffer
+ 	RAY_HIT_BACKGROUND = 3,     // Donotes ray has hit background
+ 	RAY_TO_REGENERATE = 4,      // Denotes 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list