diff options
author | Martijn Berger <mberger@denc.com> | 2014-09-24 15:34:28 +0400 |
---|---|---|
committer | Martijn Berger <mberger@denc.com> | 2014-09-24 15:34:28 +0400 |
commit | 25ec0d97f988154583295335c22a9ccd7894fe65 (patch) | |
tree | cab4dd66d4467e46a753d5d179c4a5990e0b96ca | |
parent | cbffc7499ef89cac19c07ee2116b8e1e5d38afe5 (diff) |
make "tri_shader" an int instead of a float
tri_shader does no longer need to a float.
Reviewers: dingto, sergey
Reviewed By: dingto, sergey
Subscribers: dingto
Projects: #cycles
Differential Revision: https://developer.blender.org/D789
-rw-r--r-- | intern/cycles/kernel/geom/geom_bvh_shadow.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/geom/geom_motion_triangle.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/geom/geom_triangle.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 6 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_textures.h | 2 | ||||
-rw-r--r-- | intern/cycles/render/mesh.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/render/mesh.h | 2 | ||||
-rw-r--r-- | intern/cycles/render/scene.h | 2 |
8 files changed, 13 insertions, 13 deletions
diff --git a/intern/cycles/kernel/geom/geom_bvh_shadow.h b/intern/cycles/kernel/geom/geom_bvh_shadow.h index 1f6e4942fab..aee4097d77e 100644 --- a/intern/cycles/kernel/geom/geom_bvh_shadow.h +++ b/intern/cycles/kernel/geom/geom_bvh_shadow.h @@ -252,7 +252,7 @@ ccl_device bool BVH_FUNCTION_NAME if(kernel_tex_fetch(__prim_type, isect_array->prim) & PRIMITIVE_ALL_TRIANGLE) #endif { - shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); + shader = kernel_tex_fetch(__tri_shader, prim); } #ifdef __HAIR__ else { diff --git a/intern/cycles/kernel/geom/geom_motion_triangle.h b/intern/cycles/kernel/geom/geom_motion_triangle.h index 7409aa0d014..b275b89a8a4 100644 --- a/intern/cycles/kernel/geom/geom_motion_triangle.h +++ b/intern/cycles/kernel/geom/geom_motion_triangle.h @@ -233,7 +233,7 @@ ccl_device_inline float3 motion_triangle_refine_subsurface(KernelGlobals *kg, Sh ccl_device_noinline void motion_triangle_shader_setup(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray, bool subsurface) { /* get shader */ - sd->shader = __float_as_int(kernel_tex_fetch(__tri_shader, sd->prim)); + sd->shader = kernel_tex_fetch(__tri_shader, sd->prim); /* get motion info */ int numsteps, numverts; diff --git a/intern/cycles/kernel/geom/geom_triangle.h b/intern/cycles/kernel/geom/geom_triangle.h index 41e9d183a96..3d3a5e72485 100644 --- a/intern/cycles/kernel/geom/geom_triangle.h +++ b/intern/cycles/kernel/geom/geom_triangle.h @@ -157,7 +157,7 @@ ccl_device_inline void triangle_point_normal(KernelGlobals *kg, int object, int *Ng = normalize(cross(v1 - v0, v2 - v0)); /* shader`*/ - *shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); + *shader = kernel_tex_fetch(__tri_shader, prim); } /* Triangle vertex locations */ diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index e7c16c1db6e..db08c328d7e 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -87,7 +87,7 @@ ccl_device void shader_setup_from_ray(KernelGlobals *kg, ShaderData *sd, if(sd->type & PRIMITIVE_TRIANGLE) { /* static triangle */ float3 Ng = triangle_normal(kg, sd); - sd->shader = __float_as_int(kernel_tex_fetch(__tri_shader, sd->prim)); + sd->shader = kernel_tex_fetch(__tri_shader, sd->prim); /* vectors */ sd->P = triangle_refine(kg, sd, isect, ray); @@ -166,7 +166,7 @@ ccl_device_inline void shader_setup_from_subsurface(KernelGlobals *kg, ShaderDat /* fetch triangle data */ if(sd->type == PRIMITIVE_TRIANGLE) { float3 Ng = triangle_normal(kg, sd); - sd->shader = __float_as_int(kernel_tex_fetch(__tri_shader, sd->prim)); + sd->shader = kernel_tex_fetch(__tri_shader, sd->prim); /* static triangle */ sd->P = triangle_refine_subsurface(kg, sd, isect, ray); @@ -1026,7 +1026,7 @@ ccl_device bool shader_transparent_shadow(KernelGlobals *kg, Intersection *isect #ifdef __HAIR__ if(kernel_tex_fetch(__prim_type, isect->prim) & PRIMITIVE_ALL_TRIANGLE) { #endif - shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); + shader = kernel_tex_fetch(__tri_shader, prim); #ifdef __HAIR__ } else { diff --git a/intern/cycles/kernel/kernel_textures.h b/intern/cycles/kernel/kernel_textures.h index f60ed8ccd07..ef46b2f707f 100644 --- a/intern/cycles/kernel/kernel_textures.h +++ b/intern/cycles/kernel/kernel_textures.h @@ -36,7 +36,7 @@ KERNEL_TEX(float4, texture_float4, __objects) KERNEL_TEX(float4, texture_float4, __objects_vector) /* triangles */ -KERNEL_TEX(float, texture_float, __tri_shader) +KERNEL_TEX(uint, texture_uint, __tri_shader) KERNEL_TEX(float4, texture_float4, __tri_vnormal) KERNEL_TEX(float4, texture_float4, __tri_vindex) KERNEL_TEX(float4, texture_float4, __tri_verts) diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp index 8299cd02fef..5602609c030 100644 --- a/intern/cycles/render/mesh.cpp +++ b/intern/cycles/render/mesh.cpp @@ -378,12 +378,12 @@ void Mesh::add_vertex_normals() } } -void Mesh::pack_normals(Scene *scene, float *tri_shader, float4 *vnormal) +void Mesh::pack_normals(Scene *scene, uint *tri_shader, float4 *vnormal) { Attribute *attr_vN = attributes.find(ATTR_STD_VERTEX_NORMAL); float3 *vN = attr_vN->data_float3(); - int shader_id = 0; + uint shader_id = 0; uint last_shader = -1; bool last_smooth = false; @@ -401,7 +401,7 @@ void Mesh::pack_normals(Scene *scene, float *tri_shader, float4 *vnormal) shader_id = scene->shader_manager->get_shader_id(last_shader, this, last_smooth); } - tri_shader[i] = __int_as_float(shader_id); + tri_shader[i] = shader_id; } size_t verts_size = verts.size(); @@ -936,7 +936,7 @@ void MeshManager::device_update_mesh(Device *device, DeviceScene *dscene, Scene /* normals */ progress.set_status("Updating Mesh", "Computing normals"); - float *tri_shader = dscene->tri_shader.resize(tri_size); + uint *tri_shader = dscene->tri_shader.resize(tri_size); float4 *vnormal = dscene->tri_vnormal.resize(vert_size); float4 *tri_verts = dscene->tri_verts.resize(vert_size); float4 *tri_vindex = dscene->tri_vindex.resize(tri_size); diff --git a/intern/cycles/render/mesh.h b/intern/cycles/render/mesh.h index d45905611fa..28cee5745ea 100644 --- a/intern/cycles/render/mesh.h +++ b/intern/cycles/render/mesh.h @@ -123,7 +123,7 @@ public: void add_face_normals(); void add_vertex_normals(); - void pack_normals(Scene *scene, float *shader, float4 *vnormal); + void pack_normals(Scene *scene, uint *shader, float4 *vnormal); void pack_verts(float4 *tri_verts, float4 *tri_vindex, size_t vert_offset); void pack_curves(Scene *scene, float4 *curve_key_co, float4 *curve_data, size_t curvekey_offset); void compute_bvh(SceneParams *params, Progress *progress, int n, int total); diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h index e5c7444c92d..5d205225d97 100644 --- a/intern/cycles/render/scene.h +++ b/intern/cycles/render/scene.h @@ -69,7 +69,7 @@ public: device_vector<uint> prim_object; /* mesh */ - device_vector<float> tri_shader; + device_vector<uint> tri_shader; device_vector<float4> tri_vnormal; device_vector<float4> tri_vindex; device_vector<float4> tri_verts; |