X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.h;h=a36840d314876e88185ef1f69bf32b537c465f24;hp=992fb58da2e172969b178c3ac012746ab4673fe9;hb=d7def3f9e42e72566d7aedd52ffdeb5851da8314;hpb=206d6ba316f94fdc3b7cbd16f23cdcaeb370ad9f diff --git a/effect_chain.h b/effect_chain.h index 992fb58..a36840d 100644 --- a/effect_chain.h +++ b/effect_chain.h @@ -153,6 +153,9 @@ private: // (in the same phase) have one_to_one_sampling() set. bool one_to_one_sampling; + // Same, for strong_one_to_one_sampling(). + bool strong_one_to_one_sampling; + friend class EffectChain; }; @@ -181,6 +184,7 @@ struct Phase { // Whether this phase is compiled as a compute shader, ie., the last effect is // marked as one. bool is_compute_shader; + Node *compute_shader_node; // If , which image unit the output buffer is bound to. // This is used as source for a Uniform below. @@ -188,6 +192,7 @@ struct Phase { // These are used in transforming from unnormalized to normalized coordinates // in compute shaders. + int uniform_output_size[2]; Point2D inv_output_size, output_texcoord_adjust; // Identifier used to create unique variables in GLSL. @@ -199,6 +204,7 @@ struct Phase { std::vector> uniforms_sampler2d; std::vector> uniforms_bool; std::vector> uniforms_int; + std::vector> uniforms_ivec2; std::vector> uniforms_float; std::vector> uniforms_vec2; std::vector> uniforms_vec3; @@ -400,7 +406,10 @@ public: // All destination textures must be exactly of size x , // and must either come from the same ResourcePool the effect uses, or outlive // the EffectChain (otherwise, we could be allocating FBOs that end up being - // stale). width and height can not be zero. + // stale). Textures must also have valid state; in particular, they must either + // be mipmap complete or have a non-mipmapped minification mode. + // + // width and height can not be zero. struct DestinationTexture { GLuint texnum; GLenum format;