Cycles: Use explicit qualifier for single-argument constructors
[blender.git] / intern / cycles / render / buffers.h
index ee0d78a1cd8f3e53b3194e8bd70b7915eeb2aad9..57ffd9630f50a3a8194922b9dc6aed46d2b598bd 100644 (file)
@@ -1,19 +1,17 @@
 /*
- * Copyright 2011, Blender Foundation.
+ * Copyright 2011-2013 Blender Foundation
  *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 #ifndef __BUFFERS_H__
@@ -25,6 +23,7 @@
 
 #include "kernel_types.h"
 
+#include "util_half.h"
 #include "util_string.h"
 #include "util_thread.h"
 #include "util_types.h"
@@ -32,6 +31,7 @@
 CCL_NAMESPACE_BEGIN
 
 class Device;
+struct DeviceDrawParams;
 struct float4;
 
 /* Buffer Parameters
@@ -73,7 +73,7 @@ public:
        /* random number generator state */
        device_vector<uint> rng_state;
 
-       RenderBuffers(Device *device);
+       explicit RenderBuffers(Device *device);
        ~RenderBuffers();
 
        void reset(Device *device, BufferParams& params);
@@ -89,8 +89,8 @@ protected:
 
 /* Display Buffer
  *
- * The buffer used for drawing during render, filled by tonemapping the render
- * buffers and converting to uchar4 storage. */
+ * The buffer used for drawing during render, filled by converting the render
+ * buffers to byte of half float storage */
 
 class DisplayBuffer {
 public:
@@ -102,19 +102,24 @@ public:
        int draw_width, draw_height;
        /* draw alpha channel? */
        bool transparent;
-       /* byte buffer for tonemapped result */
-       device_vector<uchar4> rgba;
+       /* use half float? */
+       bool half_float;
+       /* byte buffer for converted result */
+       device_vector<uchar4> rgba_byte;
+       device_vector<half4> rgba_half;
 
-       DisplayBuffer(Device *device);
+       DisplayBuffer(Device *device, bool linear = false);
        ~DisplayBuffer();
 
        void reset(Device *device, BufferParams& params);
        void write(Device *device, const string& filename);
 
        void draw_set(int width, int height);
-       void draw(Device *device);
+       void draw(Device *device, const DeviceDrawParams& draw_params);
        bool draw_ready();
 
+       device_memory& rgba_data();
+
 protected:
        void device_free();
 
@@ -136,7 +141,6 @@ public:
 
        device_ptr buffer;
        device_ptr rng_state;
-       device_ptr rgba;
 
        RenderBuffers *buffers;