File indexing completed on 2024-05-26 04:33:10
0001 /* 0002 * SPDX-FileCopyrightText: 2010-2011 José Luis Vergara <pentalis@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef PHONG_PIXEL_PROCESSOR_H 0008 #define PHONG_PIXEL_PROCESSOR_H 0009 0010 #include <QVector3D> 0011 #include <QTime> 0012 #include <QImage> 0013 #include <QColor> 0014 #include <QList> 0015 #include <QPair> 0016 #include <QMap> 0017 0018 #include "phong_bumpmap_constants.h" 0019 #include "kis_properties_configuration.h" 0020 0021 struct Illuminant 0022 { 0023 QList<qreal> RGBvalue; 0024 QVector3D lightVector; 0025 }; 0026 0027 class PhongPixelProcessor 0028 { 0029 0030 public: 0031 PhongPixelProcessor(quint32 pixelArea, const KisPropertiesConfigurationSP config); 0032 ~PhongPixelProcessor(); 0033 0034 void initialize(const KisPropertiesConfigurationSP config); 0035 void normalizeHeightmap(); 0036 0037 QVector3D reflection_vector; 0038 QVector3D normal_vector; 0039 QVector3D x_vector; 0040 QVector3D y_vector; 0041 QVector3D light_vector; 0042 QVector3D vision_vector; 0043 0044 QVector<double> realheightmap; 0045 0046 ///Ambient light coefficient 0047 qreal Ka; 0048 0049 ///Diffuse light coefficient 0050 qreal Kd; 0051 0052 ///Specular light coefficient 0053 qreal Ks; 0054 0055 ///Shinyness exponent 0056 qreal shiny_exp; 0057 0058 ///Total ambient light 0059 qreal Ia; 0060 0061 ///Total diffuse light 0062 qreal Id; 0063 0064 ///Total specular light 0065 qreal Is; 0066 0067 QVector<quint16> IlluminatePixelFromHeightmap(quint32 posup, quint32 posdown, quint32 posleft, quint32 posright); 0068 QVector<quint16> IlluminatePixel(); 0069 QVector<quint16> IlluminatePixelFromNormalmap(qreal r, qreal g, qreal b); 0070 0071 void setLightVector(QVector3D light_vector); 0072 0073 ///Light sources to use (those disabled in the GUI are not present here) 0074 QList<Illuminant> lightSources; 0075 0076 ///Size of this stuff 0077 quint8 size; 0078 0079 Illuminant fastLight; 0080 Illuminant fastLight2; 0081 0082 bool diffuseLightIsEnabled; 0083 bool specularLightIsEnabled; 0084 0085 private: 0086 quint32 m_pixelArea; 0087 }; 0088 0089 0090 #endif