Merge branch 'master' into Movement
# Conflicts: # include/Engine/Network/Client.h # resources/DefaultConfig.ini # resources/Schema/Entities/OverwatchCamera.xml # resources/Schema/Types/Entity.xsd
This commit is contained in:
@@ -2,8 +2,11 @@
|
||||
#define PerformanceTimer_h__
|
||||
|
||||
#include "../Common.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <boost/timer/timer.hpp>
|
||||
using boost::timer::cpu_timer;
|
||||
#endif //DEBUG
|
||||
|
||||
class PerformanceTimer
|
||||
{
|
||||
@@ -17,9 +20,11 @@ public:
|
||||
static void CreateExcelData();
|
||||
|
||||
private:
|
||||
#ifdef DEBUG
|
||||
static std::map<std::string, cpu_timer> timers;
|
||||
static cpu_timer m_Timer;
|
||||
static std::string currentTimerRunning;
|
||||
#endif //DEBUG
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -10,31 +10,32 @@
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/shared_array.hpp>
|
||||
|
||||
#include "Network/Network.h"
|
||||
#include "Network/MessageType.h"
|
||||
#include "Network/PlayerDefinition.h"
|
||||
#include "Network/UDPClient.h"
|
||||
#include "Network/TCPClient.h"
|
||||
#include "Network/SnapshotDefinitions.h"
|
||||
#include "Network/EKillDeath.h"
|
||||
#include "Core/World.h"
|
||||
#include "Core/EntityFile.h"
|
||||
#include "Core/EventBroker.h"
|
||||
#include "Core/ConfigFile.h"
|
||||
#include "Core/EPlayerDeath.h"
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "Core/EPlayerDamage.h"
|
||||
#include "../Game/Events/EDoubleJump.h"
|
||||
#include "Network/EInterpolate.h"
|
||||
#include "Network/SnapshotFilter.h"
|
||||
#include "Core/EPlayerSpawned.h"
|
||||
#include "Core/EAmmoPickup.h"
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "../Game/Events/EDashAbility.h"
|
||||
#include "Game/Events/EDoubleJump.h"
|
||||
#include "Game/Events/EDashAbility.h"
|
||||
#include "Game/Events/EReset.h"
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "Network/Network.h"
|
||||
#include "Network/MessageType.h"
|
||||
#include "Network/PlayerDefinition.h"
|
||||
#include "Network/UDPClient.h"
|
||||
#include "Network/TCPClient.h"
|
||||
#include "Network/SnapshotDefinitions.h"
|
||||
#include "Network/EDisplayServerlist.h"
|
||||
#include "Network/EConnectRequest.h"
|
||||
#include "Network/EPlayerDisconnected.h"
|
||||
#include "Game/Events/EReset.h"
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "Network/EInterpolate.h"
|
||||
#include "Network/SnapshotFilter.h"
|
||||
|
||||
class Client : public Network
|
||||
{
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
class DrawFinalPass
|
||||
{
|
||||
public:
|
||||
DrawFinalPass(IRenderer* renderer, LightCullingPass* lightCullingPass, CubeMapPass* cubeMapPass, SSAOPass* ssaoPass, ShadowPass* shadowPass);
|
||||
DrawFinalPass(IRenderer* renderer, LightCullingPass* lightCullingPass, CubeMapPass* cubeMapPass, SSAOPass* ssaoPass, ShadowPass* shadowPass, ConfigFile* config);
|
||||
~DrawFinalPass();
|
||||
void InitializeTextures();
|
||||
void InitializeFrameBuffers();
|
||||
@@ -25,17 +25,77 @@ public:
|
||||
void Draw(RenderScene& scene, BlurHUD* blurHUDPass);
|
||||
void ClearBuffer();
|
||||
void OnWindowResize();
|
||||
void setMSAA(unsigned int numberOfSamples);
|
||||
|
||||
//Return the texture that is used in later stages to apply the bloom effect
|
||||
GLuint BloomTexture() const { return m_BloomTexture; }
|
||||
GLuint BloomTexture() {
|
||||
if (m_MSAA){
|
||||
m_AntiAliasedFrameBuffer->Bind();
|
||||
glClearColor(0.f, 0.f, 0.f, 0.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
m_AntiAliasedFrameBuffer->Unbind();
|
||||
m_FinalPassFrameBuffer->Read();
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT1);
|
||||
m_AntiAliasedFrameBuffer->Draw();
|
||||
glBlitFramebuffer(
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||
return m_AntiAliasedTexture;
|
||||
}
|
||||
return m_BloomTexture; }
|
||||
//Return the texture with diffuse and lighting of the scene.
|
||||
GLuint SceneTexture() const { return m_SceneTexture; }
|
||||
GLuint DrawFinalPass::SceneTexture() {
|
||||
if (m_MSAA) {
|
||||
m_AntiAliasedFrameBuffer->Bind();
|
||||
glClearColor(0.f, 0.f, 0.f, 0.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
m_AntiAliasedFrameBuffer->Unbind();
|
||||
m_FinalPassFrameBuffer->Read();
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||
m_AntiAliasedFrameBuffer->Draw();
|
||||
glBlitFramebuffer(
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||
return m_AntiAliasedTexture;
|
||||
}
|
||||
return m_SceneTexture;
|
||||
}
|
||||
//Return the SceneTexture with the blurred HUD bits.
|
||||
GLuint CombinedSceneTexture() const { return m_CombinedTexture; }
|
||||
GLuint CombinedSceneTexture() {
|
||||
if (m_MSAA) {
|
||||
m_AntiAliasedFrameBuffer->Bind();
|
||||
glClearColor(0.f, 0.f, 0.f, 0.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
m_AntiAliasedFrameBuffer->Unbind();
|
||||
m_FinalPassFrameBuffer->Read();
|
||||
m_AntiAliasedFrameBuffer->Draw();
|
||||
glBlitFramebuffer(
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||
return m_AntiAliasedTexture;
|
||||
}
|
||||
return m_CombinedTexture; }
|
||||
//Return the blurred scene texture.
|
||||
GLuint FullBlurredTexture() const { return m_FullBlurredTexture; }
|
||||
GLuint FullBlurredTexture() {
|
||||
if (m_MSAA) {
|
||||
m_AntiAliasedFrameBuffer->Bind();
|
||||
glClearColor(0.f, 0.f, 0.f, 0.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
m_AntiAliasedFrameBuffer->Unbind();
|
||||
m_FinalPassFrameBuffer->Read();
|
||||
m_AntiAliasedFrameBuffer->Draw();
|
||||
glBlitFramebuffer(
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
0, 0, m_Renderer->GetViewportSize().Width, m_Renderer->GetViewportSize().Height,
|
||||
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||
return m_AntiAliasedTexture;
|
||||
}
|
||||
return m_FullBlurredTexture; }
|
||||
//Return the framebuffer used in the scene rendering stage.
|
||||
FrameBuffer* FinalPassFrameBuffer() { return &m_FinalPassFrameBuffer; }
|
||||
FrameBuffer* FinalPassFrameBuffer() { return m_FinalPassFrameBuffer; }
|
||||
|
||||
private:
|
||||
void DrawSprites(std::list<std::shared_ptr<RenderJob>>&jobs, RenderScene& scene);
|
||||
@@ -56,18 +116,21 @@ private:
|
||||
Texture* m_GreyTexture;
|
||||
Texture* m_ErrorTexture;
|
||||
|
||||
FrameBuffer m_FinalPassFrameBuffer;
|
||||
FrameBuffer m_ShieldDepthFrameBuffer;
|
||||
FrameBuffer* m_FinalPassFrameBuffer = nullptr;
|
||||
FrameBuffer* m_ShieldDepthFrameBuffer = nullptr;
|
||||
FrameBuffer* m_AntiAliasedFrameBuffer = nullptr;
|
||||
GLuint m_BloomTexture = 0;
|
||||
GLuint m_SceneTexture = 0;
|
||||
GLuint m_DepthBuffer = 0;
|
||||
GLuint m_ShieldBuffer = 0;
|
||||
GLuint m_CubeMapTexture = 0;
|
||||
GLuint m_FullBlurredTexture;
|
||||
GLuint m_CombinedTexture; //This can be removed for less memory usage, just set m_sceneTexture to the return from m_BlurHUDPass.CombineTextures
|
||||
GLuint m_FullBlurredTexture = 0;
|
||||
GLuint m_CombinedTexture = 0; //This can be removed for less memory usage, just set m_sceneTexture to the return from m_BlurHUDPass.CombineTextures
|
||||
GLuint m_AntiAliasedTexture = 0; //Is only used when MSAA is active;
|
||||
|
||||
//maqke this component based i guess?
|
||||
GLuint m_ShieldPixelRate = 16;
|
||||
unsigned int m_MSAA = 0;
|
||||
|
||||
const IRenderer* m_Renderer;
|
||||
const LightCullingPass* m_LightCullingPass;
|
||||
|
||||
@@ -7,12 +7,13 @@
|
||||
class BufferResource
|
||||
{
|
||||
public:
|
||||
BufferResource(GLuint* resourceHandle, GLenum resourceType, GLenum attachment, GLuint mipMapLod);
|
||||
BufferResource(GLuint* resourceHandle, GLenum resourceType, GLenum attachment, GLuint mipMapLod, bool multiSampling);
|
||||
|
||||
GLuint* m_ResourceHandle;
|
||||
GLenum m_ResourceType;
|
||||
GLenum m_Attachment;
|
||||
GLuint m_MipMapLod = 0;
|
||||
bool m_MultiSampling = false;
|
||||
private:
|
||||
|
||||
};
|
||||
@@ -21,24 +22,33 @@ template <GLenum RESOURCETYPE>
|
||||
class ResourceType : public BufferResource
|
||||
{
|
||||
public:
|
||||
ResourceType(GLuint* resourceHandle, GLenum attachment, GLuint mipMapLod)
|
||||
: BufferResource(resourceHandle, RESOURCETYPE, attachment, mipMapLod) { }
|
||||
ResourceType(GLuint* resourceHandle, GLenum attachment, GLuint mipMapLod, bool multiSampling)
|
||||
: BufferResource(resourceHandle, RESOURCETYPE, attachment, mipMapLod, multiSampling) { }
|
||||
};
|
||||
|
||||
class Texture2D : public ResourceType<GL_TEXTURE_2D>
|
||||
{
|
||||
public:
|
||||
Texture2D(GLuint* resourceHandle, GLenum attachment, GLuint mipMapLod = 0)
|
||||
: ResourceType(resourceHandle, attachment, mipMapLod) { };
|
||||
: ResourceType(resourceHandle, attachment, mipMapLod, false) { };
|
||||
|
||||
~Texture2D();
|
||||
};
|
||||
|
||||
class Texture2DMultiSample : public ResourceType<GL_TEXTURE_2D_MULTISAMPLE>
|
||||
{
|
||||
public:
|
||||
Texture2DMultiSample(GLuint* resourceHandle, GLenum attachment, GLuint mipMapLod = 0)
|
||||
: ResourceType(resourceHandle, attachment, mipMapLod, true) { };
|
||||
|
||||
~Texture2DMultiSample();
|
||||
};
|
||||
|
||||
class RenderBuffer : public ResourceType<GL_RENDERBUFFER>
|
||||
{
|
||||
public:
|
||||
RenderBuffer(GLuint* resourceHandle, GLenum attachment)
|
||||
: ResourceType(resourceHandle, attachment, 0)
|
||||
RenderBuffer(GLuint* resourceHandle, GLenum attachment, bool multiSampling = false)
|
||||
: ResourceType(resourceHandle, attachment, 0, multiSampling)
|
||||
{ };
|
||||
|
||||
~RenderBuffer();
|
||||
@@ -48,12 +58,13 @@ class Texture2DArray : public ResourceType<GL_TEXTURE_2D_ARRAY>
|
||||
{
|
||||
public:
|
||||
Texture2DArray(GLuint* resourceHandle, GLenum attachment)
|
||||
: ResourceType(resourceHandle, attachment, 0)
|
||||
: ResourceType(resourceHandle, attachment, 0, false)
|
||||
{ };
|
||||
|
||||
~Texture2DArray();
|
||||
};
|
||||
|
||||
|
||||
class FrameBuffer
|
||||
{
|
||||
public:
|
||||
@@ -65,9 +76,13 @@ public:
|
||||
void Generate();
|
||||
void Bind();
|
||||
void Unbind();
|
||||
void Read();
|
||||
void Draw();
|
||||
GLuint GetHandle();
|
||||
bool MultiSampling() { return m_MultiSampling; };
|
||||
|
||||
private:
|
||||
bool m_MultiSampling = true;
|
||||
GLuint m_BufferHandle;
|
||||
std::vector<std::shared_ptr<BufferResource>> m_Resources;
|
||||
};
|
||||
|
||||
@@ -104,12 +104,17 @@ struct ModelJob : RenderJob
|
||||
FillPercentage = fillPercentage;
|
||||
IsShielded = isShielded;
|
||||
|
||||
|
||||
if (world->HasComponent(Entity, "Unpickable")) {
|
||||
NotPickable = true;
|
||||
}
|
||||
|
||||
if (model->IsSkinned()) {
|
||||
Skeleton = Model->m_RawModel->m_Skeleton;
|
||||
|
||||
if (Skeleton != nullptr) {
|
||||
|
||||
EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID);
|
||||
|
||||
|
||||
if(Skeleton->BlendTrees.find(entityWrapper) != Skeleton->BlendTrees.end()) {
|
||||
BlendTree = Skeleton->BlendTrees.at(entityWrapper);
|
||||
@@ -147,6 +152,7 @@ struct ModelJob : RenderJob
|
||||
float FillPercentage = 0.0;
|
||||
bool IsShielded;
|
||||
bool Shadow;
|
||||
bool NotPickable = false;
|
||||
|
||||
void CalculateHash() override
|
||||
{
|
||||
|
||||
@@ -71,6 +71,7 @@ private:
|
||||
bool m_ResizeWindow = false;
|
||||
int m_SSAO_Quality = 0;
|
||||
int m_GLOW_Quality = 2;
|
||||
unsigned int m_MSAA_Level = 0;
|
||||
|
||||
PickingPass* m_PickingPass;
|
||||
LightCullingPass* m_LightCullingPass;
|
||||
|
||||
@@ -20,11 +20,14 @@ public:
|
||||
, Parent(parent)
|
||||
, Name(name)
|
||||
, OffsetMatrix(offsetMatrix)
|
||||
{ }
|
||||
{
|
||||
BindTransformMatrix = glm::inverse(offsetMatrix);
|
||||
}
|
||||
|
||||
std::string Name;
|
||||
glm::mat4 OffsetMatrix;
|
||||
int ID;
|
||||
glm::mat4 BindTransformMatrix;
|
||||
|
||||
Bone* Parent;
|
||||
std::vector<Bone*> Children;
|
||||
|
||||
@@ -29,6 +29,7 @@ struct SpriteJob : RenderJob
|
||||
IncandescenceTexture = CommonFunctions::TryLoadResource<TextureSprite, true>(cSprite["GlowMap"]);
|
||||
|
||||
Linear = (bool)cSprite["Linear"];
|
||||
ClampToBorder = (bool)cSprite["ClampToBorder"];
|
||||
|
||||
StartIndex = matProp.material->StartIndex;
|
||||
EndIndex = matProp.material->EndIndex;
|
||||
@@ -93,6 +94,7 @@ struct SpriteJob : RenderJob
|
||||
float ScaleX = 1.f;
|
||||
float ScaleY = 1.f;
|
||||
bool Linear = false;
|
||||
bool ClampToBorder = false;
|
||||
|
||||
glm::vec4 FillColor = glm::vec4(0);
|
||||
float FillPercentage = 0.0;
|
||||
|
||||
@@ -27,7 +27,7 @@ Texture* TryLoadResource(std::string path)
|
||||
|
||||
void GenerateTexture(GLuint* texture, GLenum wrapping, GLenum filtering, glm::vec2 dimensions, GLint internalFormat, GLint format, GLenum type);
|
||||
void GenerateMultiSampleTexture(GLuint* texture, int numSamples, glm::vec2 dimensions, GLint internalFormat);
|
||||
void GenerateMipMapTexture(GLuint* texture, GLenum wrapping, glm::vec2 dimensions, GLint format, GLenum type, GLint numMipMaps);
|
||||
void GenerateMipMapTexture(GLuint* texture, GLenum wrapping, glm::vec2 dimensions, GLint internalFormat, GLint format, GLenum type, GLint numMipMaps, GLint MAGFilter, GLint MINFilter);
|
||||
void DeleteTexture(GLuint* texture);
|
||||
};
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "../Engine/Core/EPause.h"
|
||||
#include "../Engine/Core/EComponentAttached.h"
|
||||
#include "../Core/EPlayerSpawned.h"
|
||||
#include "../Rendering/ESetCamera.h"
|
||||
|
||||
|
||||
typedef std::pair<ALuint, std::vector<ALuint>> QueuedBuffers;
|
||||
@@ -91,7 +92,6 @@ private:
|
||||
void matchBGMLoop();
|
||||
Source* m_CurrentBGM = nullptr;
|
||||
Source* m_CurrentBGMCombo = nullptr;
|
||||
bool m_DrumLoopHasBeenStarted = false;
|
||||
|
||||
// Logic
|
||||
World* m_World = nullptr;
|
||||
@@ -139,6 +139,8 @@ private:
|
||||
bool OnPlayQueueOnEntity(const Events::PlayQueueOnEntity &e);
|
||||
EventRelay<SoundManager, Events::ChangeBGM> m_EChangeBGM;
|
||||
bool OnChangeBGM(const Events::ChangeBGM &e);
|
||||
EventRelay<SoundManager, Events::SetCamera> m_ESetCamera;
|
||||
bool OnSetCamera(const Events::SetCamera& e);
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user