fixed converter, nicer gridtexture class

metadata
Wenzel Jakob 2010-09-19 20:37:24 +02:00
parent 0c8e6f7a5c
commit 83325389fc
2 changed files with 20 additions and 20 deletions

View File

@ -292,6 +292,9 @@ void writeGeometry(std::string prefixName, std::string id, int geomIndex, std::s
if (vData->typeToOffset[EUV] != -1) {
domUint uvRef = tess_data[i+vData->typeToOffsetInStream[EUV]];
vertex.uv = vData->data[vData->typeToOffset[EUV]][uvRef].toPoint2();
#if 1
vertex.uv.y = 1-vertex.uv.y; // Invert the V coordinate
#endif
}
int key = -1;
@ -670,18 +673,11 @@ void loadMaterial(GeometryConverter *cvt, std::ostream &os, domMaterial &mat, St
os << "\t</bsdf>" << endl << endl;
}
} else if (lambert) {
domCommon_float_or_param_type* transparency = lambert->getTransparency();
domCommon_float_or_param_type::domFloat *transparencyValue =
transparency ? transparency->getFloat() : NULL;
if (transparencyValue && transparencyValue->getValue() > 0.5) {
os << "\t<bsdf id=\"" << identifier << "\" type=\"dielectric\"/>" << endl << endl;
} else {
domCommon_color_or_texture_type* diffuse = lambert->getDiffuse();
os << "\t<bsdf id=\"" << identifier << "\" type=\"lambertian\">" << endl;
loadMaterialParam(cvt, os, "reflectance", idToTexture, diffuse, false);
loadMaterialParam(cvt, os, "reflectance", idToTexture, diffuse, true);
os << "\t</bsdf>" << endl << endl;
}
domCommon_color_or_texture_type* diffuse = lambert->getDiffuse();
os << "\t<bsdf id=\"" << identifier << "\" type=\"lambertian\">" << endl;
loadMaterialParam(cvt, os, "reflectance", idToTexture, diffuse, false);
loadMaterialParam(cvt, os, "reflectance", idToTexture, diffuse, true);
os << "\t</bsdf>" << endl << endl;
} else if (blinn) {
SLog(EWarn, "\"%s\": Encountered a \"blinn\" COLLADA material, which is currently "
"unsupported in Mitsuba -- replacing it using a Phong material.", identifier.c_str());

View File

@ -28,18 +28,21 @@ MTS_NAMESPACE_BEGIN
class GridTexture : public Texture {
public:
GridTexture(const Properties &props) : Texture(props) {
m_reflectance = props.getSpectrum("reflectance", Spectrum(.5f));
m_brightReflectance = props.getSpectrum("brightReflectance", Spectrum(.4f));
m_darkReflectance = props.getSpectrum("darkReflectance", Spectrum(.2f));
m_width = props.getFloat("width", .01f);
}
GridTexture(Stream *stream, InstanceManager *manager)
: Texture(stream, manager) {
m_reflectance = Spectrum(stream);
m_brightReflectance = Spectrum(stream);
m_darkReflectance = Spectrum(stream);
}
void serialize(Stream *stream, InstanceManager *manager) const {
Texture::serialize(stream, manager);
m_reflectance.serialize(stream);
m_brightReflectance.serialize(stream);
m_darkReflectance.serialize(stream);
}
Spectrum getValue(const Intersection &its) const {
@ -52,9 +55,9 @@ public:
y-=1;
if (std::abs(x) < m_width || std::abs(y) < m_width)
return Spectrum(0.0f);
return m_darkReflectance;
else
return m_reflectance;
return m_brightReflectance;
}
bool usesRayDifferentials() const {
@ -62,11 +65,11 @@ public:
}
Spectrum getMaximum() const {
return m_reflectance;
return m_brightReflectance;
}
Spectrum getAverage() const {
return m_reflectance; // that's not quite right
return m_brightReflectance; // that's not quite right
}
std::string toString() const {
@ -75,7 +78,8 @@ public:
MTS_DECLARE_CLASS()
protected:
Spectrum m_reflectance;
Spectrum m_brightReflectance;
Spectrum m_darkReflectance;
Float m_width;
};