#include <fleximage.h>
Public Member Functions | |
FlexImageFilm (int xres, int yres) | |
FlexImageFilm (int xres, int yres, Filter *filt, const float crop[4], const string &filename1, bool premult, int wI, int dI, bool w_tonemapped_EXR, bool w_untonemapped_EXR, bool w_tonemapped_IGI, bool w_untonemapped_IGI, bool w_tonemapped_TGA, bool w_resume_FLM, bool restart_resume_FLM, int haltspp, float reinhard_prescale, float reinhard_postscale, float reinhard_burn, float g, int reject_warmup, bool debugmode) | |
~FlexImageFilm () | |
int | RequestBuffer (BufferType type, BufferOutputConfig output, const string &filePostfix) |
void | CreateBuffers () |
void | GetSampleExtent (int *xstart, int *xend, int *ystart, int *yend) const |
void | AddSample (float sX, float sY, const XYZColor &L, float alpha, int buf_id=0, int bufferGroup=0) |
void | AddSampleCount (float count, int bufferGroup=0) |
void | WriteImage (ImageType type) |
void | updateFrameBuffer () |
unsigned char * | getFrameBuffer () |
void | createFrameBuffer () |
float | getldrDisplayInterval () |
void | TransmitFilm (std::basic_ostream< char > &stream, int buf_id=0, int bufferGroup=0, bool clearBuffer=true) |
void | UpdateFilm (Scene *scene, std::basic_istream< char > &stream, int buf_id=0, int bufferGroup=0) |
Static Public Member Functions | |
static Film * | CreateFilm (const ParamSet ¶ms, Filter *filter) |
Private Member Functions | |
void | FlushSampleArray () |
void | MergeSampleArray () |
void | WriteImage2 (ImageType type, float *rgb, float *alpha, string postfix) |
void | WriteTGAImage (float *rgb, float *alpha, const string &filename) |
void | WriteEXRImage (float *rgb, float *alpha, const string &filename) |
void | WriteIGIImage (float *rgb, float *alpha, const string &filename) |
void | WriteResumeFilm (const string &filename) |
void | ScaleOutput (float *rgb, float *alpha, float *scale) |
Private Attributes | |
Filter * | filter |
int | writeInterval |
int | displayInterval |
string | filename |
bool | premultiplyAlpha |
bool | buffersInited |
float | cropWindow [4] |
float * | filterTable |
int | xPixelStart |
int | yPixelStart |
int | xPixelCount |
int | yPixelCount |
ParamSet | toneParams |
float | gamma |
float | reject_warmup_samples |
bool | writeTmExr |
bool | writeUtmExr |
bool | writeTmIgi |
bool | writeUtmIgi |
bool | writeTmTga |
bool | writeResumeFlm |
bool | restartResumeFlm |
unsigned char * | framebuffer |
boost::xtime | lastWriteImageTime |
bool | debug_mode |
float * | factor |
std::vector< BufferConfig > | bufferConfigs |
std::vector< BufferGroup > | bufferGroups |
boost::recursive_mutex | addSampleMutex |
float | maxY |
u_int | warmupSamples |
bool | warmupComplete |
ArrSample * | SampleArrptr |
ArrSample * | SampleArr2ptr |
boost::recursive_mutex | arrSampleMutex |
int | curSampleArrId |
int | curSampleArr2Id |
int | maxSampleArrId |
boost::recursive_mutex | imageMutex |
Definition at line 211 of file fleximage.h.
lux::FlexImageFilm::FlexImageFilm | ( | int | xres, | |
int | yres | |||
) | [inline] |
Definition at line 214 of file fleximage.h.
Referenced by CreateFilm().
FlexImageFilm::FlexImageFilm | ( | int | xres, | |
int | yres, | |||
Filter * | filt, | |||
const float | crop[4], | |||
const string & | filename1, | |||
bool | premult, | |||
int | wI, | |||
int | dI, | |||
bool | w_tonemapped_EXR, | |||
bool | w_untonemapped_EXR, | |||
bool | w_tonemapped_IGI, | |||
bool | w_untonemapped_IGI, | |||
bool | w_tonemapped_TGA, | |||
bool | w_resume_FLM, | |||
bool | restart_resume_FLM, | |||
int | haltspp, | |||
float | reinhard_prescale, | |||
float | reinhard_postscale, | |||
float | reinhard_burn, | |||
float | g, | |||
int | reject_warmup, | |||
bool | debugmode | |||
) |
Definition at line 57 of file fleximage.cpp.
References lux::ParamSet::AddFloat(), Ceil2Int(), cropWindow, curSampleArr2Id, curSampleArrId, lux::Filter::Evaluate(), filter, FILTER_TABLE_SIZE, filterTable, lastWriteImageTime, cimg_library::cimg::max(), maxSampleArrId, maxY, memcpy(), reject_warmup_samples, SampleArr2ptr, SampleArrptr, toneParams, warmupComplete, warmupSamples, xPixelCount, xPixelStart, lux::Film::xResolution, lux::Filter::xWidth, yPixelCount, yPixelStart, lux::Film::yResolution, and lux::Filter::yWidth.
lux::FlexImageFilm::~FlexImageFilm | ( | ) | [inline] |
Definition at line 224 of file fleximage.h.
References factor, and framebuffer.
void FlexImageFilm::AddSample | ( | float | sX, | |
float | sY, | |||
const XYZColor & | L, | |||
float | alpha, | |||
int | buf_id = 0 , |
|||
int | bufferGroup = 0 | |||
) | [virtual] |
Implements lux::Film.
Definition at line 159 of file fleximage.cpp.
References addSampleMutex, lux::ArrSample::alpha, arrSampleMutex, lux::BUF_FRAMEBUFFER, lux::ArrSample::buf_id, lux::BUF_TYPE_PER_SCREEN, lux::ArrSample::bufferGroup, bufferGroups, CreateBuffers(), curSampleArr2Id, curSampleArrId, lux::IMAGE_FILEOUTPUT, lastWriteImageTime, maxSampleArrId, MergeSampleArray(), RequestBuffer(), SampleArr2ptr, SampleArrptr, lux::ArrSample::sX, lux::ArrSample::sY, WriteImage(), writeInterval, and lux::ArrSample::xyz.
void lux::FlexImageFilm::AddSampleCount | ( | float | count, | |
int | bufferGroup = 0 | |||
) | [inline, virtual] |
Reimplemented from lux::Film.
Definition at line 234 of file fleximage.h.
References bufferGroups, lux::Film::enoughSamplePerPixel, lux::Film::haltSamplePerPixel, and lux::Film::invSamplePerPass.
void FlexImageFilm::CreateBuffers | ( | ) | [virtual] |
Reimplemented from lux::Film.
Definition at line 134 of file fleximage.cpp.
References bufferConfigs, bufferGroups, filename, LUX_INFO, LUX_NOERROR, luxError, restartResumeFlm, UpdateFilm(), writeResumeFlm, xPixelCount, and yPixelCount.
Referenced by AddSample(), and FlushSampleArray().
Definition at line 773 of file fleximage.cpp.
References Clamp(), cimg_library::crop(), debug_mode, displayInterval, filename, lux::ParamSet::FindFloat(), lux::ParamSet::FindOneBool(), lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), lux::ParamSet::FindOneString(), FlexImageFilm(), gamma, cimg_library::cimg::max(), cimg_library::cimg::min(), premultiplyAlpha, and writeInterval.
void FlexImageFilm::createFrameBuffer | ( | ) |
Definition at line 469 of file fleximage.cpp.
References framebuffer, xPixelCount, and yPixelCount.
Referenced by getFrameBuffer(), and updateFrameBuffer().
void FlexImageFilm::FlushSampleArray | ( | ) | [private] |
Definition at line 219 of file fleximage.cpp.
References addSampleMutex, arrSampleMutex, lux::BUF_FRAMEBUFFER, lux::BUF_TYPE_PER_SCREEN, bufferGroups, CreateBuffers(), curSampleArr2Id, curSampleArrId, MergeSampleArray(), RequestBuffer(), SampleArr2ptr, and SampleArrptr.
Referenced by WriteImage().
unsigned char * FlexImageFilm::getFrameBuffer | ( | ) | [virtual] |
Implements lux::Film.
Definition at line 487 of file fleximage.cpp.
References createFrameBuffer(), and framebuffer.
float lux::FlexImageFilm::getldrDisplayInterval | ( | ) | [inline, virtual] |
void FlexImageFilm::GetSampleExtent | ( | int * | xstart, | |
int * | xend, | |||
int * | ystart, | |||
int * | yend | |||
) | const [virtual] |
Implements lux::Film.
Definition at line 118 of file fleximage.cpp.
References filter, Floor2Int(), xPixelCount, xPixelStart, lux::Filter::xWidth, yPixelCount, yPixelStart, and lux::Filter::yWidth.
void FlexImageFilm::MergeSampleArray | ( | ) | [private] |
Definition at line 247 of file fleximage.cpp.
References lux::Buffer::Add(), lux::ArrSample::alpha, lux::ArrSample::buf_id, lux::ArrSample::bufferGroup, bufferGroups, Ceil2Int(), curSampleArr2Id, debug_mode, filter, FILTER_TABLE_SIZE, filterTable, Floor2Int(), lux::BufferGroup::getBuffer(), INFINITY, lux::Filter::invXWidth, lux::Filter::invYWidth, lux::Color::IsNaN(), LUX_LIMIT, LUX_WARNING, luxError, cimg_library::cimg::max(), maxY, cimg_library::cimg::min(), reject_warmup_samples, SampleArr2ptr, lux::ArrSample::sX, lux::ArrSample::sY, warmupComplete, warmupSamples, xPixelCount, xPixelStart, lux::Filter::xWidth, lux::ArrSample::xyz, lux::XYZColor::y(), yPixelCount, yPixelStart, and lux::Filter::yWidth.
Referenced by AddSample(), and FlushSampleArray().
int FlexImageFilm::RequestBuffer | ( | BufferType | type, | |
BufferOutputConfig | output, | |||
const string & | filePostfix | |||
) | [virtual] |
Reimplemented from lux::Film.
Definition at line 127 of file fleximage.cpp.
References bufferConfigs.
Referenced by AddSample(), and FlushSampleArray().
void FlexImageFilm::ScaleOutput | ( | float * | rgb, | |
float * | alpha, | |||
float * | scale | |||
) | [private] |
Definition at line 395 of file fleximage.cpp.
References xPixelCount, and yPixelCount.
Referenced by WriteImage().
void FlexImageFilm::TransmitFilm | ( | std::basic_ostream< char > & | stream, | |
int | buf_id = 0 , |
|||
int | bufferGroup = 0 , |
|||
bool | clearBuffer = true | |||
) |
Definition at line 632 of file fleximage.cpp.
References addSampleMutex, lux::Pixel::alpha, bufferGroups, lux::Color::c, lux::Buffer::Clear(), lux::BufferGroup::getBuffer(), IsLittleEndian(), lux::Pixel::L, LUX_INFO, LUX_NOERROR, LUX_SEVERE, LUX_SYSTEM, luxError, lux::BufferGroup::numberOfSamples, lux::Buffer::pixels, BlockedArray< T, logBlockSize >::uSize(), BlockedArray< T, logBlockSize >::vSize(), lux::Pixel::weightSum, and writeLittleEndianFloat().
Referenced by lux::Context::transmitFilm(), and WriteResumeFilm().
void FlexImageFilm::UpdateFilm | ( | Scene * | scene, | |
std::basic_istream< char > & | stream, | |||
int | buf_id = 0 , |
|||
int | bufferGroup = 0 | |||
) |
Definition at line 699 of file fleximage.cpp.
References addSampleMutex, lux::Pixel::alpha, bufferGroups, lux::Color::c, lux::BufferGroup::getBuffer(), IsLittleEndian(), lux::Pixel::L, LUX_ERROR, LUX_INFO, LUX_NOERROR, LUX_SYSTEM, luxError, lux::BufferGroup::numberOfSamples, lux::Scene::numberOfSamplesFromNetwork, lux::Buffer::pixels, readLittleEndianFloat(), BlockedArray< T, logBlockSize >::uSize(), BlockedArray< T, logBlockSize >::vSize(), lux::Pixel::weightSum, lux::Buffer::xPixelCount, and lux::Buffer::yPixelCount.
Referenced by CreateBuffers(), and lux::RenderFarm::updateFilm().
void FlexImageFilm::updateFrameBuffer | ( | ) | [virtual] |
Implements lux::Film.
Definition at line 479 of file fleximage.cpp.
References createFrameBuffer(), framebuffer, lux::IMAGE_FRAMEBUFFER, and WriteImage().
void FlexImageFilm::WriteEXRImage | ( | float * | rgb, | |
float * | alpha, | |||
const string & | filename | |||
) | [private] |
Definition at line 563 of file fleximage.cpp.
References LUX_INFO, LUX_NOERROR, luxError, lux::WriteRGBAImageFloat(), xPixelCount, xPixelStart, lux::Film::xResolution, yPixelCount, yPixelStart, and lux::Film::yResolution.
Referenced by WriteImage2().
void FlexImageFilm::WriteIGIImage | ( | float * | rgb, | |
float * | alpha, | |||
const string & | filename | |||
) | [private] |
Definition at line 573 of file fleximage.cpp.
References LUX_INFO, LUX_NOERROR, luxError, lux::WriteIgiImage(), xPixelCount, xPixelStart, lux::Film::xResolution, yPixelCount, yPixelStart, and lux::Film::yResolution.
Referenced by WriteImage2().
void FlexImageFilm::WriteImage | ( | ImageType | type | ) | [virtual] |
Implements lux::Film.
Definition at line 410 of file fleximage.cpp.
References lux::BUF_FRAMEBUFFER, lux::BUF_RAWDATA, lux::BUF_STANDALONE, bufferConfigs, bufferGroups, lux::Scene::camera, factor, FlushSampleArray(), lux::Camera::GetFlux2RadianceFactors(), imageMutex, lux::SurfaceIntegrator::IsFluxBased(), ScaleOutput(), lux::Film::scene, lux::Scene::surfaceIntegrator, WriteImage2(), xPixelCount, and yPixelCount.
Referenced by AddSample(), and updateFrameBuffer().
void FlexImageFilm::WriteImage2 | ( | ImageType | type, | |
float * | rgb, | |||
float * | alpha, | |||
string | postfix | |||
) | [private] |
Definition at line 337 of file fleximage.cpp.
References lux::ApplyImagingPipeline(), filename, framebuffer, gamma, lux::IMAGE_FILEOUTPUT, lux::IMAGE_FRAMEBUFFER, toneParams, WriteEXRImage(), WriteIGIImage(), WriteResumeFilm(), writeResumeFlm, WriteTGAImage(), writeTmExr, writeTmIgi, writeTmTga, writeUtmExr, writeUtmIgi, xPixelCount, lux::Film::xResolution, yPixelCount, and lux::Film::yResolution.
Referenced by WriteImage().
void FlexImageFilm::WriteResumeFilm | ( | const string & | filename | ) | [private] |
Definition at line 495 of file fleximage.cpp.
References LUX_INFO, LUX_NOERROR, LUX_SEVERE, LUX_SYSTEM, luxError, and TransmitFilm().
Referenced by WriteImage2().
void FlexImageFilm::WriteTGAImage | ( | float * | rgb, | |
float * | alpha, | |||
const string & | filename | |||
) | [private] |
Definition at line 515 of file fleximage.cpp.
References cimg_library::cimg::fclose(), cimg_library::cimg::fopen(), LUX_INFO, LUX_NOERROR, LUX_SEVERE, LUX_SYSTEM, luxError, xPixelCount, lux::Film::xResolution, yPixelCount, and lux::Film::yResolution.
Referenced by WriteImage2().
boost::recursive_mutex lux::FlexImageFilm::addSampleMutex [mutable, private] |
Definition at line 300 of file fleximage.h.
Referenced by AddSample(), FlushSampleArray(), TransmitFilm(), and UpdateFilm().
boost::recursive_mutex lux::FlexImageFilm::arrSampleMutex [mutable, private] |
Definition at line 310 of file fleximage.h.
Referenced by AddSample(), and FlushSampleArray().
std::vector<BufferConfig> lux::FlexImageFilm::bufferConfigs [private] |
Definition at line 297 of file fleximage.h.
Referenced by CreateBuffers(), RequestBuffer(), and WriteImage().
std::vector<BufferGroup> lux::FlexImageFilm::bufferGroups [private] |
Definition at line 298 of file fleximage.h.
Referenced by AddSample(), AddSampleCount(), CreateBuffers(), FlushSampleArray(), MergeSampleArray(), TransmitFilm(), UpdateFilm(), and WriteImage().
bool lux::FlexImageFilm::buffersInited [private] |
Definition at line 281 of file fleximage.h.
float lux::FlexImageFilm::cropWindow[4] [private] |
Definition at line 282 of file fleximage.h.
Referenced by FlexImageFilm().
int lux::FlexImageFilm::curSampleArr2Id [private] |
Definition at line 311 of file fleximage.h.
Referenced by AddSample(), FlexImageFilm(), FlushSampleArray(), and MergeSampleArray().
int lux::FlexImageFilm::curSampleArrId [private] |
Definition at line 311 of file fleximage.h.
Referenced by AddSample(), FlexImageFilm(), and FlushSampleArray().
bool lux::FlexImageFilm::debug_mode [private] |
Definition at line 294 of file fleximage.h.
Referenced by CreateFilm(), and MergeSampleArray().
int lux::FlexImageFilm::displayInterval [private] |
Definition at line 279 of file fleximage.h.
Referenced by CreateFilm(), and getldrDisplayInterval().
float* lux::FlexImageFilm::factor [private] |
Definition at line 295 of file fleximage.h.
Referenced by WriteImage(), and ~FlexImageFilm().
string lux::FlexImageFilm::filename [private] |
Definition at line 280 of file fleximage.h.
Referenced by CreateBuffers(), CreateFilm(), and WriteImage2().
Filter* lux::FlexImageFilm::filter [private] |
Definition at line 277 of file fleximage.h.
Referenced by FlexImageFilm(), GetSampleExtent(), and MergeSampleArray().
float * lux::FlexImageFilm::filterTable [private] |
Definition at line 282 of file fleximage.h.
Referenced by FlexImageFilm(), and MergeSampleArray().
unsigned char* lux::FlexImageFilm::framebuffer [private] |
Definition at line 289 of file fleximage.h.
Referenced by createFrameBuffer(), getFrameBuffer(), updateFrameBuffer(), WriteImage2(), and ~FlexImageFilm().
float lux::FlexImageFilm::gamma [private] |
Definition at line 285 of file fleximage.h.
Referenced by CreateFilm(), and WriteImage2().
boost::recursive_mutex lux::FlexImageFilm::imageMutex [mutable, private] |
Definition at line 314 of file fleximage.h.
Referenced by WriteImage().
boost::xtime lux::FlexImageFilm::lastWriteImageTime [private] |
Definition at line 292 of file fleximage.h.
Referenced by AddSample(), and FlexImageFilm().
int lux::FlexImageFilm::maxSampleArrId [private] |
Definition at line 311 of file fleximage.h.
Referenced by AddSample(), and FlexImageFilm().
float lux::FlexImageFilm::maxY [private] |
Definition at line 302 of file fleximage.h.
Referenced by FlexImageFilm(), and MergeSampleArray().
bool lux::FlexImageFilm::premultiplyAlpha [private] |
Definition at line 281 of file fleximage.h.
Referenced by CreateFilm().
float lux::FlexImageFilm::reject_warmup_samples [private] |
Definition at line 286 of file fleximage.h.
Referenced by FlexImageFilm(), and MergeSampleArray().
bool lux::FlexImageFilm::restartResumeFlm [private] |
Definition at line 287 of file fleximage.h.
Referenced by CreateBuffers().
ArrSample* lux::FlexImageFilm::SampleArr2ptr [private] |
Definition at line 306 of file fleximage.h.
Referenced by AddSample(), FlexImageFilm(), FlushSampleArray(), and MergeSampleArray().
ArrSample* lux::FlexImageFilm::SampleArrptr [private] |
Definition at line 305 of file fleximage.h.
Referenced by AddSample(), FlexImageFilm(), and FlushSampleArray().
ParamSet lux::FlexImageFilm::toneParams [private] |
Definition at line 284 of file fleximage.h.
Referenced by FlexImageFilm(), and WriteImage2().
bool lux::FlexImageFilm::warmupComplete [private] |
Definition at line 304 of file fleximage.h.
Referenced by FlexImageFilm(), and MergeSampleArray().
u_int lux::FlexImageFilm::warmupSamples [private] |
Definition at line 303 of file fleximage.h.
Referenced by FlexImageFilm(), and MergeSampleArray().
int lux::FlexImageFilm::writeInterval [private] |
Definition at line 278 of file fleximage.h.
Referenced by AddSample(), and CreateFilm().
bool lux::FlexImageFilm::writeResumeFlm [private] |
Definition at line 287 of file fleximage.h.
Referenced by CreateBuffers(), and WriteImage2().
bool lux::FlexImageFilm::writeTmExr [private] |
Definition at line 287 of file fleximage.h.
Referenced by WriteImage2().
bool lux::FlexImageFilm::writeTmIgi [private] |
Definition at line 287 of file fleximage.h.
Referenced by WriteImage2().
bool lux::FlexImageFilm::writeTmTga [private] |
Definition at line 287 of file fleximage.h.
Referenced by WriteImage2().
bool lux::FlexImageFilm::writeUtmExr [private] |
Definition at line 287 of file fleximage.h.
Referenced by WriteImage2().
bool lux::FlexImageFilm::writeUtmIgi [private] |
Definition at line 287 of file fleximage.h.
Referenced by WriteImage2().
int lux::FlexImageFilm::xPixelCount [private] |
Definition at line 283 of file fleximage.h.
Referenced by CreateBuffers(), createFrameBuffer(), FlexImageFilm(), GetSampleExtent(), MergeSampleArray(), ScaleOutput(), WriteEXRImage(), WriteIGIImage(), WriteImage(), WriteImage2(), and WriteTGAImage().
int lux::FlexImageFilm::xPixelStart [private] |
Definition at line 283 of file fleximage.h.
Referenced by FlexImageFilm(), GetSampleExtent(), MergeSampleArray(), WriteEXRImage(), and WriteIGIImage().
int lux::FlexImageFilm::yPixelCount [private] |
Definition at line 283 of file fleximage.h.
Referenced by CreateBuffers(), createFrameBuffer(), FlexImageFilm(), GetSampleExtent(), MergeSampleArray(), ScaleOutput(), WriteEXRImage(), WriteIGIImage(), WriteImage(), WriteImage2(), and WriteTGAImage().
int lux::FlexImageFilm::yPixelStart [private] |
Definition at line 283 of file fleximage.h.
Referenced by FlexImageFilm(), GetSampleExtent(), MergeSampleArray(), WriteEXRImage(), and WriteIGIImage().