framework2

Форк
0
84 строки · 3.7 Кб
1
/*
2
 *  ContrastPass.h
3
 *
4
 *  Copyright (c) 2013, satcy, http://satcy.net
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 "ContrastPass.h"
33
#include "ofMain.h"
34

35
namespace itg
36
{
37
    ContrastPass::ContrastPass(const ofVec2f& aspect, bool arb, float contrast, float brightness) :
38
        contrast(contrast), brightness(brightness), RenderPass(aspect, arb, "contrast")
39
    {
40
        multiple = 1.0f;
41
        string fragShaderSrc = STRINGIFY(uniform sampler2D tex0;
42
                                         uniform float contrast;
43
                                         uniform float brightness;
44
                                         uniform float multiple;
45
                                         
46
                                         void main(){
47
                                             vec4 color = texture2D(tex0,gl_TexCoord[0].st);
48
                                             
49
                                             float p = 0.3 *color.g + 0.59*color.r + 0.11*color.b;
50
                                             p = p * brightness;
51
                                             vec4 color2 = vec4(p,p,p,1.0);
52
                                             color *= color2;
53
                                             color *= vec4(multiple,multiple,multiple,1.0);
54
                                             color = mix( vec4(1.0,1.0,1.0,1.0),color,contrast);
55
                                             
56
                                             gl_FragColor =  vec4(color.r , color.g, color.b, 1.0);
57
                                         }
58
                                         );
59
        
60
        shader.setupShaderFromSource(GL_FRAGMENT_SHADER, fragShaderSrc);
61
        shader.linkProgram();
62
        
63
    }
64
    
65

66
    void ContrastPass::render(ofFbo& readFbo, ofFbo& writeFbo)
67
    {
68
        writeFbo.begin();
69
        
70
        ofClear(0, 0, 0, 255);
71
        
72
        shader.begin();
73
        
74
        shader.setUniformTexture("tex0", readFbo, 0);
75
        shader.setUniform1f("contrast", contrast);
76
        shader.setUniform1f("brightness", brightness);
77
        shader.setUniform1f("multiple", multiple);
78
        
79
        texturedQuad(0, 0, writeFbo.getWidth(), writeFbo.getHeight());
80
        
81
        shader.end();
82
        writeFbo.end();
83
    }
84
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.