framework2
87 строк · 3.9 Кб
1/*
2* Generic.cpp
3*
4* Copyright (c) 2013, satcy, http://satcy.net, 2023, Constantine Tarasenkov
5* All rights reserved.
6*
7* Redistribution and use in source and binary forms, with or without
8* modification, are permitted provided that the following conditions are met:
9*
10* * Redistributions of source code must retain the above copyright notice,
11* this list of conditions and the following disclaimer.
12* * Redistributions in binary form must reproduce the above copyright
13* notice, this list of conditions and the following disclaimer in the
14* documentation and/or other materials provided with the distribution.
15* * Neither the name of Neil Mendoza nor the names of its contributors may be used
16* to endorse or promote products derived from this software without
17* specific prior written permission.
18*
19* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29* POSSIBILITY OF SUCH DAMAGE.
30*
31*/
32#include "GenericPass.h"
33#include "ofMain.h"
34
35namespace itg
36{
37GenericPass::GenericPass(const ofVec2f& aspect, bool arb, const char * customVertexShader, const char * customFragmentShader) :
38RenderPass(aspect, arb, "GenericPass")
39{
40string vertShaderSrc = "";
41string fragShaderSrc = "";
42
43if (customVertexShader != NULL) {
44vertShaderSrc = customVertexShader;
45}
46if (customFragmentShader != NULL) {
47fragShaderSrc = customFragmentShader;
48}
49
50if (customVertexShader != NULL) { shader.setupShaderFromSource(GL_VERTEX_SHADER, vertShaderSrc); }
51shader.setupShaderFromSource(GL_FRAGMENT_SHADER, fragShaderSrc);
52shader.linkProgram();
53}
54
55void GenericPass::render(ofFbo& readFbo, ofFbo& writeFbo, ofTexture& depthTex)
56{
57writeFbo.begin();
58shader.begin();
59
60shader.setUniformTexture("tColor", readFbo.getTexture(), 0);
61shader.setUniformTexture("tDepth", depthTex, 1);
62shader.setUniform2f("colorDimensions", readFbo.getWidth(), readFbo.getHeight());
63shader.setUniform2f("writeDimensions", writeFbo.getWidth(), writeFbo.getHeight());
64shader.setUniform1f("time", ofGetElapsedTimef());
65shader.setUniform1f("parameter0", parameter0);
66shader.setUniform1f("parameter1", parameter1);
67shader.setUniform1f("parameter2", parameter2);
68shader.setUniform1f("parameter3", parameter3);
69shader.setUniform1f("parameter4", parameter4);
70shader.setUniform1f("parameter5", parameter5);
71shader.setUniform1f("parameter6", parameter6);
72shader.setUniform1f("parameter7", parameter7);
73shader.setUniform1f("parameter8", parameter8);
74shader.setUniform1f("parameter9", parameter9);
75shader.setUniform1f("parameter10", parameter10);
76shader.setUniform1f("parameter11", parameter11);
77shader.setUniform1f("parameter12", parameter12);
78shader.setUniform1f("parameter13", parameter13);
79shader.setUniform1f("parameter14", parameter14);
80shader.setUniform1f("parameter15", parameter15);
81
82texturedQuad(0, 0, writeFbo.getWidth(), writeFbo.getHeight());
83
84shader.end();
85writeFbo.end();
86}
87}