У меня возникли трудности с чтением текстуры трафарета глубины в вычислительном шейдере. Мне удалось успешно прочитать цветные текстуры, поэтому я подозреваю, что существует какое-то непонятное мне поведение, касающееся текстуры трафарета глубины в FBO.
#version 430 core
#extension GL_ARB_compute_variable_group_size: enable // Allows this shader to use local_size_variable. So local size can be specified from the cpu
layout (local_size_variable) in;
layout (rgba32f, binding = 0) uniform image2D imgOutput;
layout(r32ui, binding = 1) readonly uniform uimage2D depthStencil;
void main()
{
ivec2 coord = ivec2(gl_GlobalInvocationID.xy);
uint packedValue = imageLoad(depthStencil, coord).r;
uint stencil = packedValue & 0xFF;
vec4 output = vec4(stencil, stencil , stencil , 1.0);
imageStore(imgOutput, coord, output);
}
При такой настройке моя выходная текстура остается пустой, даже когда я записываю значения в текстуру трафарета. Передавая цветные текстуры (обычные или альбедо из gBuffer), я могу успешно прочитать значения и скопировать их в выходную текстуру с помощью вычислительного шейдера. Есть ли что-то, чего мне не хватает для работы с текстурой трафарета глубины?
У меня возникли трудности с чтением текстуры трафарета глубины в вычислительном шейдере. Мне удалось успешно прочитать цветные текстуры, поэтому я подозреваю, что существует какое-то непонятное мне поведение, касающееся текстуры трафарета глубины в FBO. [code]// Create gbuffer framebuffer glGenFramebuffers(1, &gBuffer); glBindFramebuffer(GL_FRAMEBUFFER, gBuffer);
//Create depth - stencil texture glGenTextures(1, &depthStencilTexture); glBindTexture(GL_TEXTURE_2D, depthStencilTexture); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, WINDOW_WIDTH, WINDOW_HIEGHT, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); [/code] Я создаю текстуру FBO и трафарета глубины, а затем связываю изображения: [code]glBindImageTexture(0, outputTexture, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F); glBindImageTexture(1, depthStencilTexture, 0, GL_FALSE, 0, GL_READ_ONLY, GL_R32UI); [/code] Затем попытайтесь считать текстуру трафарета на выходе: [code]computeShader->Use(); glDispatchComputeGroupSizeARB(WINDOW_WIDTH, WINDOW_HIEGHT, 1, 1, 1, 1); glMemoryBarrier(accessBit); [/code] Вычислительный шейдер: [code]#version 430 core #extension GL_ARB_compute_variable_group_size: enable // Allows this shader to use local_size_variable. So local size can be specified from the cpu
imageStore(imgOutput, coord, output); } [/code] При такой настройке моя выходная текстура остается пустой, даже когда я записываю значения в текстуру трафарета. Передавая цветные текстуры (обычные или альбедо из gBuffer), я могу успешно прочитать значения и скопировать их в выходную текстуру с помощью вычислительного шейдера. Есть ли что-то, чего мне не хватает для работы с текстурой трафарета глубины?
Здравствуйте. Я пытаюсь работать в вычислительном шейдере с буфером вершин, содержащим множество потоков
Позиция в первом потоке
Касательная и цвет во втором
Координаты UV в третьем
Как передать эти данные в вычислить шейдер и повторно получить его...
Я реализую Ray Tracer в OpenGL 4.3 и уже был доволен результатом, если только не загрузил какую-нибудь 3D-модель с несколькими сотнями треугольников. Результат был правильным, но ужасно медленным (около 1,6FPS). Поэтому я прибег к оптимизации с...
Шейдер металлических фрагментов визуализируется в цель рендеринга, явно возвращая значение float4. Означает ли это, что фрагментный шейдер может отображать только одну текстуру одновременно? Я хотел бы визуализировать сразу две текстуры, обе с...
Я пытаюсь анимировать видео, визуализированное с использованием представления текстуры, анимация работает нормально, но когда я масштабирую текстуру до другого размера, медиаплеер не масштабируется в соответствии с размером текстуры, видео всегда...