void Ui::update() { drawRect(10, 10, 200, 200, "test2.png"); startClip(10, 10, 200, 200); drawRect(20, 20, 120, 120, "dagger/Textures/Dagger_Albedo.png"); endClip(); }
void GradientsHdrCompression::hdrCompression(realType_t maxGradient_p, realType_t minGradient_p, realType_t expGradient_p, bool bRescale01_p, imageType_t &rResultImage_p) const { TimeMessage startHdrCompression("Gradient Domain HDR Compression"); imageType_t li; { TimeMessage startClipValue("Determine clip values for gradients"); imageType_t dx(m_imageDx); imageType_t dy(m_imageDy); // now clip values realType_t minGradientX,maxGradientX; minMaxValImage(dx,minGradientX,maxGradientX); realType_t minGradientY,maxGradientY; minMaxValImage(dy,minGradientY,maxGradientY); realType_t minValue=Min(minGradientX, minGradientY); realType_t maxValue=Max(maxGradientX, maxGradientY); double rangeValue=Max(-minValue, maxValue); realType_t const clipRange=rangeValue*maxGradient_p; realType_t const zeroRange=rangeValue*minGradient_p; startClipValue.Stop(); TimeMessage startClip("Clipping Gradients"); clipImage(dx,-clipRange,clipRange); zeroRangeImage(dx,-zeroRange,zeroRange); clipImage(dy,-clipRange,clipRange); zeroRangeImage(dy,-zeroRange,zeroRange); startClip.Stop(); if(expGradient_p!=1.0){ TimeMessage start("Pow() transformation of gradients"); absPowImage(dx,expGradient_p); absPowImage(dy,expGradient_p); } TimeMessage startLaplace("Computing 2nd derivative"); createLaplaceVonNeumannImage(dx,dy,li); } TimeMessage startSolve("Solving image"); solveImage(li,rResultImage_p); startSolve.Stop(); TimeMessage startRescale("Rescaling image"); if(bRescale01_p){ rResultImage_p.Rescale(0.0,1.0); } else { rResultImage_p.Rescale(m_dMinVal,m_dMaxVal); } }