]> git.tdb.fi Git - libs/gl.git/blob - source/effects/postprocessor.cpp
6af069e97df613c76fda5a4ed8399b88c4e69b87
[libs/gl.git] / source / effects / postprocessor.cpp
1 #include "mesh.h"
2 #include "meshbuilder.h"
3 #include "postprocessor.h"
4 #include "sampler.h"
5 #include "shader.h"
6
7 namespace Msp {
8 namespace GL {
9
10 WeakPtr<Mesh> PostProcessor::fullscreen_quad;
11 WeakPtr<Sampler> PostProcessor::nearest_sampler;
12 WeakPtr<Sampler> PostProcessor::linear_sampler;
13
14 void PostProcessor::render(Renderer &, const Texture2D &color, const Texture2D &depth)
15 {
16         render(color, depth);
17 }
18
19 RefPtr<Mesh> PostProcessor::get_fullscreen_quad()
20 {
21         RefPtr<Mesh> mesh = fullscreen_quad;
22         if(!mesh)
23         {
24                 mesh = new Mesh(VERTEX2);
25                 MeshBuilder builder(*mesh);
26                 builder.begin(TRIANGLE_STRIP);
27                 builder.vertex(-1, 1);
28                 builder.vertex(-1, -1);
29                 builder.vertex(1, 1);
30                 builder.vertex(1, -1);
31                 builder.end();
32                 fullscreen_quad = mesh;
33         }
34         return mesh;
35 }
36
37 RefPtr<Sampler> PostProcessor::get_nearest_sampler()
38 {
39         RefPtr<Sampler> sampler = nearest_sampler;
40         if(!sampler)
41         {
42                 sampler = new Sampler;
43                 sampler->set_filter(NEAREST);
44                 sampler->set_wrap(CLAMP_TO_EDGE);
45                 nearest_sampler = sampler;
46         }
47         return sampler;
48 }
49
50 RefPtr<Sampler> PostProcessor::get_linear_sampler()
51 {
52         RefPtr<Sampler> sampler = linear_sampler;
53         if(!sampler)
54         {
55                 sampler = new Sampler;
56                 sampler->set_filter(LINEAR);
57                 sampler->set_wrap(CLAMP_TO_EDGE);
58                 linear_sampler = sampler;
59         }
60         return sampler;
61 }
62
63
64 PostProcessor::Template::Template():
65         size_divisor(1)
66 { }
67
68
69 PostProcessor::Template::Loader::Loader(Template &t):
70         DataFile::ObjectLoader<Template>(t)
71 {
72         add("size_divisor", &Template::size_divisor);
73 }
74
75 } // namespace GL
76 } // namespace Msp