Dynamic lights? Did anyone say DYNAMIC LIGHTS?
This commit is contained in:
parent
b3bed807de
commit
8a3db6c003
10 changed files with 133 additions and 9 deletions
|
|
@ -79,7 +79,6 @@
|
|||
#include "gl/utility/gl_convert.h"
|
||||
#include "gl/utility/gl_templates.h"
|
||||
|
||||
EXTERN_CVAR(Int, vid_renderer)
|
||||
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -260,10 +259,6 @@ void ADynamicLight::Deactivate(AActor *activator)
|
|||
//==========================================================================
|
||||
void ADynamicLight::Tick()
|
||||
{
|
||||
if (vid_renderer == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (IsOwned())
|
||||
{
|
||||
if (!target || !target->state)
|
||||
|
|
|
|||
|
|
@ -221,6 +221,26 @@ namespace swrenderer
|
|||
if (args.source2[0] == nullptr)
|
||||
args.flags |= DrawWallArgs::nearest_filter;
|
||||
|
||||
args.dynlights = nullptr;
|
||||
args.num_dynlights = 0;
|
||||
/*
|
||||
static TriLight fakelight;
|
||||
static bool first = true;
|
||||
if (first)
|
||||
{
|
||||
fakelight.x = 100.0f;
|
||||
fakelight.y = 0.0f;
|
||||
fakelight.z = 100.0f;
|
||||
fakelight.color = 0xffffff00;
|
||||
fakelight.radius = 256.0f / 1000.0f;
|
||||
first = false;
|
||||
}
|
||||
|
||||
args.z = 0.0f;
|
||||
args.step_z = 1.0f;
|
||||
args.dynlights = &fakelight;
|
||||
args.num_dynlights = 1;
|
||||
*/
|
||||
DetectRangeError(args.dest, args.dest_y, args.count);
|
||||
}
|
||||
|
||||
|
|
@ -279,6 +299,11 @@ namespace swrenderer
|
|||
if (args.source2[0] == nullptr)
|
||||
args.flags |= DrawWallArgs::nearest_filter;
|
||||
|
||||
args.z = 0.0f;
|
||||
args.step_z = 0.0f;
|
||||
args.dynlights = nullptr;
|
||||
args.num_dynlights = 0;
|
||||
|
||||
DetectRangeError(args.dest, args.dest_y, args.count);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -59,6 +59,13 @@ struct WorkerThreadData
|
|||
int32_t StartY;
|
||||
};
|
||||
|
||||
struct TriLight
|
||||
{
|
||||
uint32_t color;
|
||||
float x, y, z;
|
||||
float radius;
|
||||
};
|
||||
|
||||
struct DrawWallArgs
|
||||
{
|
||||
uint32_t *dest;
|
||||
|
|
@ -91,6 +98,10 @@ struct DrawWallArgs
|
|||
nearest_filter = 2
|
||||
};
|
||||
|
||||
float z, step_z;
|
||||
TriLight *dynlights;
|
||||
uint32_t num_dynlights;
|
||||
|
||||
FString ToString();
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -261,6 +261,9 @@ void RenderPolyWall::Render(const TriMatrix &worldToClip, const Vec4f &clipPlane
|
|||
args.SetColormap(Line->frontsector->ColorMap);
|
||||
args.SetClipPlane(clipPlane.x, clipPlane.y, clipPlane.z, clipPlane.w);
|
||||
|
||||
//if (Side && Side->lighthead)
|
||||
// args.uniforms.light = 255; // Make walls touched by a light fullbright!
|
||||
|
||||
if (Polyportal)
|
||||
{
|
||||
args.stencilwritevalue = Polyportal->StencilValue;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@
|
|||
#include "r_poly.h"
|
||||
#include "p_setup.h"
|
||||
|
||||
void gl_ParseDefs();
|
||||
void gl_InitData();
|
||||
|
||||
EXTERN_CVAR(Bool, r_shadercolormaps)
|
||||
EXTERN_CVAR(Float, maxviewpitch) // [SP] CVAR from GZDoom
|
||||
|
||||
|
|
@ -92,6 +95,8 @@ FSoftwareRenderer::~FSoftwareRenderer()
|
|||
|
||||
void FSoftwareRenderer::Init()
|
||||
{
|
||||
gl_ParseDefs();
|
||||
|
||||
r_swtruecolor = screen->IsBgra();
|
||||
R_InitRenderer();
|
||||
}
|
||||
|
|
@ -310,7 +315,7 @@ int FSoftwareRenderer::GetMaxViewPitch(bool down)
|
|||
|
||||
bool FSoftwareRenderer::RequireGLNodes()
|
||||
{
|
||||
return r_polyrenderer;
|
||||
return true;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
|
||||
#include "r_renderer.h"
|
||||
|
||||
void gl_SetActorLights(AActor *);
|
||||
void gl_PreprocessLevel();
|
||||
void gl_CleanLevelData();
|
||||
|
||||
struct FSoftwareRenderer : public FRenderer
|
||||
{
|
||||
FSoftwareRenderer();
|
||||
|
|
@ -40,6 +44,21 @@ struct FSoftwareRenderer : public FRenderer
|
|||
void RenderTextureView (FCanvasTexture *tex, AActor *viewpoint, int fov) override;
|
||||
sector_t *FakeFlat(sector_t *sec, sector_t *tempsec, int *floorlightlevel, int *ceilinglightlevel, bool back) override;
|
||||
|
||||
void StateChanged(AActor *actor) override
|
||||
{
|
||||
gl_SetActorLights(actor);
|
||||
}
|
||||
|
||||
void PreprocessLevel() override
|
||||
{
|
||||
gl_PreprocessLevel();
|
||||
}
|
||||
|
||||
void CleanLevelData() override
|
||||
{
|
||||
gl_CleanLevelData();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue