45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
|
#pragma once
|
||
|
#ifndef IWA_CORRIDORGRADIENTFX_H
|
||
|
#define IWA_CORRIDORGRADIENTFX_H
|
||
|
|
||
|
#include "tfxparam.h"
|
||
|
#include "stdfx.h"
|
||
|
#include "tparamset.h"
|
||
|
|
||
|
struct double3 {
|
||
|
double r, g, b;
|
||
|
};
|
||
|
|
||
|
class Iwa_RainbowFx final : public TStandardZeraryFx {
|
||
|
FX_PLUGIN_DECLARATION(Iwa_RainbowFx)
|
||
|
|
||
|
TPointParamP m_center;
|
||
|
|
||
|
TDoubleParamP m_intensity;
|
||
|
TDoubleParamP m_radius;
|
||
|
TDoubleParamP m_width_scale;
|
||
|
TDoubleParamP m_inside;
|
||
|
TDoubleParamP m_secondary_rainbow;
|
||
|
TBoolParamP m_alpha_rendering;
|
||
|
|
||
|
double getSizePixelAmount(const double val, const TAffine affine);
|
||
|
void buildRanbowColorMap(double3 *core, double3 *wide, double intensity,
|
||
|
double inside, double secondary);
|
||
|
inline double3 angleToColor(double angle, double3 *core, double3 *wide);
|
||
|
|
||
|
template <typename RASTER, typename PIXEL>
|
||
|
void setOutputRaster(const RASTER ras, TDimensionI dim, double3 *outBuf_p);
|
||
|
|
||
|
public:
|
||
|
Iwa_RainbowFx();
|
||
|
|
||
|
bool canHandle(const TRenderSettings &info, double frame) override {
|
||
|
return true;
|
||
|
}
|
||
|
bool doGetBBox(double frame, TRectD &bBox,
|
||
|
const TRenderSettings &ri) override;
|
||
|
void doCompute(TTile &tile, double frame, const TRenderSettings &ri) override;
|
||
|
void getParamUIs(TParamUIConcept *&concepts, int &length) override;
|
||
|
};
|
||
|
|
||
|
#endif
|