Compare commits
	
		
			2 Commits
		
	
	
		
			81d52086fe
			...
			39c449a763
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 39c449a763 | |||
| a02d8e4d7d | 
| @ -71,6 +71,20 @@ struct alignas(4) rk_output_row { | |||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | template<typename _output, unsigned _cols, bool _signed, bool _normalized> | ||||||
|  | struct alignas(4) rk_output_row<_output, _output, _cols, _signed, _normalized> { | ||||||
|  |     rk_output<_output, _output, _signed, _normalized> output_col[_cols]; | ||||||
|  |  | ||||||
|  |     [[RK_FAST]] | ||||||
|  |     inline void convert( | ||||||
|  |         rk_input_row<_output, _cols> const & __restrict src) { | ||||||
|  |         static_assert(sizeof(output_col) == sizeof(src.input_col)); | ||||||
|  |         rk_output<_output, _output, _signed, _normalized> const * const input_col = | ||||||
|  |             reinterpret_cast<rk_output<_output, _output, _signed, _normalized> const *>(src.input_col); | ||||||
|  |         *output_col = *input_col; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  |  | ||||||
| template<typename _input, unsigned _cols, bool _signed, bool _normalized> | template<typename _input, unsigned _cols, bool _signed, bool _normalized> | ||||||
| struct alignas(4) rk_output_row<rk_packed<_signed, _cols>, _input, _cols, _signed, _normalized> { | struct alignas(4) rk_output_row<rk_packed<_signed, _cols>, _input, _cols, _signed, _normalized> { | ||||||
|     rk_output<rk_packed<_signed, _cols>, _input, _signed, _normalized> output_cols; |     rk_output<rk_packed<_signed, _cols>, _input, _signed, _normalized> output_cols; | ||||||
| @ -100,6 +114,20 @@ struct alignas(4) rk_output_format { | |||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | template<typename _output, unsigned _cols, unsigned _rows, bool _signed, bool _normalized> | ||||||
|  | struct alignas(4) rk_output_format<_output, _output, _cols, _rows, _signed, _normalized> { | ||||||
|  |     rk_output_row<_output, _output, _cols, _signed, _normalized> output_row[_rows]; | ||||||
|  |  | ||||||
|  |     [[RK_FAST]] | ||||||
|  |     inline void convert( | ||||||
|  |         rk_input_format<_output, _cols, _rows> const & __restrict src) { | ||||||
|  |         static_assert(sizeof(output_row) == sizeof(src.input_row)); | ||||||
|  |         rk_output_row<_output, _output, _cols, _signed, _normalized> const * const input_row = | ||||||
|  |             reinterpret_cast<rk_output_row<_output, _output, _cols, _signed, _normalized> const *>(src.input_row); | ||||||
|  |         *output_row = *input_row; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  |  | ||||||
| template<typename _input, bool _signed, bool _normalized> | template<typename _input, bool _signed, bool _normalized> | ||||||
| struct alignas(alignof(rk_packed<_signed, 3>)) rk_output<rk_packed<_signed, 3>, _input, _signed, _normalized> { | struct alignas(alignof(rk_packed<_signed, 3>)) rk_output<rk_packed<_signed, 3>, _input, _signed, _normalized> { | ||||||
|     rk_packed<_signed, 3> output; |     rk_packed<_signed, 3> output; | ||||||
| @ -221,8 +249,8 @@ typedef rk_vertex::rk_format<rk_short, rk_float,           3, 1, true, false> rk | |||||||
| typedef rk_vertex::rk_format<rk_short,            rk_float, 3, 1, true,  true>  rk_vec3_short_norm; | typedef rk_vertex::rk_format<rk_short,            rk_float, 3, 1, true,  true>  rk_vec3_short_norm; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 1, true,  false> rk_vec3_int10; | typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 1, true,  false> rk_vec3_int10; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 1, true,  true>  rk_vec3_int10_norm; | typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 1, true,  true>  rk_vec3_int10_norm; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true, 3>, rk_float, 3, 1, true, false> rk_vec3_uint10; | typedef rk_vertex::rk_format<rk_packed<false, 3>, rk_float, 3, 1, false, false> rk_vec3_uint10; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true, 3>, rk_float, 3, 1, true, true>  rk_vec3_uint10_norm; | typedef rk_vertex::rk_format<rk_packed<false, 3>, rk_float, 3, 1, false, true>  rk_vec3_uint10_norm; | ||||||
| typedef rk_vertex::rk_format<rk_float,            rk_float, 3, 3, true,  false> rk_mat3_float; | typedef rk_vertex::rk_format<rk_float,            rk_float, 3, 3, true,  false> rk_mat3_float; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 3, true,  false> rk_mat3_int10; | typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 3, true,  false> rk_mat3_int10; | ||||||
| typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 3, true,  true>  rk_mat3_int10_norm; | typedef rk_vertex::rk_format<rk_packed<true,  3>, rk_float, 3, 3, true,  true>  rk_mat3_int10_norm; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user