Commit: 77d0aec3d1fb2c5b8b18db9aea964d0e65b6c0ce
Author: Clément Foucault
Date:   Mon May 15 17:55:02 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB77d0aec3d1fb2c5b8b18db9aea964d0e65b6c0ce

Mesh Batch Cache: Use compressed format.

We don't compress UV by default because that would mean restricting them to [0, 
1]
Leaving all other code for later settings switch.

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

M       source/blender/draw/intern/draw_cache_impl_mesh.c

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

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c 
b/source/blender/draw/intern/draw_cache_impl_mesh.c
index cf8f11f6ed2..4b0c7527727 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1630,7 +1630,7 @@ static void add_overlay_loose_vert(
        if (vbo_nor) {
                short *nor = mesh_render_data_vert_nor(rdata, v);
 #if USE_10_10_10
-               PackedNormal vnor = convert_i10_s3(edge_nor);
+               PackedNormal vnor = convert_i10_s3(nor);
                VertexBuffer_set_attrib(vbo_nor, vnor_id, base_vert_idx, &vnor);
 #else
                VertexBuffer_set_attrib(vbo_nor, vnor_id, base_vert_idx, nor);
@@ -1898,7 +1898,7 @@ void DRW_mesh_batch_cache_free(Mesh *me)
 
 /* Batch cache usage. */
 
-//#define USE_COMP_MESH_DATA
+#define USE_COMP_MESH_DATA
 static VertexBuffer *mesh_batch_cache_get_tri_shading_data(MeshRenderData 
*rdata, MeshBatchCache *cache)
 {
        BLI_assert(rdata->types & (MR_DATATYPE_VERT | MR_DATATYPE_LOOPTRI | 
MR_DATATYPE_LOOP | MR_DATATYPE_POLY));
@@ -1923,7 +1923,7 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata
                for (int i = 0; i < rdata->uv_len; i++) {
                        /* UV */
                        attrib_name = mesh_render_data_uv_layer_uuid_get(rdata, 
i);
-#ifdef USE_COMP_MESH_DATA
+#if defined(USE_COMP_MESH_DATA) && 0 /* these are clamped. Maybe use them as 
an option in the future */
                        uv_id[i] = VertexFormat_add_attrib(format, attrib_name, 
COMP_I16, 2, NORMALIZE_INT_TO_FLOAT);
 #else
                        uv_id[i] = VertexFormat_add_attrib(format, attrib_name, 
COMP_F32, 2, KEEP_FLOAT);
@@ -1940,7 +1940,7 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata
                        /* Tangent */
                        attrib_name = 
mesh_render_data_tangent_layer_uuid_get(rdata, i);
 #ifdef USE_COMP_MESH_DATA
-#  if USE_10_10_10
+#  if USE_10_10_10 && 0 /* Tangents need more precision than this */
                        tangent_id[i] = VertexFormat_add_attrib(format, 
attrib_name, COMP_I10, 3, NORMALIZE_INT_TO_FLOAT);
 #  else
                        tangent_id[i] = VertexFormat_add_attrib(format, 
attrib_name, COMP_I16, 3, NORMALIZE_INT_TO_FLOAT);
@@ -1989,7 +1989,7 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata
                                for (int j = 0; j < rdata->uv_len; j++) {
                                        /* UVs */
                                        mesh_render_data_looptri_uvs_get(rdata, 
i, j, &tri_uvs);
-#ifdef USE_COMP_MESH_DATA
+#if defined(USE_COMP_MESH_DATA) && 0 /* these are clamped. Maybe use them as 
an option in the future */
                                        short s_uvs[3][2];
                                        normal_float_to_short_v2(s_uvs[0], 
tri_uvs[0]);
                                        normal_float_to_short_v2(s_uvs[1], 
tri_uvs[1]);
@@ -2004,12 +2004,13 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata
                                        /* Tangent */
                                        
mesh_render_data_looptri_tans_get(rdata, i, j, &tri_tans);
 #ifdef USE_COMP_MESH_DATA
-#  if USE_10_10_10
-                                       PackedNormal s_tan[3] = {
+#  if USE_10_10_10 && 0 /* Tangents need more precision than this */
+                                       PackedNormal s_tan_pack[3] = {
                                            convert_i10_v3(tri_tans[0]),
                                            convert_i10_v3(tri_tans[1]),
                                            convert_i10_v3(tri_tans[2])
                                        };
+                                       PackedNormal *s_tan[3] = { 
&s_tan_pack[0], &s_tan_pack[1], &s_tan_pack[2] };
 #  else
                                        short s_tan[3][3];
                                        normal_float_to_short_v3(s_tan[0], 
tri_tans[0]);
@@ -2086,11 +2087,12 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_pos_and_normals(
                        {
                                if (is_smooth) {
 #if USE_10_10_10
-                                       PackedNormal snor[3] = {
+                                       PackedNormal snor_pack[3] = {
                                                
convert_i10_s3(tri_vert_nors[0]),
                                                
convert_i10_s3(tri_vert_nors[1]),
                                                convert_i10_s3(tri_vert_nors[2])
-                                       }
+                                       };
+                                       PackedNormal *snor[3] = { 
&snor_pack[0], &snor_pack[1], &snor_pack[2] };
 #else
                                        short **snor = tri_vert_nors;
 #endif
@@ -2100,7 +2102,8 @@ static VertexBuffer 
*mesh_batch_cache_get_tri_pos_and_normals(
                                }
                                else {
 #if USE_10_10_10
-                                       PackedNormal snor = 
convert_i10_s3(tri_nor);
+                                       PackedNormal snor_pack = 
convert_i10_s3(tri_nor);
+                                       PackedNormal *snor = &snor_pack;
 #else
                                        short *snor = tri_nor;
 #endif

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to