X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=fft_input.cpp;h=bbc4a5fd4ff44a32d291654c3ff615a4866d9801;hp=c88a7c4b12fe9947cc6cd2a43f3b4ff0ba2d6e01;hb=eff011224abc5dc81f801f3ea44572287a55bcac;hpb=5ee3e6bb0bf100d57a06911b89c3a0a0dc49e2be diff --git a/fft_input.cpp b/fft_input.cpp index c88a7c4..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,7 +99,7 @@ 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; }