1 /*
2  *  RenderRasterize_Shader.h
3  *  Created by Clemens Unterkofler on 1/20/09.
4  *  for Aleph One
5  *
6  *  http://www.gnu.org/licenses/gpl.html
7  */
8 
9 
10 #ifndef _RENDERRASTERIZE_SHADER__H
11 #define _RENDERRASTERIZE_SHADER__H
12 
13 #include "cseries.h"
14 #include "map.h"
15 #include "RenderRasterize.h"
16 #include "OGL_FBO.h"
17 #include "OGL_Textures.h"
18 #include "Rasterizer_Shader.h"
19 
20 #include <memory>
21 
22 class Blur;
23 class RenderRasterize_Shader : public RenderRasterizerClass {
24 
25 	std::unique_ptr<Blur> blur;
26 	Rasterizer_Shader_Class *RasPtr;
27 
28 	int objectCount;
29 	world_distance objectY;
30 	float weaponFlare;
31 	float selfLuminosity;
32 
33 	long_vector2d leftmost_clip, rightmost_clip;
34 
35 protected:
36 	virtual void render_node(sorted_node_data *node, bool SeeThruLiquids, RenderStep renderStep);
37 	virtual void store_endpoint(endpoint_data *endpoint, long_vector2d& p);
38 
39 	virtual void render_node_floor_or_ceiling(
40 		  clipping_window_data *window, polygon_data *polygon, horizontal_surface_data *surface,
41 		  bool void_present, bool ceil, RenderStep renderStep);
42 	virtual void render_node_side(
43 		  clipping_window_data *window, vertical_surface_data *surface,
44 		  bool void_present, RenderStep renderStep);
45 
46 	virtual void render_node_object(render_object_data *object, bool other_side_of_media, RenderStep renderStep);
47 
48 	virtual void clip_to_window(clipping_window_data *win);
49 	virtual void _render_node_object_helper(render_object_data *object, RenderStep renderStep);
50 
51     void render_viewer_sprite_layer(RenderStep renderStep);
52     void render_viewer_sprite(rectangle_definition& RenderRectangle, RenderStep renderStep);
53 
54 public:
55 
56 	RenderRasterize_Shader();
57 	~RenderRasterize_Shader();
58 
59 	virtual void setupGL(Rasterizer_Shader_Class& Rasterizer);
60 
61 	virtual void render_tree(void);
renders_viewer_sprites_in_tree()62         bool renders_viewer_sprites_in_tree() { return true; }
63 
64 	TextureManager setupWallTexture(const shape_descriptor& Texture, short transferMode, float pulsate, float wobble, float intensity, float offset, RenderStep renderStep);
65 	TextureManager setupSpriteTexture(const rectangle_definition& rect, short type, float offset, RenderStep renderStep);
66 };
67 
68 #endif
69