Updated GLI version used in GLM tests
This commit is contained in:
72
test/external/gli/sampler_cube_array.hpp
vendored
Normal file
72
test/external/gli/sampler_cube_array.hpp
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
/// @brief Include to sample cube map array textures.
|
||||
/// @file gli/sampler_cube_array.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sampler.hpp"
|
||||
#include "texture_cube_array.hpp"
|
||||
#include "core/mipmaps_compute.hpp"
|
||||
#include "core/convert_func.hpp"
|
||||
|
||||
namespace gli
|
||||
{
|
||||
/// Cube map array texture sampler
|
||||
/// @tparam T Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions.
|
||||
/// @tparam P Precision in term of ULPs
|
||||
template <typename T, precision P = defaultp>
|
||||
class sampler_cube_array : public sampler
|
||||
{
|
||||
private:
|
||||
typedef typename detail::interpolate<T>::type interpolate_type;
|
||||
|
||||
public:
|
||||
typedef texture_cube_array texture_type;
|
||||
typedef typename texture_type::size_type size_type;
|
||||
typedef typename texture_type::extent_type extent_type;
|
||||
typedef interpolate_type level_type;
|
||||
typedef tvec2<interpolate_type, P> normalized_type;
|
||||
typedef tvec4<T, P> texel_type;
|
||||
|
||||
sampler_cube_array(texture_type const& Texture, wrap Wrap, filter Mip = FILTER_NEAREST, filter Min = FILTER_NEAREST, texel_type const& BorderColor = texel_type(0, 0, 0, 1));
|
||||
|
||||
/// Access the sampler texture object
|
||||
texture_type const& operator()() const;
|
||||
|
||||
/// Fetch a texel from the sampler texture
|
||||
texel_type texel_fetch(extent_type const& TexelCoord, size_type layer, size_type Face, size_type Level) const;
|
||||
|
||||
/// Write a texel in the sampler texture
|
||||
void texel_write(extent_type const& TexelCoord, size_type layer, size_type Face, size_type Level, texel_type const& Texel);
|
||||
|
||||
/// Clear the sampler texture with a uniform texel
|
||||
void clear(texel_type const& Texel);
|
||||
|
||||
/// Sample the sampler texture at a specific level
|
||||
texel_type texture_lod(normalized_type const& SampleCoord, size_type layer, size_type Face, level_type Level) const;
|
||||
|
||||
/// Generate all the mipmaps of the sampler texture from the texture base level
|
||||
void generate_mipmaps(filter Minification);
|
||||
|
||||
/// Generate the mipmaps of the sampler texture from the texture base level to the texture max level included
|
||||
void generate_mipmaps(size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, filter Minification);
|
||||
|
||||
private:
|
||||
typedef typename detail::convert<texture_type, T, P>::func convert_type;
|
||||
typedef typename detail::convert<texture_type, T, P>::fetchFunc fetch_type;
|
||||
typedef typename detail::convert<texture_type, T, P>::writeFunc write_type;
|
||||
typedef typename detail::filterBase<detail::DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type>::filterFunc filter_type;
|
||||
|
||||
texture_type Texture;
|
||||
convert_type Convert;
|
||||
texel_type BorderColor;
|
||||
filter_type Filter;
|
||||
};
|
||||
|
||||
typedef sampler_cube_array<float> fsamplerCubeArray;
|
||||
typedef sampler_cube_array<double> dsamplerCubeArray;
|
||||
typedef sampler_cube_array<unsigned int> usamplerCubeArray;
|
||||
typedef sampler_cube_array<int> isamplerCubeArray;
|
||||
|
||||
}//namespace gli
|
||||
|
||||
#include "./core/sampler_cube_array.inl"
|
||||
Reference in New Issue
Block a user