X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=fft_input.cpp;h=bbc4a5fd4ff44a32d291654c3ff615a4866d9801;hp=76e77d6b8409c79e7b38f6fcb686b7e322f2c73b;hb=eff011224abc5dc81f801f3ea44572287a55bcac;hpb=9e219b96e914b2e5709ba3c3345afdc3cf13a78d diff --git a/fft_input.cpp b/fft_input.cpp index 76e77d6..bbc4a5f 100644 --- a/fft_input.cpp +++ b/fft_input.cpp @@ -19,10 +19,11 @@ FFTInput::FFTInput(unsigned width, unsigned height) fft_height(height), convolve_width(width), convolve_height(height), - pixel_data(NULL) + pixel_data(nullptr) { register_int("fft_width", &fft_width); register_int("fft_height", &fft_height); + register_uniform_sampler2d("tex", &uniform_tex); } FFTInput::~FFTInput() @@ -38,7 +39,7 @@ void FFTInput::set_gl_state(GLuint glsl_program_num, const string& prefix, unsig check_error(); if (texture_num == 0) { - assert(pixel_data != NULL); + assert(pixel_data != nullptr); // Do the FFT. Our FFTs should typically be small enough and // the data changed often enough that FFTW_ESTIMATE should be @@ -66,8 +67,8 @@ void FFTInput::set_gl_state(GLuint glsl_program_num, const string& prefix, unsig // Convert to fp16. fp16_int_t *kernel = new fp16_int_t[fft_width * fft_height * 2]; for (int i = 0; i < fft_width * fft_height; ++i) { - kernel[i * 2 + 0] = fp64_to_fp16(out[i][0]); - kernel[i * 2 + 1] = fp64_to_fp16(out[i][1]); + kernel[i * 2 + 0] = fp32_to_fp16(out[i][0]); + kernel[i * 2 + 1] = fp32_to_fp16(out[i][1]); } // (Re-)upload the texture. @@ -98,13 +99,14 @@ void FFTInput::set_gl_state(GLuint glsl_program_num, const string& prefix, unsig } // Bind it to a sampler. - set_uniform_int(glsl_program_num, prefix, "tex", *sampler_num); + uniform_tex = *sampler_num; ++*sampler_num; } string FFTInput::output_fragment_shader() { - return read_file("flat_input.frag"); + return string("#define FIXUP_SWAP_RB 0\n#define FIXUP_RED_TO_GRAYSCALE 0\n") + + read_file("flat_input.frag"); } void FFTInput::invalidate_pixel_data()