diff --git a/panda/src/gobj/geomVertexColumn.cxx b/panda/src/gobj/geomVertexColumn.cxx index 1942942ecf..2c94842126 100644 --- a/panda/src/gobj/geomVertexColumn.cxx +++ b/panda/src/gobj/geomVertexColumn.cxx @@ -1821,11 +1821,21 @@ get_data4f(const unsigned char *pointer) { //////////////////////////////////////////////////////////////////// void GeomVertexColumn::Packer_argb_packed:: set_data4f(unsigned char *pointer, const LVecBase4f &data) { + // when packing an argb, we want to make sure we cap + // the input values at 1 since going above one will cause + // the value to be truncated. + float newData[4]; + for (int i = 0; i < 4; i++) { + if (data[i] > 1.0) + newData[i] = 1.0; + else + newData[i] = data[i]; + } *(PN_uint32 *)pointer = GeomVertexData::pack_abcd - ((unsigned int)(data[3] * 255.0f), - (unsigned int)(data[0] * 255.0f), - (unsigned int)(data[1] * 255.0f), - (unsigned int)(data[2] * 255.0f)); + ((unsigned int)(newData[3] * 255.0f), + (unsigned int)(newData[0] * 255.0f), + (unsigned int)(newData[1] * 255.0f), + (unsigned int)(newData[2] * 255.0f)); } ////////////////////////////////////////////////////////////////////