Проблема с картой теней OpenGL

Я реализовал довольно простую карту теней. У меня есть простой obj импортированный самолет как земля и связка деревьев.

У меня странная тень на плоскости, которая, я думаю, является собственной тенью самолета. Я не уверен, какой код для публикации. Если это поможет, пожалуйста, скажите мне, и я сделаю это тогда.

Первое изображение, вид с камеры. Странная текстурированная низкополигональная сфера просто для справки о положении света.

камера вид на сцену

Второе изображение, текстура глубины, хранящаяся в кадровом буфере. Я рассчитал теневые координаты с точки зрения света. Поскольку я не могу опубликовать более двух ссылок, я оставлю эту.

Третье изображение, текстура глубины с лучшим обзором плоскости, проецирующей тень из другого источника света над всей сценой.

буфер глубины с другой точки зрения

LE: вторая картина http://i41.tinypic.com/23h3wqf.jpg (Глубина текстуры первого изображения)
Попробовал некоторые исправления, добавив glCullFace (GL_BACK) перед тем, как рисовать землю в первом проходе, удаляет ее из текстуры глубины, но все еще появляется в финальном рендере (как на первом рисунке, задняя часть земли) — я попытался добавить CullFace в второй проход, все еще показывая тень на земле, испробовал все комбинации лицевой и обратной сторон. Может ли это быть из-за значений в ортографической проекции?

Шейдер фрагмента тени:

#version 330 core

layout(location = 0) out vec3 color;

in vec2 texcoord;
in vec4 ShadowCoord;

uniform sampler2D textura1;
uniform sampler2D textura2;
uniform sampler2D textura_depth;

uniform int has_alpha;

void main(){

vec3 tex1 = texture(textura1, texcoord).xyz;
vec3 tex2 = texture(textura2, texcoord).xyz;

if(has_alpha>0.5) if((tex2.r<0.1) && (tex2.g<0.1) && (tex2.b<0.1)) discard;

//Z value of depth texture from pass 1
float hartaDepth=texture( textura_depth,(ShadowCoord.xy/ShadowCoord.w)).z;

float shadowValue=1.0;

if(hartaDepth < ShadowCoord.z-0.005)
shadowValue=0.5;

color = shadowValue * tex1 ;
}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]