diff --git a/shaders/lighting.frag b/shaders/lighting.frag index 5197ef5..33e4fbd 100644 --- a/shaders/lighting.frag +++ b/shaders/lighting.frag @@ -30,6 +30,8 @@ layout(std140, binding = 3) uniform Sun mat4 vp; } sun; +uniform float camera_cascade_distances[4]; // Размер массива должен соответствовать количеству каскадов + uniform sampler2D gPosition; uniform sampler2D gNormal; uniform sampler2D gDiffuseP; diff --git a/src/main.cpp b/src/main.cpp index 4b701d3..92ae9c1 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -182,6 +182,8 @@ int main(void) lightShader.link(); const char* gtextures_shader_names[] = {"gPosition", "gNormal", "gDiffuseP", "gAmbientSpecular", "sunShadowDepth"}; lightShader.bindTextures(gtextures_shader_names, sizeof(gtextures_shader_names)/sizeof(const char*)); + // Загрузка данных о границах каскадов + glUniform1fv(lightShader.getUniformLoc("camera_cascade_distances"), CAMERA_CASCADE_COUNT, &camera_cascade_distances[1]); glm::vec3 quadVertices[] = { {-1.0f, 1.0f, 0.0f} , {-1.0f, -1.0f, 0.0f} @@ -216,6 +218,8 @@ int main(void) ShaderProgram sunShadowShader; // Загрузим шейдер sunShadowShader.load(GL_VERTEX_SHADER, "shaders/sun_shadow.vert"); + sunShadowShader.load(GL_GEOMETRY_SHADER, "shaders/sun_shadow.geom"); + sunShadowShader.load(GL_FRAGMENT_SHADER, "shaders/empty.frag"); sunShadowShader.link(); // Модель прямоугольника