Fixed fragment lights for Nvidia cards with 2048 max uniforms
This commit is contained in:
@@ -9,7 +9,7 @@ Renderer::Renderer()
|
|||||||
m_SunPosition = glm::vec3(0, 10, 10);
|
m_SunPosition = glm::vec3(0, 10, 10);
|
||||||
m_SunTarget = glm::vec3(0, 0, 0);
|
m_SunTarget = glm::vec3(0, 0, 0);
|
||||||
m_SunProjection = glm::ortho<float>(-20, 20, -20, 20, -10, 20);
|
m_SunProjection = glm::ortho<float>(-20, 20, -20, 20, -10, 20);
|
||||||
Lights = 512;
|
Lights = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::Initialize()
|
void Renderer::Initialize()
|
||||||
@@ -187,6 +187,7 @@ void Renderer::DrawScene()
|
|||||||
|
|
||||||
m_ShaderProgram.Bind();
|
m_ShaderProgram.Bind();
|
||||||
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "DepthMVP"), 1, GL_FALSE, glm::value_ptr(depthBiasMVP));
|
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "DepthMVP"), 1, GL_FALSE, glm::value_ptr(depthBiasMVP));
|
||||||
|
glUniform1i(glGetUniformLocation(m_ShaderProgram.GetHandle(), "numberOfLights"), Lights);
|
||||||
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "position"), Lights, Light_position.data());
|
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "position"), Lights, Light_position.data());
|
||||||
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "specular"), Lights, Light_specular.data());
|
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "specular"), Lights, Light_specular.data());
|
||||||
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "diffuse"), Lights, Light_diffuse.data());
|
glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "diffuse"), Lights, Light_diffuse.data());
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ public:
|
|||||||
glm::mat4 projectionMatrix;
|
glm::mat4 projectionMatrix;
|
||||||
|
|
||||||
int HEIGHT, WIDTH;
|
int HEIGHT, WIDTH;
|
||||||
float Lights;
|
|
||||||
|
|
||||||
struct ModelData
|
struct ModelData
|
||||||
{
|
{
|
||||||
@@ -40,6 +39,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
std::vector<ModelData*> ModelsToRender;
|
std::vector<ModelData*> ModelsToRender;
|
||||||
|
int Lights;
|
||||||
std::vector<float> Light_position;
|
std::vector<float> Light_position;
|
||||||
std::vector<float> Light_specular;
|
std::vector<float> Light_specular;
|
||||||
std::vector<float> Light_diffuse;
|
std::vector<float> Light_diffuse;
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ uniform mat4 view;
|
|||||||
layout(binding=0) uniform sampler2D texture0;
|
layout(binding=0) uniform sampler2D texture0;
|
||||||
layout(binding=1) uniform sampler2D shadowMap;
|
layout(binding=1) uniform sampler2D shadowMap;
|
||||||
|
|
||||||
const int numberOfLights = 128;
|
const int maxNumberOfLights = 82;
|
||||||
|
uniform int numberOfLights;
|
||||||
uniform vec3 position[numberOfLights];
|
uniform vec3 position[maxNumberOfLights];
|
||||||
uniform vec3 specular[numberOfLights];
|
uniform vec3 specular[maxNumberOfLights];
|
||||||
uniform vec3 diffuse[numberOfLights];
|
uniform vec3 diffuse[maxNumberOfLights];
|
||||||
uniform float constantAttenuation[numberOfLights];
|
uniform float constantAttenuation[maxNumberOfLights];
|
||||||
uniform float linearAttenuation[numberOfLights];
|
uniform float linearAttenuation[maxNumberOfLights];
|
||||||
uniform float quadraticAttenuation[numberOfLights];
|
uniform float quadraticAttenuation[maxNumberOfLights];
|
||||||
uniform float spotExponent[numberOfLights];
|
uniform float spotExponent[maxNumberOfLights];
|
||||||
|
|
||||||
in VertexData {
|
in VertexData {
|
||||||
vec3 Position;
|
vec3 Position;
|
||||||
|
|||||||
Reference in New Issue
Block a user