Changeset 503 for trunk/src/gfx/mesh_creator.cc
- Timestamp:
- 06/28/16 21:09:19 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/mesh_creator.cc
r491 r503 88 88 89 89 90 void nv::mesh_data_creator::transform( float scale, const mat3& r33)91 { 92 vec3 vertex_offset = vec3();93 mat3 vertex_transform 94 mat3 normal_transform 90 void nv::mesh_data_creator::transform( const vec3& pos, const mat3& r33, float scale /*= 1.0f */ ) 91 { 92 vec3 vertex_offset = pos; 93 mat3 vertex_transform = scale * r33; 94 mat3 normal_transform = r33; 95 95 96 96 for ( uint32 c = 0; c < m_data->size(); ++c ) 97 97 { 98 98 raw_data_channel_access channel( m_data, c ); 99 const data_descriptor& desc 99 const data_descriptor& desc = channel.descriptor(); 100 100 uint8* raw_data = channel.raw_data(); 101 101 uint32 vtx_size = desc.element_size(); … … 103 103 int n_offset = -1; 104 104 int t_offset = -1; 105 for ( const auto& cslot : desc 105 for ( const auto& cslot : desc ) 106 106 switch ( cslot.vslot ) 107 107 { 108 case slot::POSITION: if ( cslot.etype == FLOAT_VECTOR_3 ) p_offset = int( cslot.offset ); break;109 case slot::NORMAL: if ( cslot.etype == FLOAT_VECTOR_3 ) n_offset = int( cslot.offset ); break;110 case slot::TANGENT: if ( cslot.etype == FLOAT_VECTOR_4 ) t_offset = int( cslot.offset ); break;111 default: break;108 case slot::POSITION: if ( cslot.etype == FLOAT_VECTOR_3 ) p_offset = int( cslot.offset ); break; 109 case slot::NORMAL: if ( cslot.etype == FLOAT_VECTOR_3 ) n_offset = int( cslot.offset ); break; 110 case slot::TANGENT: if ( cslot.etype == FLOAT_VECTOR_4 ) t_offset = int( cslot.offset ); break; 111 default: break; 112 112 } 113 113 114 114 if ( p_offset != -1 ) 115 for ( uint32 i = 0; i < channel.size(); i++ )115 for ( uint32 i = 0; i < channel.size(); i++ ) 116 116 { 117 117 vec3& p = *reinterpret_cast<vec3*>( raw_data + vtx_size*i + p_offset ); … … 120 120 121 121 if ( n_offset != -1 ) 122 for ( uint32 i = 0; i < channel.size(); i++ )122 for ( uint32 i = 0; i < channel.size(); i++ ) 123 123 { 124 124 vec3& n = *reinterpret_cast<vec3*>( raw_data + vtx_size*i + n_offset ); … … 126 126 } 127 127 if ( t_offset != -1 ) 128 for ( uint32 i = 0; i < channel.size(); i++) 129 { 130 vec4& t = *reinterpret_cast<vec4*>(raw_data + vtx_size*i + t_offset ); 131 t = vec4( math::normalize( normal_transform * vec3(t) ), t[3] ); 132 } 133 } 134 } 128 for ( uint32 i = 0; i < channel.size(); i++ ) 129 { 130 vec4& t = *reinterpret_cast<vec4*>( raw_data + vtx_size*i + t_offset ); 131 t = vec4( math::normalize( normal_transform * vec3( t ) ), t[3] ); 132 } 133 } 134 } 135 135 136 136 137 struct vertex_g
Note: See TracChangeset
for help on using the changeset viewer.