|
|
@@ -489,7 +489,7 @@ void BillboardSet::UpdateBufferSize()
|
|
|
{
|
|
|
if (faceCameraMode_ == FC_DIRECTION)
|
|
|
{
|
|
|
- vertexBuffer_->SetSize(numBillboards * 4, MASK_POSITION | MASK_NORMAL | MASK_COLOR | MASK_TEXCOORD1 | MASK_TEXCOORD2 | MASK_TANGENT, true);
|
|
|
+ vertexBuffer_->SetSize(numBillboards * 4, MASK_POSITION | MASK_NORMAL | MASK_COLOR | MASK_TEXCOORD1 | MASK_TEXCOORD2, true);
|
|
|
geometry_->SetVertexBuffer(0, vertexBuffer_);
|
|
|
|
|
|
}
|
|
|
@@ -653,8 +653,6 @@ void BillboardSet::UpdateVertexBuffer(const FrameInfo& frame)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- Vector3 cameraWorldPosition = frame.camera_->GetNode()->GetWorldPosition();
|
|
|
-
|
|
|
for (unsigned i = 0; i < enabledBillboards; ++i)
|
|
|
{
|
|
|
Billboard& billboard = *sortedBillboards_[i];
|
|
|
@@ -680,60 +678,44 @@ void BillboardSet::UpdateVertexBuffer(const FrameInfo& frame)
|
|
|
dest[8] = billboard.uv_.min_.y_;
|
|
|
dest[9] = -size.x_ * rot2D[0][0] + size.y_ * rot2D[0][1];
|
|
|
dest[10] = -size.x_ * rot2D[1][0] + size.y_ * rot2D[1][1];
|
|
|
- dest[11] = cameraWorldPosition.x_;
|
|
|
- dest[12] = cameraWorldPosition.y_;
|
|
|
- dest[13] = cameraWorldPosition.z_;
|
|
|
- dest[14] = 1.0f;
|
|
|
-
|
|
|
- dest[15] = billboard.position_.x_;
|
|
|
- dest[16] = billboard.position_.y_;
|
|
|
- dest[17] = billboard.position_.z_;
|
|
|
- dest[18] = billboard.direction_.x_;
|
|
|
- dest[19] = billboard.direction_.y_;
|
|
|
- dest[20] = billboard.direction_.z_;
|
|
|
- ((unsigned&)dest[21]) = color;
|
|
|
- dest[22] = billboard.uv_.max_.x_;
|
|
|
- dest[23] = billboard.uv_.min_.y_;
|
|
|
- dest[24] = size.x_ * rot2D[0][0] + size.y_ * rot2D[0][1];
|
|
|
- dest[25] = size.x_ * rot2D[1][0] + size.y_ * rot2D[1][1];
|
|
|
- dest[26] = cameraWorldPosition.x_;
|
|
|
- dest[27] = cameraWorldPosition.y_;
|
|
|
- dest[28] = cameraWorldPosition.z_;
|
|
|
- dest[29] = 1.0f;
|
|
|
-
|
|
|
- dest[30] = billboard.position_.x_;
|
|
|
- dest[31] = billboard.position_.y_;
|
|
|
- dest[32] = billboard.position_.z_;
|
|
|
- dest[33] = billboard.direction_.x_;
|
|
|
- dest[34] = billboard.direction_.y_;
|
|
|
- dest[35] = billboard.direction_.z_;
|
|
|
- ((unsigned&)dest[36]) = color;
|
|
|
- dest[37] = billboard.uv_.max_.x_;
|
|
|
- dest[38] = billboard.uv_.max_.y_;
|
|
|
- dest[39] = size.x_ * rot2D[0][0] - size.y_ * rot2D[0][1];
|
|
|
- dest[40] = size.x_ * rot2D[1][0] - size.y_ * rot2D[1][1];
|
|
|
- dest[41] = cameraWorldPosition.x_;
|
|
|
- dest[42] = cameraWorldPosition.y_;
|
|
|
- dest[43] = cameraWorldPosition.z_;
|
|
|
- dest[44] = 1.0f;
|
|
|
-
|
|
|
- dest[45] = billboard.position_.x_;
|
|
|
- dest[46] = billboard.position_.y_;
|
|
|
- dest[47] = billboard.position_.z_;
|
|
|
- dest[48] = billboard.direction_.x_;
|
|
|
- dest[49] = billboard.direction_.y_;
|
|
|
- dest[50] = billboard.direction_.z_;
|
|
|
- ((unsigned&)dest[51]) = color;
|
|
|
- dest[52] = billboard.uv_.min_.x_;
|
|
|
- dest[53] = billboard.uv_.max_.y_;
|
|
|
- dest[54] = -size.x_ * rot2D[0][0] - size.y_ * rot2D[0][1];
|
|
|
- dest[55] = -size.x_ * rot2D[1][0] - size.y_ * rot2D[1][1];
|
|
|
- dest[56] = cameraWorldPosition.x_;
|
|
|
- dest[57] = cameraWorldPosition.y_;
|
|
|
- dest[58] = cameraWorldPosition.z_;
|
|
|
- dest[59] = 1.0f;
|
|
|
-
|
|
|
- dest += 60;
|
|
|
+
|
|
|
+ dest[11] = billboard.position_.x_;
|
|
|
+ dest[12] = billboard.position_.y_;
|
|
|
+ dest[13] = billboard.position_.z_;
|
|
|
+ dest[14] = billboard.direction_.x_;
|
|
|
+ dest[15] = billboard.direction_.y_;
|
|
|
+ dest[16] = billboard.direction_.z_;
|
|
|
+ ((unsigned&)dest[17]) = color;
|
|
|
+ dest[18] = billboard.uv_.max_.x_;
|
|
|
+ dest[19] = billboard.uv_.min_.y_;
|
|
|
+ dest[20] = size.x_ * rot2D[0][0] + size.y_ * rot2D[0][1];
|
|
|
+ dest[21] = size.x_ * rot2D[1][0] + size.y_ * rot2D[1][1];
|
|
|
+
|
|
|
+ dest[22] = billboard.position_.x_;
|
|
|
+ dest[23] = billboard.position_.y_;
|
|
|
+ dest[24] = billboard.position_.z_;
|
|
|
+ dest[25] = billboard.direction_.x_;
|
|
|
+ dest[26] = billboard.direction_.y_;
|
|
|
+ dest[27] = billboard.direction_.z_;
|
|
|
+ ((unsigned&)dest[28]) = color;
|
|
|
+ dest[29] = billboard.uv_.max_.x_;
|
|
|
+ dest[30] = billboard.uv_.max_.y_;
|
|
|
+ dest[31] = size.x_ * rot2D[0][0] - size.y_ * rot2D[0][1];
|
|
|
+ dest[32] = size.x_ * rot2D[1][0] - size.y_ * rot2D[1][1];
|
|
|
+
|
|
|
+ dest[33] = billboard.position_.x_;
|
|
|
+ dest[34] = billboard.position_.y_;
|
|
|
+ dest[35] = billboard.position_.z_;
|
|
|
+ dest[36] = billboard.direction_.x_;
|
|
|
+ dest[37] = billboard.direction_.y_;
|
|
|
+ dest[38] = billboard.direction_.z_;
|
|
|
+ ((unsigned&)dest[39]) = color;
|
|
|
+ dest[40] = billboard.uv_.min_.x_;
|
|
|
+ dest[41] = billboard.uv_.max_.y_;
|
|
|
+ dest[42] = -size.x_ * rot2D[0][0] - size.y_ * rot2D[0][1];
|
|
|
+ dest[43] = -size.x_ * rot2D[1][0] - size.y_ * rot2D[1][1];
|
|
|
+
|
|
|
+ dest += 44;
|
|
|
}
|
|
|
}
|
|
|
|