[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