You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							2.1 KiB
						
					
					
				| /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| // 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
 | |
| 
 |