diff options
author | Mike Erwin <significant.bit@gmail.com> | 2017-03-02 11:16:02 +0300 |
---|---|---|
committer | Mike Erwin <significant.bit@gmail.com> | 2017-03-02 11:16:02 +0300 |
commit | 869f2940c2bd17f46695f9213fedd78e6b7c5ac2 (patch) | |
tree | 32c8891a1bea51adf49500f74ed4acfc984aab22 /source | |
parent | b463cd2ab8f1a48200e6b348002ac88d3a8507ca (diff) |
Gawain: allow use of final 2 bits of 10_10_10_2 format
Requested by @fclem
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/gpu/gawain/vertex_format.c | 6 | ||||
-rw-r--r-- | source/blender/gpu/gawain/vertex_format.h | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/gpu/gawain/vertex_format.c b/source/blender/gpu/gawain/vertex_format.c index 671b979a810..d42398f3a4f 100644 --- a/source/blender/gpu/gawain/vertex_format.c +++ b/source/blender/gpu/gawain/vertex_format.c @@ -120,8 +120,10 @@ unsigned add_attrib(VertexFormat* format, const char* name, VertexCompType comp_ break; #if USE_10_10_10 case COMP_I10: - assert(comp_ct == 3); // 10_10_10 format intended for normals (xyz) or colors (rgb) - assert(fetch_mode == NORMALIZE_INT_TO_FLOAT); + // 10_10_10 format intended for normals (xyz) or colors (rgb) + // extra component packed.w can be manually set to { -2, -1, 0, 1 } + assert(comp_ct == 3 || comp_ct == 4); + assert(fetch_mode == NORMALIZE_INT_TO_FLOAT); // not strictly required, may relax later break; #endif default: diff --git a/source/blender/gpu/gawain/vertex_format.h b/source/blender/gpu/gawain/vertex_format.h index 66477b0cfc7..4ed9e58f376 100644 --- a/source/blender/gpu/gawain/vertex_format.h +++ b/source/blender/gpu/gawain/vertex_format.h @@ -74,7 +74,7 @@ typedef struct { int x : 10; int y : 10; int z : 10; - int w : 2; // ignored for our purposes + int w : 2; // 0 by default, can manually set to { -2, -1, 0, 1 } } PackedNormal; PackedNormal convert_i10_v3(const float data[3]); |