| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net) |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| // Created : 2008-12-19 |
| // Updated : 2010-01-09 |
| // Licence : This source is under MIT License |
| // File : gli/gtx/gradient.inl |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| namespace gli{ |
| namespace gtx{ |
| namespace gradient |
| { |
| inline texture2D radial |
| ( |
| texture2D::dimensions_type const & Size, |
| texture2D::texcoord_type const & Center, |
| float const & Radius, |
| texture2D::texcoord_type const & Focal |
| ) |
| { |
| image2D Result(texture2D::dimensions_type(Size), gli::RGB8U); |
| glm::u8vec3 * DstData = (glm::u8vec3 *)Result.data(); |
| |
| for(std::size_t y = 0; y < Result.dimensions().y; ++y) |
| for(std::size_t x = 0; x < Result.dimensions().x; ++x) |
| { |
| float Value = glm::radialGradient( |
| Center * glm::vec2(Size), |
| Radius, |
| Focal * glm::vec2(Size), |
| glm::vec2(x, y)); |
| |
| std::size_t Index = x + y * Result.dimensions().x; |
| |
| *(DstData + Index) = glm::u8vec3(glm::u8(glm::clamp(Value * 255.f, 0.f, 255.f))); |
| } |
| |
| gli::texture2D Image(1); |
| Image[0] = Result; |
| return Image; |
| } |
| |
| inline texture2D linear |
| ( |
| texture2D::dimensions_type const & Size, |
| texture2D::texcoord_type const & Point0, |
| texture2D::texcoord_type const & Point1 |
| ) |
| { |
| image2D Result(texture2D::dimensions_type(Size), gli::RGB8U); |
| glm::u8vec3 * DstData = (glm::u8vec3 *)Result.data(); |
| |
| for(std::size_t y = 0; y < Result.dimensions().y; ++y) |
| for(std::size_t x = 0; x < Result.dimensions().x; ++x) |
| { |
| float Value = glm::linearGradient( |
| Point0 * glm::vec2(Size), |
| Point1 * glm::vec2(Size), |
| texture2D::texcoord_type(x, y)); |
| |
| std::size_t Index = x + y * Result.dimensions().x; |
| |
| *(DstData + Index) = glm::u8vec3(glm::u8(glm::clamp(Value * 255.f, 0.f, 255.f))); |
| } |
| |
| gli::texture2D Image(1); |
| Image[0] = Result; |
| return Image; |
| } |
| |
| }//namespace gradient |
| }//namespace gtx |
| }//namespace gli |