Begin removing binding points from the hwrenderer layer.

Well known buffers should be created and managed by the backend, otherwise the backend just becomes an OpenGL emulator.
This commit is contained in:
Magnus Norddahl 2023-04-16 19:30:27 +02:00
commit 6894eb013f
35 changed files with 265 additions and 238 deletions

View file

@ -882,7 +882,7 @@ void PPShadowMap::Update(PPRenderState* renderstate)
{
ShadowMapUniforms uniforms;
uniforms.ShadowmapQuality = (float)gl_shadowmap_quality;
uniforms.NodesCount = screen->mShadowMap.NodesCount();
uniforms.NodesCount = screen->mShadowMap->NodesCount();
renderstate->PushGroup("shadowmap");

View file

@ -1,15 +1,20 @@
#pragma once
#include "hwrenderer/data/shaderuniforms.h"
#include <memory>
#include <map>
#include "intrect.h"
#include "renderstyle.h"
#include "tarray.h"
#include "zstring.h"
#include "vectors.h"
#include <vector>
struct PostProcessShader;
typedef FRenderStyle PPBlendMode;
typedef IntRect PPViewport;
class FTexture;
class PPTexture;
class PPShader;
@ -24,6 +29,33 @@ enum class ETonemapMode : uint8_t
NumTonemapModes
};
enum class UniformType
{
Int,
UInt,
Float,
Vec2,
Vec3,
Vec4,
IVec2,
IVec3,
IVec4,
UVec2,
UVec3,
UVec4,
Mat4
};
class UniformFieldDesc
{
public:
UniformFieldDesc() = default;
UniformFieldDesc(const char* name, UniformType type, std::size_t offset) : Name(name), Type(type), Offset(offset) { }
const char* Name;
UniformType Type;
std::size_t Offset;
};
enum class PPFilterMode { Nearest, Linear };