gramods
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
gramods::gmGraphics::YuvDecodeTexture::Impl Struct Reference
Collaboration diagram for gramods::gmGraphics::YuvDecodeTexture::Impl:
Collaboration graph
[legend]

Public Member Functions

void update (size_t frame_number, Eye eye)
 
GLuint getGLTextureID ()
 

Public Attributes

OffscreenRenderTargets render_target
 
RasterProcessor raster_processor
 
GLuint texture_id = 0
 
bool is_setup = false
 
bool is_functional = false
 
std::shared_ptr< Texturetexture
 
Eigen::Matrix3f yuvToRgb
 
Eigen::Vector3f yuvRange = Eigen::Vector3f(1.f, 0.436f, 0.615f)
 

Static Public Attributes

static const std::string fragment_code
 

Member Data Documentation

◆ fragment_code

const std::string gramods::gmGraphics::YuvDecodeTexture::Impl::fragment_code
static
Initial value:
=
R"lang=glsl(
#version 330 core
uniform sampler2D tex;
uniform mat3 yuvToRgb;
uniform vec3 yuvRange;
in vec2 position;
out vec4 fragColor;
void main() {
ivec2 size = textureSize(tex, 0) * ivec2(2, 1);
ivec2 pix = ivec2((0.5 + 0.5 * position) * size);
vec4 yuyv = texelFetch(tex, pix / ivec2(2, 1), 0);
vec3 yuv;
if (pix.x % 2 == 0) {
yuv = yuvRange * (yuyv.xyw * vec3(1, 2, 2) - vec3(0, 1, 1));
} else {
yuv = yuvRange * (yuyv.zyw * vec3(1, 2, 2) - vec3(0, 1, 1));
}
vec3 rgb = yuvToRgb * yuv;
fragColor = vec4(rgb, 1);
}
)lang=glsl"

◆ yuvToRgb

Eigen::Matrix3f gramods::gmGraphics::YuvDecodeTexture::Impl::yuvToRgb
Initial value:
= (Eigen::Matrix3f() <<
1.f, 0.00000f, 1.13983f,
1.f, -0.39465f, -0.58060f,
1.f, 2.03211f, 0.00000f).finished()

The documentation for this struct was generated from the following file: