From 872a8ed1bf635a62a65d3b2a92b7d2fbb368eea1 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 8 May 2013 17:33:25 +0000 Subject: Cycles / Hair rendering: * Enable hair rendering on the GPU. Patch by Stuart Broadfoot, with small tweaks by me, to only enable it on sm_20 and above. --- intern/cycles/blender/addon/ui.py | 6 ++---- intern/cycles/blender/blender_mesh.cpp | 4 ++-- intern/cycles/kernel/kernel_types.h | 2 +- intern/cycles/util/util_transform.h | 22 +++++++++++----------- 4 files changed, 16 insertions(+), 18 deletions(-) (limited to 'intern') diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index fcb0b680fde..c3a717e0956 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1032,8 +1032,7 @@ class CyclesRender_PT_CurveRendering(CyclesButtonsPanel, Panel): scene = context.scene cscene = scene.cycles psys = context.particle_system - device_type = context.user_preferences.system.compute_device_type - experimental = ((cscene.feature_set == 'EXPERIMENTAL') and (cscene.device == 'CPU' or device_type == 'NONE')) + experimental = (cscene.feature_set == 'EXPERIMENTAL') return CyclesButtonsPanel.poll(context) and experimental and psys def draw_header(self, context): @@ -1102,8 +1101,7 @@ class CyclesParticle_PT_CurveSettings(CyclesButtonsPanel, Panel): cscene = scene.cycles ccscene = scene.cycles_curves use_curves = ccscene.use_curves and context.particle_system - device_type = context.user_preferences.system.compute_device_type - experimental = cscene.feature_set == 'EXPERIMENTAL' and (cscene.device == 'CPU' or device_type == 'NONE') + experimental = cscene.feature_set == 'EXPERIMENTAL' return CyclesButtonsPanel.poll(context) and experimental and use_curves def draw(self, context): diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index c545ad240c4..b144933bb22 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -449,14 +449,14 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated, bool hide_tri mesh->name = ustring(b_ob_data.name().c_str()); if(b_mesh) { - if(!(hide_tris && experimental && is_cpu)) { + if(!(hide_tris && experimental)) { if(cmesh.data && experimental && RNA_boolean_get(&cmesh, "use_subdivision")) create_subd_mesh(mesh, b_mesh, &cmesh, used_shaders); else create_mesh(scene, mesh, b_mesh, used_shaders); } - if(experimental && is_cpu) + if(experimental) sync_curves(mesh, b_mesh, b_ob, object_updated); /* free derived mesh */ diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index fad1ee8f525..ee221db4267 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -51,7 +51,6 @@ CCL_NAMESPACE_BEGIN #define __KERNEL_SHADING__ #define __KERNEL_ADV_SHADING__ #define __NON_PROGRESSIVE__ -#define __HAIR__ #ifdef WITH_OSL #define __OSL__ #endif @@ -125,6 +124,7 @@ CCL_NAMESPACE_BEGIN #define __ANISOTROPIC__ #define __CAMERA_MOTION__ #define __OBJECT_MOTION__ +#define __HAIR__ #endif //#define __SOBOL_FULL_SCREEN__ diff --git a/intern/cycles/util/util_transform.h b/intern/cycles/util/util_transform.h index 617ba43a5ed..10120ed5fdb 100644 --- a/intern/cycles/util/util_transform.h +++ b/intern/cycles/util/util_transform.h @@ -97,17 +97,6 @@ __device_inline float3 transform_direction_transposed(const Transform *t, const return make_float3(dot(x, a), dot(y, a), dot(z, a)); } -#ifndef __KERNEL_GPU__ - -__device_inline void print_transform(const char *label, const Transform& t) -{ - print_float4(label, t.x); - print_float4(label, t.y); - print_float4(label, t.z); - print_float4(label, t.w); - printf("\n"); -} - __device_inline Transform transform_transpose(const Transform a) { Transform t; @@ -148,6 +137,17 @@ __device_inline Transform make_transform(float a, float b, float c, float d, return t; } +#ifndef __KERNEL_GPU__ + +__device_inline void print_transform(const char *label, const Transform& t) +{ + print_float4(label, t.x); + print_float4(label, t.y); + print_float4(label, t.z); + print_float4(label, t.w); + printf("\n"); +} + __device_inline Transform transform_translate(float3 t) { return make_transform( -- cgit v1.2.3