// This is still in the repository to be cannibalized for a possible rewrite (ab) ///***************************************************************************************** // * * // * OpenSpace * // * * // * Copyright (c) 2014 * // * * // * Permission is hereby granted, free of charge, to any person obtaining a copy of this * // * software and associated documentation files (the "Software"), to deal in the Software * // * without restriction, including without limitation the rights to use, copy, modify, * // * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * // * permit persons to whom the Software is furnished to do so, subject to the following * // * conditions: * // * * // * The above copyright notice and this permission notice shall be included in all copies * // * or substantial portions of the Software. * // * * // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * // * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * // * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * // * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * // * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * // * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * // ****************************************************************************************/ // //#ifndef __RENDERABLEVOLUMEEXPERT_H__ //#define __RENDERABLEVOLUMEEXPERT_H__ // //// open space includes //#include //#include // //// ghoul includes //#include //#include //#include //#include //#include //#include //#include //#include // //#ifdef __APPLE__ // #include //#else // #include //#endif // //namespace ghoul { // namespace opencl { // class CLWorkSize; // } //} // //namespace openspace { // //class RenderableVolumeExpert: public RenderableVolume { //public: // // // constructors & destructor // RenderableVolumeExpert(const ghoul::Dictionary& dictionary); // ~RenderableVolumeExpert(); // // bool initialize(); // bool deinitialize(); // // virtual void render(const Camera *camera, const psc& thisPosition); // virtual void update(); // //private: // // // private methods // void safeKernelCompilation(); // void safeUpdateTexture(const ghoul::filesystem::File& file); // // // Volumes // std::vector _volumePaths; // std::vector _volumeHints; // // // Textures // ghoul::opengl::Texture* _output; // std::vector _volumes; // std::vector _transferFunctions; // std::vector _transferFunctionsFiles; // // // opencl texture memory pointers // cl_mem _clBackTexture; // cl_mem _clFrontTexture; // cl_mem _clOutput; // std::vector _clVolumes; // std::vector _clTransferFunctions; // // // opencl program // ghoul::opencl::CLContext _context; // ghoul::opencl::CLCommandQueue _commands; // ghoul::opencl::CLProgram _program; // ghoul::opencl::CLKernel _kernel; // ghoul::opencl::CLWorkSize* _ws; // ghoul::filesystem::File* _kernelSourceFile; // std::vector > _kernelOptions; // std::vector _kernelIncludes; // std::vector > _kernelDefinitions; // bool _programUpdateOnSave; // // // mutexes to prevent inconsistencies // std::mutex* _kernelLock; // std::mutex* _textureLock; // // ghoul::opengl::ProgramObject *_quadProgram; // GLuint _screenQuad; // // VolumeRaycasterBox* _colorBoxRenderer; // glm::vec3 _boxScaling; // //}; // //} // namespace openspace // //#endif