Я создаю игровой движок с разреженным воксельным октодеревом, и у меня возникли проблемы с записью в вычислительном шейдере. Я упростил свой алгоритм, потому что мне нужно писать только в текстуру. Вот что я пробовал:
Подготовка/отправка данных текстуры в графический процессор:
Обратите внимание, что в классе Test есть оператор печати для извлечения данных, который должен был показывать индекс массива, но он извлекает массив, полный нулей:
записать вывод: [0 0 0 ... 0 0 0]
Я создаю игровой движок с разреженным воксельным октодеревом, и у меня возникли проблемы с записью в вычислительном шейдере. Я упростил свой алгоритм, потому что мне нужно писать только в текстуру. Вот что я пробовал: Подготовка/отправка данных текстуры в графический процессор: [code]import numpy as np from OpenGL.GL import * from test_frame import Test class ComputeShader: def __init__(self, app, data): self.app = app self.program = app.shader_program.programs['svo_comp'][0] self.data = data self.output = Test(np.zeros(data.shape[0], dtype='uint32'), 0) self.true = False
self.output.bind_as_image() if uniforms: for mesh_uniform in uniforms: mesh_uniform.uploadData()
glDispatchCompute(x_num_groups, y_num_groups, z_num_groups) error = glGetError() if error != GL_NO_ERROR: print(f"OpenGL Error: {error}") glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT) if not self.true:
self.output.get_data() self.true = True
self.output.unbind_as_image() [/code] Здесь мы используем класс Test, который представляет собой упрощенную версию моего класса текстур: [code]from OpenGL.GL import * import numpy as np class Test: def __init__(self, data, binding): self.textRef = glGenTextures(1) self.data = data self.binding = binding glBindTexture(GL_TEXTURE_1D, self.textRef) glTexImage1D(GL_TEXTURE_1D, 0, GL_R32UI, data.shape[0], 0, GL_RED_INTEGER, GL_UNSIGNED_INT, data)
void main(){ uint index = gl_GlobalInvocationID.x; uvec4 value = uvec4(index, 0, 0, 0); imageStore(debug, int(index), value);
} [/code] Обратите внимание, что в классе Test есть оператор печати для извлечения данных, который должен был показывать индекс массива, но он извлекает массив, полный нулей: записать вывод: [0 0 0 ... 0 0 0]
Я пытаюсь взять множество пользовательских структур и положить его на графический процессор, чтобы выполнить некоторую операцию, прежде чем вернуть результат обратно в процессор. В этом примере я использую массив статического размера, но позже я не...
Я создал программу, которую можно было легко реализовать с помощью пользовательских классов и шейдеров.
Затем я добавил простой этап постобработки с использованием вычислительных шейдеров, что привело к сбою тестирования глубины, хотя все остальное...
У меня есть маска и обработанная текстура, которые обнаружил мой коллега по алгоритму. Однако внутри области маски сгенерированная область имеет тяжелый нечеткий слой. Есть ли способ замаскировать текстуру в области, соответствующей исходной...
Я пытаюсь анимировать видео, визуализированное с использованием представления текстуры, анимация работает нормально, но когда я масштабирую текстуру до другого размера, медиаплеер не масштабируется в соответствии с размером текстуры, видео всегда...