matrix support
parent
559af6f2b3
commit
e2b860610c
|
@ -119,8 +119,7 @@ VertexData *fetchVertexData(Transform transform, std::ostream &os,
|
|||
|
||||
if (vertInputIndex > 0) {
|
||||
offset = result->data.size();
|
||||
result->data.resize(result->data.size()+1);
|
||||
result->data[offset] = NULL;
|
||||
result->data.push_back(NULL);
|
||||
}
|
||||
|
||||
if (++vertInputIndex < (int) vertInputs.getCount())
|
||||
|
@ -227,7 +226,7 @@ void writeGeometry(std::string prefixName, std::string id, int geomIndex, std::s
|
|||
domUint normalRef = tess_data[i+vData->typeToOffsetInStream[ENormal]];
|
||||
vertex.n = vData->data[vData->typeToOffset[ENormal]][normalRef].toNormal();
|
||||
}
|
||||
|
||||
|
||||
if (vData->typeToOffset[EUV] != -1) {
|
||||
domUint uvRef = tess_data[i+vData->typeToOffsetInStream[EUV]];
|
||||
vertex.uv = vData->data[vData->typeToOffset[EUV]][uvRef].toPoint2();
|
||||
|
@ -889,9 +888,19 @@ void loadNode(GeometryConverter *cvt, Transform transform, std::ostream &os,
|
|||
Point((Float) value.get(3), (Float) value.get(4), (Float) value.get(5)),
|
||||
Vector((Float) value.get(6), (Float) value.get(7), (Float) value.get(8))
|
||||
);
|
||||
} else if (element->typeID() == domMatrix::ID()) {
|
||||
daeTArray<double> value = daeSafeCast<domMatrix>(element)->getValue();
|
||||
ref<Matrix4x4> matrix = new Matrix4x4(
|
||||
(Float) value.get(0), (Float) value.get(1), (Float) value.get(2), (Float) value.get(3),
|
||||
(Float) value.get(4), (Float) value.get(5), (Float) value.get(6), (Float) value.get(7),
|
||||
(Float) value.get(8), (Float) value.get(9), (Float) value.get(10), (Float) value.get(11),
|
||||
(Float) value.get(12), (Float) value.get(13), (Float) value.get(14), (Float) value.get(15)
|
||||
);
|
||||
transform = transform * Transform(matrix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Iterate over all geometry references */
|
||||
domInstance_geometry_Array &instanceGeometries = node.getInstance_geometry_array();
|
||||
for (size_t i=0; i<instanceGeometries.getCount(); ++i) {
|
||||
|
|
|
@ -132,10 +132,12 @@ AABB Triangle::getClippedAABB(const Vertex *buffer, const AABB &aabb) const {
|
|||
result.expandBy(vertices[i]);
|
||||
|
||||
/* Cover up some numerical imprecisions */
|
||||
|
||||
for (int i=0; i<3; ++i)
|
||||
result.min[i] -= Epsilon;
|
||||
result.min[i] -= Epsilon * std::abs(result.min[i]);
|
||||
for (int i=0; i<3; ++i)
|
||||
result.max[i] += Epsilon;
|
||||
result.max[i] += Epsilon * std::abs(result.max[i]);
|
||||
|
||||
result.clip(aabb);
|
||||
|
||||
return result;
|
||||
|
|
|
@ -294,7 +294,7 @@ void KDTree::buildTree(int nodeIndex, int depth, int badRefines,
|
|||
Float invSA = 1.0f / aabb.getSurfaceArea();
|
||||
Float nodeCost = m_intersectionCost * numPrims;
|
||||
Score bestSplit;
|
||||
|
||||
|
||||
if (depth >= m_maxDepth || numPrims <= m_stopPrims) {
|
||||
createLeaf(nodeIndex, depth, numPrims, allEvents);
|
||||
return;
|
||||
|
|
|
@ -732,7 +732,7 @@ void GLWidget::paintGL() {
|
|||
uint8_t *targetData = m_fallbackBitmap->getData();
|
||||
for (int y=0; y<source->getHeight(); ++y) {
|
||||
for (int x=0; x<source->getWidth(); ++x) {
|
||||
const Float invGammaValue = 0.45455;
|
||||
const float invGammaValue = 0.45455f;
|
||||
*targetData++ = (uint8_t) std::max(std::min(std::pow(*sourceData++, invGammaValue) * 255.0f, 255.0f), 0.0f);
|
||||
*targetData++ = (uint8_t) std::max(std::min(std::pow(*sourceData++, invGammaValue) * 255.0f, 255.0f), 0.0f);
|
||||
*targetData++ = (uint8_t) std::max(std::min(std::pow(*sourceData++, invGammaValue) * 255.0f, 255.0f), 0.0f);
|
||||
|
|
Loading…
Reference in New Issue