Glsl рендеринг теней с помощью карты теней (+moderngl)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Glsl рендеринг теней с помощью карты теней (+moderngl)

Сообщение Anonymous »

поэтому я хотел бы добавить тени в свою программу рендеринга.
Я использую Python (с Moderngl) и glsl, но тени не визуализируются...
Без использования массивов все работает нормально, но мне нужно их использовать (позже я попробую добавить больше источников света).
Поэтому программа не возвращает результат какая-то ошибка, но тени нет
Вот мой верт-шейдер (shadowCoord — это координаты точек тени, которые я использую во фрагментном шейдере, а m_view_l — это все матрицы освещения, на данный момент я только используйте один: так number_mat = 1)

Код: Выделить всё

#version 410
#define MAX_SIZE 6

//in
layout (location = 0) in vec2 in_texcoord;
layout (location = 1) in vec3 in_position;
layout (location = 2) in vec3 in_normales;

//out
out vec2 uv_0;
out vec3 v_pos;
out vec3 v_normals;
out float rd_light_diffraction;
out vec2 pixel_pos;
out vec4 shadowCoord[MAX_SIZE];

//matrices
uniform mat4 m_proj;
uniform mat4 m_view;

uniform mat4 m_view_l[MAX_SIZE];
uniform int number_mat;
uniform mat4 m_proj_l;
uniform mat4 m_model;

uniform mat4 m_bias = mat4(
0.5,0.0,0.0,0.0,
0.0,0.5,0.0,0.0,
0.0,0.0,0.5,0.0,
0.5,0.5,0.5,1.0
);

float random(vec2 st){
return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123);
}

void main(){

uv_0 = vec2(1.0-in_texcoord);
gl_Position = m_proj*m_view*m_model*vec4(in_position, 1.0);//vector4 for vertex pos
pixel_pos = vec2(gl_Position);

//depth textures
for (int i = 0; i[code]#version 410
#define MAX_SIZE 6

layout (location = 0) in vec2 uv_0;
layout (location = 1) in vec3 v_pos;
layout (location = 2) in vec3 v_normals;
layout (location = 3) in float rd_light_diffraction;
layout (location = 4) in vec2 pixel_pos;
in vec4 shadowCoord[MAX_SIZE];

out vec4 fragColor;

uniform vec3 cam_pos;

uniform sampler2D u_texture_0;
uniform sampler2DShadow shadowMap[MAX_SIZE];
uniform int number_mat;

//matrices
uniform mat4 m_proj;
uniform mat4 m_view;
uniform mat4 m_model;

uniform vec3 light_pos[20]; //max number of lights is 10
uniform vec3 light_color[20];
uniform float light_intensity[20];

//light params
float AMBIANT_LIGHT = 0.06;
float STRENGTH_DIFFUSE = 13.0; //the diffuse has more impact

float getShadow(){
float shadow = 0;
for (int i = 0; i

Подробнее здесь: [url]https://stackoverflow.com/questions/79311683/glsl-rendering-of-shadows-with-shadowmapping-moderngl[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Glsl рендеринг теней с помощью карт теней
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как определить ModernGL как mgl при создании 3D-движка с помощью OpenGL
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Использование Depth FBO для карты теней приводит к странному поведению.
    Anonymous » » в форуме C#
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Использование Depth FBO для карты теней приводит к странному поведению.
    Anonymous » » в форуме C#
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Почему карты теней не работают в моей программе pyopengl?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»