mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Disable self-shadowing for now, as it's causing visual glitches
This commit is contained in:
parent
32f94c2f2a
commit
1118b2fb22
7 changed files with 19 additions and 9 deletions
|
@ -256,11 +256,13 @@ namespace TEN::Renderer
|
|||
_stInstancedStaticMeshBuffer.StaticMeshes[instanceID].NumLights = (int)lights.size() | lightTypeMask;
|
||||
}
|
||||
|
||||
void Renderer::BindMoveableLights(std::vector<RendererLight*>& lights, int roomNumber, int prevRoomNumber, float fade)
|
||||
void Renderer::BindMoveableLights(std::vector<RendererLight*>& lights, int roomNumber, int prevRoomNumber, float fade, bool shadow)
|
||||
{
|
||||
int lightTypeMask = 0;
|
||||
constexpr int SHADOWABLE_MASK = (1 << 16);
|
||||
|
||||
int lightTypeMask = 0;
|
||||
int numLights = 0;
|
||||
|
||||
for (int i = 0; i < lights.size(); i++)
|
||||
{
|
||||
float fadedCoeff = 1.0f;
|
||||
|
@ -284,7 +286,7 @@ namespace TEN::Renderer
|
|||
numLights++;
|
||||
}
|
||||
|
||||
_stItem.NumLights = numLights | lightTypeMask;
|
||||
_stItem.NumLights = numLights | lightTypeMask | (shadow ? SHADOWABLE_MASK : 0);
|
||||
}
|
||||
|
||||
void Renderer::BindConstantBufferVS(ConstantBufferRegister constantBufferType, ID3D11Buffer** buffer)
|
||||
|
|
|
@ -410,7 +410,7 @@ namespace TEN::Renderer
|
|||
void BindRoomLights(std::vector<RendererLight*>& lights);
|
||||
void BindStaticLights(std::vector<RendererLight*>& lights);
|
||||
void BindInstancedStaticLights(std::vector<RendererLight*>& lights, int instanceID);
|
||||
void BindMoveableLights(std::vector<RendererLight*>& lights, int roomNumber, int prevRoomNumber, float fade);
|
||||
void BindMoveableLights(std::vector<RendererLight*>& lights, int roomNumber, int prevRoomNumber, float fade, bool shadow);
|
||||
void BindRenderTargetAsTexture(TextureRegister registerType, RenderTarget2D* target, SamplerStateRegister samplerType);
|
||||
void BindConstantBufferVS(ConstantBufferRegister constantBufferType, ID3D11Buffer** buffer);
|
||||
void BindConstantBufferPS(ConstantBufferRegister constantBufferType, ID3D11Buffer** buffer);
|
||||
|
|
|
@ -2390,7 +2390,8 @@ namespace TEN::Renderer
|
|||
for (int k = 0; k < moveableObj.ObjectMeshes.size(); k++)
|
||||
_stItem.BoneLightModes[k] = (int)moveableObj.ObjectMeshes[k]->LightMode;
|
||||
|
||||
BindMoveableLights(item->LightsToDraw, item->RoomNumber, item->PrevRoomNumber, item->LightFade);
|
||||
bool acceptsShadows = moveableObj.ShadowType == ShadowMode::None;
|
||||
BindMoveableLights(item->LightsToDraw, item->RoomNumber, item->PrevRoomNumber, item->LightFade, acceptsShadows);
|
||||
_cbItem.UpdateData(_stItem, _context.Get());
|
||||
|
||||
for (int k = 0; k < moveableObj.ObjectMeshes.size(); k++)
|
||||
|
@ -3606,7 +3607,8 @@ namespace TEN::Renderer
|
|||
for (int k = 0; k < moveableObj.ObjectMeshes.size(); k++)
|
||||
_stItem.BoneLightModes[k] = (int)moveableObj.ObjectMeshes[k]->LightMode;
|
||||
|
||||
BindMoveableLights(objectInfo->Item->LightsToDraw, objectInfo->Item->RoomNumber, objectInfo->Item->PrevRoomNumber, objectInfo->Item->LightFade);
|
||||
bool acceptsShadows = moveableObj.ShadowType == ShadowMode::None;
|
||||
BindMoveableLights(objectInfo->Item->LightsToDraw, objectInfo->Item->RoomNumber, objectInfo->Item->PrevRoomNumber, objectInfo->Item->LightFade, acceptsShadows);
|
||||
_cbItem.UpdateData(_stItem, _context.Get());
|
||||
|
||||
BindTexture(
|
||||
|
|
|
@ -319,7 +319,9 @@ void TEN::Renderer::Renderer::DrawLara(RenderView& view, RendererPass rendererPa
|
|||
{
|
||||
_stItem.BoneLightModes[k] = (int)GetMesh(nativeItem->Model.MeshIndex[k])->LightMode;
|
||||
}
|
||||
BindMoveableLights(item->LightsToDraw, item->RoomNumber, item->PrevRoomNumber, item->LightFade);
|
||||
|
||||
bool acceptsShadows = laraObj.ShadowType == ShadowMode::None;
|
||||
BindMoveableLights(item->LightsToDraw, item->RoomNumber, item->PrevRoomNumber, item->LightFade, acceptsShadows);
|
||||
_cbItem.UpdateData(_stItem, _context.Get());
|
||||
|
||||
for (int k = 0; k < laraSkin.ObjectMeshes.size(); k++)
|
||||
|
|
|
@ -155,7 +155,9 @@ PixelShaderOutput PS(PixelShaderInput input)
|
|||
input.FogBulbs.w) :
|
||||
StaticLight(input.Color.xyz, tex.xyz, input.FogBulbs.w);
|
||||
|
||||
color = DoShadow(input.WorldPosition, normal, color, -0.5f);
|
||||
float shadowable = step(0.5f, float((NumItemLights & SHADOWABLE_MASK) == SHADOWABLE_MASK));
|
||||
float3 shadow = DoShadow(input.WorldPosition, normal, color, -0.5f);
|
||||
color = lerp(color, shadow, shadowable);
|
||||
|
||||
output.Color = saturate(float4(color * occlusion, tex.w));
|
||||
output.Color = DoFogBulbsForPixel(output.Color, float4(input.FogBulbs.xyz, 1.0f));
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
#define LT_MASK_SPOT (1 << (31 - LT_SPOT))
|
||||
#define LT_MASK_SHADOW (1 << (31 - LT_SHADOW))
|
||||
|
||||
#define SHADOWABLE_MASK (1 << 16)
|
||||
|
||||
#define MAX_LIGHTS_PER_ROOM 48
|
||||
#define MAX_LIGHTS_PER_ITEM 8
|
||||
#define MAX_FOG_BULBS 32
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include "./Math.hlsli"
|
||||
#include "./ShaderLight.hlsli"
|
||||
|
||||
#define SHADOW_INTENSITY (0.5f)
|
||||
#define SHADOW_INTENSITY (0.6f)
|
||||
#define SHADOW_BLUR_MIN (2.0f)
|
||||
#define SHADOW_BLUR_MAX (8.0f)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue