00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "regulardata.h"
00025 #include "error.h"
00026 #include "dynload.h"
00027
00028 using namespace lux;
00029
00030
00031 Texture<float> * RegularDataTexture::CreateFloatTexture(const Transform &tex2world,
00032 const TextureParams &tp) {
00033
00034 tp.FindFloat("start", 380.f);
00035 tp.FindFloat("end", 720.f);
00036 int dataCount = 0;
00037 tp.FindFloats("data", &dataCount);
00038 if (dataCount < 1) {
00039 luxError(LUX_MISSINGDATA, LUX_ERROR, "No data in regulardata texture");
00040 }
00041 return new RegularDataFloatTexture<float>(1.f);
00042 }
00043
00044 Texture<SWCSpectrum> * RegularDataTexture::CreateSWCSpectrumTexture(const Transform &tex2world,
00045 const TextureParams &tp) {
00046 float start = tp.FindFloat("start", 380.f);
00047 float end = tp.FindFloat("end", 720.f);
00048 int dataCount = 0;
00049 const float *data = tp.FindFloats("data", &dataCount);
00050 if (dataCount < 1) {
00051 luxError(LUX_MISSINGDATA, LUX_ERROR, "No data in regulardata texture");
00052 float default_data[] = {1.f};
00053 return new RegularDataSpectrumTexture<SWCSpectrum>(start, end, 1, default_data);
00054 }
00055 return new RegularDataSpectrumTexture<SWCSpectrum>(start, end, dataCount, data);
00056 }
00057
00058 static DynamicLoader::RegisterFloatTexture<RegularDataTexture> r1("regulardata");
00059 static DynamicLoader::RegisterSWCSpectrumTexture<RegularDataTexture> r2("regulardata");