]> git.cworth.org Git - apitrace/commitdiff
glretrace: Dump depth buffers as floating point images.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 12 Sep 2013 16:27:04 +0000 (17:27 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 12 Sep 2013 16:27:04 +0000 (17:27 +0100)
retrace/glstate_images.cpp
retrace/json.cpp

index 6efc0a677ba24c1e287d776b0a9378cab6c56e61..37c0ae1da66907acdc4c4e50e4ee7714c5201301 100644 (file)
@@ -59,11 +59,6 @@ OSStatus CGSGetSurfaceBounds(CGSConnectionID, CGWindowID, CGSSurfaceID, CGRect *
 #endif /* __APPLE__ */
 
 
-/* Change thi to one to force interpreting depth buffers as RGBA, which enables
- * visualizing full dynamic range, until we can transmit HDR images to the GUI */
-#define DEPTH_AS_RGBA 0
-
-
 namespace glstate {
 
 
@@ -935,15 +930,15 @@ getDrawBufferImage() {
     }
 
     GLenum type = GL_UNSIGNED_BYTE;
+    image::ChannelType channelType = image::TYPE_UNORM8;
 
-#if DEPTH_AS_RGBA
     if (format == GL_DEPTH_COMPONENT) {
-        type = GL_UNSIGNED_INT;
-        channels = 4;
+        type = GL_FLOAT;
+        channels = 1;
+        channelType = image::TYPE_FLOAT;
     }
-#endif
 
-    image::Image *image = new image::Image(desc.width, desc.height, channels, true);
+    image::Image *image = new image::Image(desc.width, desc.height, channels, true, channelType);
     if (!image) {
         return NULL;
     }
@@ -1002,15 +997,15 @@ dumpReadBufferImage(JSONWriter &json, GLint width, GLint height, GLenum format,
     Context context;
 
     GLenum type = GL_UNSIGNED_BYTE;
+    image::ChannelType channelType = image::TYPE_UNORM8;
 
-#if DEPTH_AS_RGBA
     if (format == GL_DEPTH_COMPONENT) {
-        type = GL_UNSIGNED_INT;
-        channels = 4;
+        type = GL_FLOAT;
+        channels = 1;
+        channelType = image::TYPE_FLOAT;
     }
-#endif
 
-    image::Image *image = new image::Image(width, height, channels, true);
+    image::Image *image = new image::Image(width, height, channels, true, channelType);
 
     while (glGetError() != GL_NO_ERROR) {}
 
index 53a61a3a79c3af115d51e89c083564a23bb9a19b..850e37f934b539de9a53e67a7af9946a09629068 100644 (file)
@@ -322,7 +322,13 @@ JSONWriter::writeImage(image::Image *image, const char *format, unsigned depth)
 
     beginMember("__data__");
     std::stringstream ss;
-    image->writePNG(ss);
+
+    if (image->channelType == image::TYPE_UNORM8) {
+        image->writePNG(ss);
+    } else {
+        image->writePNM(ss);
+    }
+
     const std::string & s = ss.str();
     writeBase64(s.data(), s.size());
     endMember(); // __data__