Krita Source Code Documentation
Loading...
Searching...
No Matches
ocio_display_filter_vfx2021.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2012 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef OCIO_DISPLAY_FILTER_H
9#define OCIO_DISPLAY_FILTER_H
10
11#include <vector>
12
13#include <QOpenGLShaderProgram>
14
15#include <OpenColorIO.h>
16#include <OpenColorTransforms.h>
17#include <OpenColorTypes.h>
18
19#include <kis_display_filter.h>
21
22namespace OCIO = OCIO_NAMESPACE;
23
25
27public:
28 KisTextureUniform(const QString &name, const OCIO::GpuShaderDesc::UniformData &data)
29 : m_name(name)
30 , m_data(data)
31 {
32 }
33
34 QString m_name;
35 OCIO::GpuShaderDesc::UniformData m_data;
36
37private:
39};
40
42 unsigned m_uid = -1;
45 unsigned m_type = -1;
46
47 KisTextureEntry(unsigned uid, const QString &textureName, const QString &samplerName, unsigned type)
48 : m_uid(uid)
49 , m_textureName(textureName)
50 , m_samplerName(samplerName)
51 , m_type(type)
52 {
53 }
54};
55
57{
58 Q_OBJECT
59public:
60 explicit OcioDisplayFilter(KisExposureGammaCorrectionInterface *interface, QObject *parent = 0);
62
63 void filter(quint8 *pixels, quint32 numPixels) override;
64 void approximateInverseTransformation(quint8 *pixels, quint32 numPixels) override;
65 void approximateForwardTransformation(quint8 *pixels, quint32 numPixels) override;
66 bool useInternalColorManagement() const override;
69
70 bool updateShader() override;
71
72 template<class F>
73 bool updateShaderImpl(F *f);
74
75 void setupTextures(GLFunctions *f, QOpenGLShaderProgram *program) const override;
76
78
79 QString program() const override;
80
82
83 OCIO::ConstConfigRcPtr config;
84
85 const char *inputColorSpaceName;
86 const char *displayDevice;
87 const char *view;
88 const char *look;
90 double exposure;
91 double gamma;
92 double blackPoint;
93 double whitePoint;
95
96private:
97 OCIO::ConstProcessorRcPtr m_processor;
98 OCIO::ConstProcessorRcPtr m_reverseApproximationProcessor;
99 OCIO::ConstProcessorRcPtr m_forwardApproximationProcessor;
100
101 OCIO::ConstCPUProcessorRcPtr m_processorCPU;
102 OCIO::ConstCPUProcessorRcPtr m_reverseApproximationProcessorCPU;
103 OCIO::ConstCPUProcessorRcPtr m_forwardApproximationProcessorCPU;
104
106
108
109 QString m_program;
110 std::vector<KisTextureEntry> m_lut3dTexIDs;
111 QString m_lut3dcacheid;
112 QString m_shadercacheid;
113 std::vector<KisTextureUniform> m_lut3dUniforms;
114
115 bool m_shaderDirty;
116};
117
118#endif // OCIO_DISPLAY_FILTER_H
float value(const T *src, size_t ch)
The KisDisplayFilter class is the base class for filters that are applied by the canvas to the projec...
std::vector< KisTextureUniform > m_lut3dUniforms
void setupTextures(GLFunctions *f, QOpenGLShaderProgram *program) const override
void approximateInverseTransformation(quint8 *pixels, quint32 numPixels) override
bool updateShaderImpl(F *f)
OCIO::ConstConfigRcPtr config
OCIO::ConstCPUProcessorRcPtr m_reverseApproximationProcessorCPU
OCIO::ConstProcessorRcPtr m_processor
KisExposureGammaCorrectionInterface * m_interface
void approximateForwardTransformation(quint8 *pixels, quint32 numPixels) override
virtual QString program() const override
OCIO_CHANNEL_SWIZZLE swizzle
OCIO::ConstProcessorRcPtr m_reverseApproximationProcessor
bool lockCurrentColorVisualRepresentation() const override
OCIO::ConstCPUProcessorRcPtr m_processorCPU
OcioDisplayFilter(KisExposureGammaCorrectionInterface *interface, QObject *parent=0)
OCIO::ConstProcessorRcPtr m_forwardApproximationProcessor
OCIO::ConstCPUProcessorRcPtr m_forwardApproximationProcessorCPU
void filter(quint8 *pixels, quint32 numPixels) override
bool updateShader() override
bool useInternalColorManagement() const override
KisExposureGammaCorrectionInterface * correctionInterface() const override
void setLockCurrentColorVisualRepresentation(bool value)
std::vector< KisTextureEntry > m_lut3dTexIDs
KisTextureEntry(unsigned uid, const QString &textureName, const QString &samplerName, unsigned type)
OCIO::GpuShaderDesc::UniformData m_data
KisTextureUniform()=delete
KisTextureUniform(const QString &name, const OCIO::GpuShaderDesc::UniformData &data)