More decopypasting, rename inline function, remove unneeded arg

This commit is contained in:
Lwmte 2024-12-18 02:44:49 +01:00
parent 569644f1d4
commit bf6ef08c57
5 changed files with 35 additions and 35 deletions

View file

@ -220,11 +220,8 @@ namespace TEN::Renderer
} }
// If we are in mirror renderer pass, reflect light. // If we are in mirror renderer pass, reflect light.
if (_currentMirror != nullptr) ReflectVectorOptionally(lights[index].Position);
{ ReflectVectorOptionally(lights[index].Direction);
lights[index].Position = Vector3::Transform(lights[index].Position, _currentMirror->ReflectionMatrix);
lights[index].Direction = Vector3::Transform(lights[index].Direction, _currentMirror->ReflectionMatrix);
}
// Bitmask light type to filter it in the shader later. // Bitmask light type to filter it in the shader later.
return (1 << (31 - (int)light.Type)); return (1 << (31 - (int)light.Type));

View file

@ -566,7 +566,7 @@ namespace TEN::Renderer
const Vector4& color0, const Vector4& color1, const Vector4& color2, const Vector4& color3, const Vector4& color0, const Vector4& color1, const Vector4& color2, const Vector4& color3,
BlendMode blendMode, RenderView& view, SpriteRenderType renderType = SpriteRenderType::Default); BlendMode blendMode, RenderView& view, SpriteRenderType renderType = SpriteRenderType::Default);
Matrix GetWorldMatrixForSprite(RendererSpriteToDraw* spr, RendererMirror* mirror, RenderView& view); Matrix GetWorldMatrixForSprite(RendererSpriteToDraw* spr, RenderView& view);
RendererObject& GetRendererObject(GAME_OBJECT_ID id); RendererObject& GetRendererObject(GAME_OBJECT_ID id);
RendererMesh* GetMesh(int meshIndex); RendererMesh* GetMesh(int meshIndex);
Texture2D CreateDefaultNormalTexture(); Texture2D CreateDefaultNormalTexture();
@ -588,11 +588,19 @@ namespace TEN::Renderer
return false; return false;
} }
inline bool IgnoreMirrorPassForRoom(int room) inline bool IgnoreReflectionPassForRoom(int room)
{ {
return (_currentMirror != nullptr && room != _currentMirror->RealRoom); return (_currentMirror != nullptr && room != _currentMirror->RealRoom);
} }
inline void ReflectVectorOptionally(Vector3& vector)
{
if (_currentMirror == nullptr)
return;
vector = Vector3::Transform(vector, _currentMirror->ReflectionMatrix);
}
inline void ReflectMatrixOptionally(Matrix& matrix) inline void ReflectMatrixOptionally(Matrix& matrix)
{ {
if (_currentMirror == nullptr) if (_currentMirror == nullptr)

View file

@ -253,7 +253,7 @@ namespace TEN::Renderer
if (gunshell->counter <= 0) if (gunshell->counter <= 0)
continue; continue;
if (IgnoreMirrorPassForRoom(gunshell->roomNumber)) if (IgnoreReflectionPassForRoom(gunshell->roomNumber))
continue; continue;
objectID = gunshell->objectNumber; objectID = gunshell->objectNumber;
@ -477,7 +477,7 @@ namespace TEN::Renderer
{ {
auto* rat = &Rats[i]; auto* rat = &Rats[i];
if (IgnoreMirrorPassForRoom(rat->RoomNumber)) if (IgnoreReflectionPassForRoom(rat->RoomNumber))
continue; continue;
if (rat->On) if (rat->On)
@ -520,7 +520,7 @@ namespace TEN::Renderer
{ {
auto* rat = &Rats[i]; auto* rat = &Rats[i];
if (IgnoreMirrorPassForRoom(rat->RoomNumber)) if (IgnoreReflectionPassForRoom(rat->RoomNumber))
continue; continue;
if (rat->On) if (rat->On)
@ -733,7 +733,7 @@ namespace TEN::Renderer
if (!bat.On) if (!bat.On)
continue; continue;
if (IgnoreMirrorPassForRoom(bat.RoomNumber)) if (IgnoreReflectionPassForRoom(bat.RoomNumber))
continue; continue;
for (auto& bucket : mesh.Buckets) for (auto& bucket : mesh.Buckets)
@ -769,7 +769,7 @@ namespace TEN::Renderer
{ {
const auto& bat = Bats[i]; const auto& bat = Bats[i];
if (IgnoreMirrorPassForRoom(bat.RoomNumber)) if (IgnoreReflectionPassForRoom(bat.RoomNumber))
continue; continue;
if (bat.On) if (bat.On)
@ -854,7 +854,7 @@ namespace TEN::Renderer
if (!beetle.On) if (!beetle.On)
continue; continue;
if (IgnoreMirrorPassForRoom(beetle.RoomNumber)) if (IgnoreReflectionPassForRoom(beetle.RoomNumber))
continue; continue;
auto transformMatrix = Matrix::Lerp(beetle.PrevTransform, beetle.Transform, GetInterpolationFactor()); auto transformMatrix = Matrix::Lerp(beetle.PrevTransform, beetle.Transform, GetInterpolationFactor());
@ -894,7 +894,7 @@ namespace TEN::Renderer
if (!beetle.On) if (!beetle.On)
continue; continue;
if (IgnoreMirrorPassForRoom(beetle.RoomNumber)) if (IgnoreReflectionPassForRoom(beetle.RoomNumber))
continue; continue;
auto& room = _rooms[beetle.RoomNumber]; auto& room = _rooms[beetle.RoomNumber];
@ -983,7 +983,7 @@ namespace TEN::Renderer
if (!locust.on) if (!locust.on)
continue; continue;
if (IgnoreMirrorPassForRoom(locust.roomNumber)) if (IgnoreReflectionPassForRoom(locust.roomNumber))
continue; continue;
auto& mesh = *GetMesh(Objects[ID_LOCUSTS].meshIndex + (-locust.counter & 3)); auto& mesh = *GetMesh(Objects[ID_LOCUSTS].meshIndex + (-locust.counter & 3));
@ -1022,7 +1022,7 @@ namespace TEN::Renderer
if (!locust.on) if (!locust.on)
continue; continue;
if (IgnoreMirrorPassForRoom(locust.roomNumber)) if (IgnoreReflectionPassForRoom(locust.roomNumber))
continue; continue;
activeLocustsExist = true; activeLocustsExist = true;
@ -2314,7 +2314,7 @@ namespace TEN::Renderer
for (auto room : view.RoomsToDraw) for (auto room : view.RoomsToDraw)
{ {
if (IgnoreMirrorPassForRoom(room->RoomNumber)) if (IgnoreReflectionPassForRoom(room->RoomNumber))
continue; continue;
for (auto itemToDraw : room->ItemsToDraw) for (auto itemToDraw : room->ItemsToDraw)
@ -2565,7 +2565,7 @@ namespace TEN::Renderer
RendererStatic* current = statics[s]; RendererStatic* current = statics[s];
RendererRoom* room = &_rooms[current->RoomNumber]; RendererRoom* room = &_rooms[current->RoomNumber];
if (IgnoreMirrorPassForRoom(current->RoomNumber)) if (IgnoreReflectionPassForRoom(current->RoomNumber))
continue; continue;
Matrix world = current->World; Matrix world = current->World;
@ -2968,7 +2968,7 @@ namespace TEN::Renderer
rDrawSprite.Width = STAR_SIZE * star.Scale; rDrawSprite.Width = STAR_SIZE * star.Scale;
rDrawSprite.Height = STAR_SIZE * star.Scale; rDrawSprite.Height = STAR_SIZE * star.Scale;
_stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, nullptr, renderView); _stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, renderView);
_stInstancedSpriteBuffer.Sprites[i].Color = Vector4( _stInstancedSpriteBuffer.Sprites[i].Color = Vector4(
star.Color.x, star.Color.x,
star.Color.y, star.Color.y,
@ -3031,7 +3031,7 @@ namespace TEN::Renderer
rDrawSprite.Height = 192; rDrawSprite.Height = 192;
rDrawSprite.ConstrainAxis = meteor.Direction; rDrawSprite.ConstrainAxis = meteor.Direction;
_stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, nullptr, renderView); _stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, renderView);
_stInstancedSpriteBuffer.Sprites[i].Color = Vector4( _stInstancedSpriteBuffer.Sprites[i].Color = Vector4(
meteor.Color.x, meteor.Color.x,
meteor.Color.y, meteor.Color.y,
@ -3137,7 +3137,7 @@ namespace TEN::Renderer
rDrawSprite.Height = SUN_SIZE; rDrawSprite.Height = SUN_SIZE;
rDrawSprite.color = renderView.LensFlaresToDraw[0].Color; rDrawSprite.color = renderView.LensFlaresToDraw[0].Color;
_stInstancedSpriteBuffer.Sprites[0].World = GetWorldMatrixForSprite(&rDrawSprite, nullptr, renderView); _stInstancedSpriteBuffer.Sprites[0].World = GetWorldMatrixForSprite(&rDrawSprite, renderView);
_stInstancedSpriteBuffer.Sprites[0].Color = renderView.LensFlaresToDraw[0].Color; _stInstancedSpriteBuffer.Sprites[0].Color = renderView.LensFlaresToDraw[0].Color;
_stInstancedSpriteBuffer.Sprites[0].IsBillboard = 1; _stInstancedSpriteBuffer.Sprites[0].IsBillboard = 1;
_stInstancedSpriteBuffer.Sprites[0].IsSoftParticle = 0; _stInstancedSpriteBuffer.Sprites[0].IsSoftParticle = 0;
@ -3348,9 +3348,7 @@ namespace TEN::Renderer
_sortedPolygonsIndices.clear(); _sortedPolygonsIndices.clear();
if (_currentMirror != nullptr && object->ObjectType == RendererObjectType::Room) if (_currentMirror != nullptr && object->ObjectType == RendererObjectType::Room)
{
continue; continue;
}
if (object->ObjectType == RendererObjectType::Room) if (object->ObjectType == RendererObjectType::Room)
{ {
@ -3502,7 +3500,7 @@ namespace TEN::Renderer
uv2 = spr->Sprite->UV[2]; uv2 = spr->Sprite->UV[2];
uv3 = spr->Sprite->UV[3]; uv3 = spr->Sprite->UV[3];
Matrix world = GetWorldMatrixForSprite(currentObject->Sprite, _currentMirror, view); Matrix world = GetWorldMatrixForSprite(currentObject->Sprite, view);
Vertex v0; Vertex v0;
v0.Position = Vector3::Transform(p0t, world); v0.Position = Vector3::Transform(p0t, world);

View file

@ -1155,7 +1155,7 @@ namespace TEN::Renderer
for (auto* rRoomPtr : view.RoomsToDraw) for (auto* rRoomPtr : view.RoomsToDraw)
{ {
if (IgnoreMirrorPassForRoom(rRoomPtr->RoomNumber)) if (IgnoreReflectionPassForRoom(rRoomPtr->RoomNumber))
continue; continue;
for (auto* rItemPtr : rRoomPtr->ItemsToDraw) for (auto* rItemPtr : rRoomPtr->ItemsToDraw)
@ -1282,16 +1282,13 @@ namespace TEN::Renderer
} }
} }
Matrix Renderer::GetWorldMatrixForSprite(RendererSpriteToDraw* sprite, RendererMirror* mirror, RenderView& view) Matrix Renderer::GetWorldMatrixForSprite(RendererSpriteToDraw* sprite, RenderView& view)
{ {
auto spriteMatrix = Matrix::Identity; auto spriteMatrix = Matrix::Identity;
auto scaleMatrix = Matrix::CreateScale(sprite->Width * sprite->Scale, sprite->Height * sprite->Scale, sprite->Scale); auto scaleMatrix = Matrix::CreateScale(sprite->Width * sprite->Scale, sprite->Height * sprite->Scale, sprite->Scale);
Vector3 spritePosition = sprite->pos; Vector3 spritePosition = sprite->pos;
if (mirror != nullptr) ReflectVectorOptionally(spritePosition);
{
spritePosition = Vector3::Transform(spritePosition, mirror->ReflectionMatrix); // Vector3::Reflect(spritePosition, mirror->Plane.Normal());
}
switch (sprite->Type) switch (sprite->Type)
{ {
@ -1381,7 +1378,7 @@ namespace TEN::Renderer
for (auto* roomPtr : view.RoomsToDraw) for (auto* roomPtr : view.RoomsToDraw)
{ {
if (IgnoreMirrorPassForRoom(roomPtr->RoomNumber)) if (IgnoreReflectionPassForRoom(roomPtr->RoomNumber))
continue; continue;
for (auto* effectPtr : roomPtr->EffectsToDraw) for (auto* effectPtr : roomPtr->EffectsToDraw)
@ -1402,7 +1399,7 @@ namespace TEN::Renderer
{ {
if (deb.active) if (deb.active)
{ {
if (IgnoreMirrorPassForRoom(deb.roomNumber)) if (IgnoreReflectionPassForRoom(deb.roomNumber))
continue; continue;
activeDebrisExist = true; activeDebrisExist = true;
@ -1423,7 +1420,7 @@ namespace TEN::Renderer
{ {
if (deb.active) if (deb.active)
{ {
if (IgnoreMirrorPassForRoom(deb.roomNumber)) if (IgnoreReflectionPassForRoom(deb.roomNumber))
continue; continue;
if (!SetupBlendModeAndAlphaTest(deb.mesh.blendMode, rendererPass, 0)) if (!SetupBlendModeAndAlphaTest(deb.mesh.blendMode, rendererPass, 0))

View file

@ -296,7 +296,7 @@ namespace TEN::Renderer
{ {
auto& rDrawSprite = spriteBucket.SpritesToDraw[i]; auto& rDrawSprite = spriteBucket.SpritesToDraw[i];
_stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, _currentMirror, view); _stInstancedSpriteBuffer.Sprites[i].World = GetWorldMatrixForSprite(&rDrawSprite, view);
_stInstancedSpriteBuffer.Sprites[i].Color = rDrawSprite.color; _stInstancedSpriteBuffer.Sprites[i].Color = rDrawSprite.color;
_stInstancedSpriteBuffer.Sprites[i].IsBillboard = 1; _stInstancedSpriteBuffer.Sprites[i].IsBillboard = 1;
_stInstancedSpriteBuffer.Sprites[i].IsSoftParticle = rDrawSprite.SoftParticle ? 1 : 0; _stInstancedSpriteBuffer.Sprites[i].IsSoftParticle = rDrawSprite.SoftParticle ? 1 : 0;
@ -414,7 +414,7 @@ namespace TEN::Renderer
UINT offset = 0; UINT offset = 0;
_context->IASetVertexBuffers(0, 1, _quadVertexBuffer.Buffer.GetAddressOf(), &stride, &offset); _context->IASetVertexBuffers(0, 1, _quadVertexBuffer.Buffer.GetAddressOf(), &stride, &offset);
_stInstancedSpriteBuffer.Sprites[0].World = GetWorldMatrixForSprite(object->Sprite, nullptr, view); _stInstancedSpriteBuffer.Sprites[0].World = GetWorldMatrixForSprite(object->Sprite, view);
_stInstancedSpriteBuffer.Sprites[0].Color = object->Sprite->color; _stInstancedSpriteBuffer.Sprites[0].Color = object->Sprite->color;
_stInstancedSpriteBuffer.Sprites[0].IsBillboard = 1; _stInstancedSpriteBuffer.Sprites[0].IsBillboard = 1;
_stInstancedSpriteBuffer.Sprites[0].IsSoftParticle = object->Sprite->SoftParticle ? 1 : 0; _stInstancedSpriteBuffer.Sprites[0].IsSoftParticle = object->Sprite->SoftParticle ? 1 : 0;