У меня есть текстура, которая может содержать произвольные данные. Я хочу попробовать эту текстуру с помощью бикубической интерполяции (билинейная недостаточно гладкая). Здесь пример данных: < /p>
У меня есть текстура, которая может содержать произвольные данные. Я хочу попробовать эту текстуру с помощью бикубической интерполяции (билинейная недостаточно гладкая). Здесь пример данных: < /p> [code]struct Data { Data operator+(const Data& val) const; bool operator==(const Data& other); bool operator!=(const Data& other); Data& operator=(const Data& other); //... private: float m_values[16]; }; < /code> Все необходимые операторы предоставляются. Я видел этот ответ, но он показывает, как сделать бикубическую интерполяцию VEC4. Я не знаю, как я могу расширить это, чтобы поддержать произвольные данные.template inline T TImage::BilinearSampling(const Math::Vec2& texCoord) const { const uint32_t widthMinusOne = getWidth() - 1u; const uint32_t heightMinusOne = getHeight() - 1u;
// The sampling values. const T V00 = getPixelFromPosition(C00); const T V10 = getPixelFromPosition(C10); const T V01 = getPixelFromPosition(C01); const T V11 = getPixelFromPosition(C11);
// Perform the interpolation. const auto lerp = [](T t1, T t2, float t3) { return t1 + (t2 - t1) * t3; };
const T p0 = lerp(V00, V01, weights.y); const T p1 = lerp(V10, V11, weights.y);
return lerp(p0, p1, weights.x); } [/code] [b] так бикубик будет выглядеть так: [/b] [code]template inline T TImage::BicubicSampling(const Math::Vec2& texCoord) const { // Some code } [/code] Как реализовать это bicubicsampling ?