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
This commit is contained in:
Martijn Berger 2014-09-24 13:34:28 +02:00
parent cbffc7499e
commit 25ec0d97f9
8 changed files with 13 additions and 13 deletions

@ -252,7 +252,7 @@ ccl_device bool BVH_FUNCTION_NAME
if(kernel_tex_fetch(__prim_type, isect_array->prim) & PRIMITIVE_ALL_TRIANGLE) if(kernel_tex_fetch(__prim_type, isect_array->prim) & PRIMITIVE_ALL_TRIANGLE)
#endif #endif
{ {
shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); shader = kernel_tex_fetch(__tri_shader, prim);
} }
#ifdef __HAIR__ #ifdef __HAIR__
else { else {

@ -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) ccl_device_noinline void motion_triangle_shader_setup(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray, bool subsurface)
{ {
/* get shader */ /* 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 */ /* get motion info */
int numsteps, numverts; int numsteps, numverts;

@ -157,7 +157,7 @@ ccl_device_inline void triangle_point_normal(KernelGlobals *kg, int object, int
*Ng = normalize(cross(v1 - v0, v2 - v0)); *Ng = normalize(cross(v1 - v0, v2 - v0));
/* shader`*/ /* shader`*/
*shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); *shader = kernel_tex_fetch(__tri_shader, prim);
} }
/* Triangle vertex locations */ /* Triangle vertex locations */

@ -87,7 +87,7 @@ ccl_device void shader_setup_from_ray(KernelGlobals *kg, ShaderData *sd,
if(sd->type & PRIMITIVE_TRIANGLE) { if(sd->type & PRIMITIVE_TRIANGLE) {
/* static triangle */ /* static triangle */
float3 Ng = triangle_normal(kg, sd); 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 */ /* vectors */
sd->P = triangle_refine(kg, sd, isect, ray); 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 */ /* fetch triangle data */
if(sd->type == PRIMITIVE_TRIANGLE) { if(sd->type == PRIMITIVE_TRIANGLE) {
float3 Ng = triangle_normal(kg, sd); 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 */ /* static triangle */
sd->P = triangle_refine_subsurface(kg, sd, isect, ray); 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__ #ifdef __HAIR__
if(kernel_tex_fetch(__prim_type, isect->prim) & PRIMITIVE_ALL_TRIANGLE) { if(kernel_tex_fetch(__prim_type, isect->prim) & PRIMITIVE_ALL_TRIANGLE) {
#endif #endif
shader = __float_as_int(kernel_tex_fetch(__tri_shader, prim)); shader = kernel_tex_fetch(__tri_shader, prim);
#ifdef __HAIR__ #ifdef __HAIR__
} }
else { else {

@ -36,7 +36,7 @@ KERNEL_TEX(float4, texture_float4, __objects)
KERNEL_TEX(float4, texture_float4, __objects_vector) KERNEL_TEX(float4, texture_float4, __objects_vector)
/* triangles */ /* 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_vnormal)
KERNEL_TEX(float4, texture_float4, __tri_vindex) KERNEL_TEX(float4, texture_float4, __tri_vindex)
KERNEL_TEX(float4, texture_float4, __tri_verts) KERNEL_TEX(float4, texture_float4, __tri_verts)

@ -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); Attribute *attr_vN = attributes.find(ATTR_STD_VERTEX_NORMAL);
float3 *vN = attr_vN->data_float3(); float3 *vN = attr_vN->data_float3();
int shader_id = 0; uint shader_id = 0;
uint last_shader = -1; uint last_shader = -1;
bool last_smooth = false; 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); 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(); size_t verts_size = verts.size();
@ -936,7 +936,7 @@ void MeshManager::device_update_mesh(Device *device, DeviceScene *dscene, Scene
/* normals */ /* normals */
progress.set_status("Updating Mesh", "Computing 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 *vnormal = dscene->tri_vnormal.resize(vert_size);
float4 *tri_verts = dscene->tri_verts.resize(vert_size); float4 *tri_verts = dscene->tri_verts.resize(vert_size);
float4 *tri_vindex = dscene->tri_vindex.resize(tri_size); float4 *tri_vindex = dscene->tri_vindex.resize(tri_size);

@ -123,7 +123,7 @@ public:
void add_face_normals(); void add_face_normals();
void add_vertex_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_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 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); void compute_bvh(SceneParams *params, Progress *progress, int n, int total);

@ -69,7 +69,7 @@ public:
device_vector<uint> prim_object; device_vector<uint> prim_object;
/* mesh */ /* mesh */
device_vector<float> tri_shader; device_vector<uint> tri_shader;
device_vector<float4> tri_vnormal; device_vector<float4> tri_vnormal;
device_vector<float4> tri_vindex; device_vector<float4> tri_vindex;
device_vector<float4> tri_verts; device_vector<float4> tri_verts;