void LayoutVerticalStripes::render(ofTexture texture, ColorChannel *colorChannel, Layer layer) {
    float complexity = layer.complexity;
    int nrows = (complexity * 128) + 1;
    int ncols = 1;
    int xSize = ofGetWidth() / nrows;
    int ySize = ofGetHeight() / ncols;
    for (int row=0; row<nrows; row++) {
        for (int col=0; col<ncols; col++) {
            ofColor selectedColor = colorChannel->selectColor(nrows * col + row + layoutFrame);
            shader.begin(texture.getWidth(),
                         texture.getHeight(),
                         layer.masterScreenAlpha,
                         layer.alpha,
                         layer.contrast,
                         layer.luminance,
                         selectedColor.r,
                         selectedColor.g,
                         selectedColor.b);
            int xOffset = row * xSize;
            int yOffset = col * ySize;
            texture.draw(xOffset, yOffset, xSize, ySize);
            shader.end();
        }
    }
}
void BulgeEffect::draw(ofTexture& tex, int x, int y) {
    applyBulgeShader.begin();
    applyBulgeShader.setUniformTexture("bulge", blendBulge.getTextureReference(), 1);
    applyBulgeShader.setUniformTexture("tex", tex, 2);
    tex.draw(x, y);
    applyBulgeShader.end();
    needToClear = true;
}
示例#3
0
	void ofxMask::drawEffect(ofTexture& maskedImage)
	{
		shader.begin();
		shader.setUniformTexture("mask", fbo, 1);
		shader.setUniform1i("tex", 0);
		ofEnableAlphaBlending();
		maskedImage.draw(0, 0);
		shader.end();
	}	
void Clone::update(ofTexture& src, ofTexture& dst, ofTexture& mask) {
    maskedBlur(src, mask, srcBlur);
    maskedBlur(dst, mask, dstBlur);
    
    buffer.begin();
    ofPushStyle();
    ofEnableAlphaBlending();
    dst.draw(0, 0);
    cloneShader.begin();
    cloneShader.setUniformTexture("src", src, 1);
    cloneShader.setUniformTexture("srcBlur", srcBlur, 2);
    cloneShader.setUniformTexture("dstBlur", dstBlur, 3);
    dst.draw(0, 0);
    cloneShader.end();
    ofDisableAlphaBlending();
    ofPopStyle();
    buffer.end();
}
示例#5
0
	void ftParticleFlow::setObstacle (ofTexture& _tex) {
		ofPushStyle();
		ofEnableBlendMode(OF_BLENDMODE_DISABLED);
		obstacleBuffer.clear();
		obstacleBuffer.begin();
		_tex.draw(0,0,simulationWidth,simulationHeight);
		obstacleBuffer.end();
		ofPopStyle();
	}
示例#6
0
void tricks::gl::effects::OutputFilter::draw(ofTexture &tex) {
	shader.begin();
	shader.setUniformTexture("tex", tex, 0);
	shader.setUniform1f("brightness", brightness);
	shader.setUniform1f("contrast", contrast);
	shader.setUniform1f("saturation", saturation);
	tex.draw(0, 0, ofGetWidth(), ofGetHeight());
	shader.end();
}
示例#7
0
void MaskTool::draw(ofTexture & dstTex)
{
    if (getEnabled())
    {
        
        ofSetColor(255);
        dstTex.draw(0, 0);
        _frame.draw(0, 0);
    }
}
示例#8
0
void ofxImageTS::spaceTime(ofTexture texture, float depth, float density, float width, float height){
    
    ofFbo buffer;
    buffer.begin();
    ofSetRectMode(OF_RECTMODE_CENTER);
    for(float i = 0; i < depth; i += 1/density){
        texture.draw(width/2,height/2,width/i,height/i);
    }
    buffer.end();
}
示例#9
0
void ofxImageTS::divider(ofTexture texture,float divW, float divH, float width, float height){
    ofFbo buffer;
    buffer.begin();
    for(int i = 0; i < divW; i++) {
        for(int j = 0; j < divH; j++) {
            texture.draw((width/divW) * i,(height/divH) * j,width/divW,height/divH);
        }
    }
    buffer.end();
}
示例#10
0
				void TexLine(ofPoint& startpoint, ofPoint& endpoint, ofTexture& tex) 
				{
					float dist = ofDist(startpoint.x, startpoint.y, endpoint.x, endpoint.y);
					float angle = atan2(endpoint.y-startpoint.y,
										endpoint.x-startpoint.x);;
					
					glPushMatrix();
					
					glTranslatef(startpoint.x, startpoint.y, 0.0);
					glRotatef(angle*180.0/PI, 0, 0, 1.0);

					tex.draw(style::lineHeight/2,	   -style::lineHeight/2,
							 dist - style::lineHeight,	style::lineHeight);
					
					glPopMatrix();
				}
示例#11
0
void Clone::debugShader(ofTexture &tex, ofTexture &mask){

    debugFbo.allocate(buffer.getWidth(), buffer.getHeight());
    debugResultFbo.allocate(buffer.getWidth(), buffer.getHeight());
    ofShader debugShader;
    debugShader.load("shader/maskBlurShader");
    
    setStrength(16);
    

    debugFbo.begin();
    
//    debugShader.begin();
//    
//    //maskBlurShader.setUniformTexture("tex", tex, 1);
//    debugShader.setUniformTexture("tex0", tex, 1);
//    debugShader.setUniformTexture("mask", mask, 2);
//    debugShader.setUniform2f("direction", 0, 1);
//    debugShader.setUniform1i("k", strength);
//    mask.draw(0, 0);
//    
//    debugShader.end();
    maskBlurShader.begin();
    maskBlurShader.setUniformTexture("tex0", tex, 1);
    maskBlurShader.setUniformTexture("mask", mask, 2);
    //maskBlurShader.setUniform2f("direction", 0., 1./tex.getHeight());
    maskBlurShader.setUniform2f("direction", 1./tex.getWidth(), 0.);
    maskBlurShader.setUniform1i("k", strength);
    tex.draw(0, 0);
    maskBlurShader.end();
    
    
    debugFbo.end();
    
//    debugResultFbo.begin();
//    
//    maskBlurShader.setUniformTexture("tex0", debugFbo, 1);
//    maskBlurShader.setUniformTexture("mask", mask, 2);
//    maskBlurShader.setUniform2f("direction", 0., 1./tex.getHeight());
//    maskBlurShader.setUniform1i("k", strength);
//    debugFbo.draw(0, 0);
//    
//    debugResultFbo.end();
    
    
}
void imageMeltingPoint::render( const ofTexture& _tex){
	if( !_tex.isAllocated() ) return;// false;
	
	int radius = karmaSoundAnalyser::getInstance().getZeroCrossings()/400;
	
	_tex.draw(position);
	/*for(int x=position.x-radius; x<position.x+radius; x+=round(ofRandom(1,radius/10)) ){
		if( x < 0 || x > _tex.getWidth() ) continue;
		
		for(int y=position.y-radius; y<position.y+radius; y+=round(ofRandom(1,radius/10))){
			if( y < 0 || y > _tex.getHeight() ) continue;
			
			int offset = y*_tex.getWidth() + x;
			offset /= _tex.getNumChannels()*2;
			ofSetColor( (ofColor) _tex[offset] );
			ofDrawCircle(x, y, 1);
		}
	}*/
	
}
示例#13
0
void ofxParticle::draw(ofTexture &tex){
    float w = tex.getWidth();
    float h = tex.getHeight();
    if(w > h){
        h = h/w*size;
        w = size;
    }
    else{
        w = w/h*size;
        h = size;
    }
    ofSetColor(color);
    ofPushMatrix();
    ofTranslate(position);
    ofRotateX(rotation.x);
    ofRotateY(rotation.y);
    ofRotateZ(rotation.z);
    tex.draw(w*-0.5,h*-0.5,w,h);
    ofPopMatrix();
}
示例#14
0
void MaskTool::update(ofTexture& srcTex)
{
    if (getEnabled())
    {
        
        ofSetColor(255, 255);
        
        if (_bBrushDown)
        {
            _frameStack[_curUndoFrame]->begin();
            _brushImg.draw(ofGetMouseX() - 25, ofGetMouseY() - 25, 50, 50);
            _frameStack[_curUndoFrame]->end();
        }
        
        _maskFrame.begin();
        ofClear(0, 0, 0, 255);
        _maskFrame.end();
        
        // combine all frames in _frameStack into _maskFrame
        for (int i = 0; i < _frameStack.size(); i++)
        {
            
            if (!_frameStack[i]->isCleared())
            {
                _combineFrames(_maskFrame, _frameStack[i]->getTextureReference());
            }
        }
        
        _frame.begin();
        // Cleaning everthing with alpha mask on 0 in order to make it transparent for default
        ofClear(0, 0, 0, 0);
        
        _maskShader.begin();
        _maskShader.setUniformTexture("maskTex", _maskFrame.getTextureReference(), 1);
        
        srcTex.draw(0,0);
        
        _maskShader.end();
        _frame.end();
    }
}
示例#15
0
void Clone::maskedBlur(ofTexture& tex, ofTexture& mask, ofFbo& result) {
	int k = strength;
	
	buffer.begin();
	maskBlurShader.begin();
	maskBlurShader.setUniformTexture("tex", tex, 1);
	maskBlurShader.setUniformTexture("mask", mask, 2);
	maskBlurShader.setUniform2f("direction", 1, 0);
	maskBlurShader.setUniform1i("k", k);
	tex.draw(0, 0);
	maskBlurShader.end();
	buffer.end();
	
	result.begin();
	maskBlurShader.begin();
	maskBlurShader.setUniformTexture("tex", buffer, 1);
	maskBlurShader.setUniformTexture("mask", mask, 2);
	maskBlurShader.setUniform2f("direction", 0, 1);
	maskBlurShader.setUniform1i("k", k);
	buffer.draw(0, 0);
	maskBlurShader.end();
	result.end();
}
示例#16
0
void Clone::maskedBlur(ofTexture& tex, ofTexture& mask, ofFbo& result) {
    int k = strength;
    
    buffer.begin();
    maskBlurShader.begin();
    maskBlurShader.setUniformTexture("tex0", tex, 1);
    maskBlurShader.setUniformTexture("mask", mask, 2);
    maskBlurShader.setUniform2f("direction", 1./(tex.getWidth()*2), 0.);
    maskBlurShader.setUniform1i("k", k);
    tex.draw(0, 0);
    maskBlurShader.end();
    buffer.end();

    result.begin();
    maskBlurShader.begin();
    maskBlurShader.setUniformTexture("tex0", buffer, 1);
    maskBlurShader.setUniformTexture("mask", mask, 2);
    maskBlurShader.setUniform2f("direction", 0., 1./(buffer.getHeight()));
    maskBlurShader.setUniform1i("k", k);
    buffer.draw(0, 0);
    maskBlurShader.end();
    buffer.draw(0, 0);
    result.end();
}
示例#17
0
void KinectMotion::update(ofTexture & depthTex, bool isUpsideDown)
{
	if (isUpdateSlices)
	{
		isUpdateSlices = false;
		buildSlices();
	}
    
	depthSmallFbo.begin();
    ofPushMatrix();
	if (isUpsideDown)
	{
		ofTranslate(0, depthSmallFbo.getHeight());
		ofScale(1, -1);
	}
	else
	{
		ofTranslate(depthSmallFbo.getWidth(), 0);
		ofScale(-1, 1);
	}
    depthTex.draw(0, 0, depthSmallFbo.getWidth(), depthSmallFbo.getHeight());
    ofPopMatrix();
    depthSmallFbo.end();
    
    
    if (depthSlices.size() == 0) return;
    
	if (ofGetFrameNum() % 10 == 0)
	{
		int nearest = ofClamp(nearestGrey + 30, 120, 255);
		if (depthSlices[0].maxThreshold == -1 || abs(nearest - depthSlices[0].maxThreshold) > 30)
		{
			for (int i = 0; i < depthSlices.size(); i++)
			{
				float thresholdSection = nearest / depthSlices.size();
        
				// set the threshold of the depth slices - this limits the range e.g. 10 slices only tracking from 1m-4m - 30 cms per slice
				//int minThreshold = ofMap(255 - (i * thresholdSection + thresholdSection), 0, 255, sliceMinThreshold, sliceMaxThreshold);
				//int maxThreshold = ofMap(255 - (i * thresholdSection), 0, 255, sliceMinThreshold, sliceMaxThreshold);
			
				int minThreshold = nearest - (i * thresholdSection + thresholdSection);
				int maxThreshold = nearest - (i * thresholdSection);

				depthSlices[i].minThreshold = minThreshold;
				depthSlices[i].maxThreshold = maxThreshold;
			}
		}
	}
    
	
    for (int i = 0; i < depthSlices.size(); i++)
    {
        depthSlices[i].update(&depthSmallFbo.getTextureReference());
    }
    
    
//    for (int i = 0; i < 600; i += 3)
//    {
//        //ofVec3f v = ofVec3f(1.0, 1.0, 0.0);
//        ofVec3f v = ofVec3f(ofRandomuf(), ofRandomuf(), ofRandomuf());
//        //ofVec3f v = ofVec3f(ofRandom(255), ofRandom(255), ofRandom(255));
//        
//        motionData[i] = v.x;
//        motionData[i+1] = v.y;
//        motionData[i+2] = v.z;
//    }
    
//    depthMotionFbo.begin();
//    ofClear(1.0, 1.0, 1.0, 1.0);
//    depthMotionShader.begin();
//    depthMotionShader.setUniform1fv("motionData", motionData, 600);
//    depthTex.draw(0, 0, depthInW * 0.5, depthInH * 0.5);
//    depthMotionShader.end();
//    depthMotionFbo.end();

	
	// frame differencing
	//depthMotionFbo.begin();
 //   ofClear(1.0, 1.0, 1.0, 1.0);
	//depthTex.draw(0, 0, depthMotionFbo.getWidth(), depthMotionFbo.getHeight());
 //   depthMotionFbo.end();
	//depthMotionFbo.readToPixels(depthMotionPix);
	//absdiff(previousDepthMap, depthMotionPix, differenceImage);
	//differenceImage.update();
	//copy(depthMotionPix, previousDepthMap);
	//differenceMean = mean(toCv(differenceImage));
}
示例#18
0
		// draw texture in fbo using dimensions of fbo, filling the fbo but distorting the texture
	void ftUtil::stretch(ofFbo& _dst, ofTexture& _tex) {
		_dst.begin();
		_tex.draw(0, 0, _dst.getWidth(), _dst.getHeight());
		_dst.end();
	};
示例#19
0
//--------------------------------------------------------------
void Sender::sendTexture(ofTexture& t, string name)
{
	int width = t.getWidth();
	int height = t.getHeight();

	//lookup the sender
	int i = ofFind(senderNameList, name); 

	//if the sender is not there
	if (i == senderNameList.size()) {
		char senderNameChars[256];
		strcpy_s(senderNameChars, name.c_str());
		SpoutSender* sender = new SpoutSender();
		bool init = sender->CreateSender(senderNameChars, width, height);
	
		if (init) {
			ofLogNotice("ofxSpout2 Sender created");
			//init the fbo
			ofFbo senderFbo;
			ofFbo::Settings s;
			s.width = width;
			s.height = height;
			s.internalformat = GL_RGBA;
			s.textureTarget = GL_TEXTURE_2D;
			s.useDepth = false;
			s.useStencil = false;
			s.minFilter = GL_LINEAR;
			s.maxFilter = GL_LINEAR;
			s.wrapModeHorizontal = GL_CLAMP_TO_EDGE;
			s.wrapModeVertical = GL_CLAMP_TO_EDGE;
			s.numSamples = 0;
			senderFbo.allocate(s);
			senderFboList.push_back(senderFbo);
			senderWidthList.push_back(width);
			senderHeightList.push_back(height);
			senderNameList.push_back(name);
			spoutSenderList.push_back(sender);
		} else {
			ofLogError("ofxSpout2 Sender creation failed");
		}
		//we cannot create sender and immediatly send texture; so return
		return;
	}


	if (i >= 0 && i < senderNameList.size())
	{	
		if ((width != senderWidthList[i]) || (height != senderHeightList[i])) {
			// quick and dirty fix for spoutSender ignoring texture resolution changes
			senderFboList[i].destroy();
			ofFbo senderFbo;
			ofFbo::Settings s;
			s.width = width;
			s.height = height;
			s.internalformat = GL_RGBA;
			s.textureTarget = GL_TEXTURE_2D;
			s.useDepth = false;
			s.useStencil = false;
			s.minFilter = GL_LINEAR;
			s.maxFilter = GL_LINEAR;
			s.wrapModeHorizontal = GL_CLAMP_TO_EDGE;
			s.wrapModeVertical = GL_CLAMP_TO_EDGE;
			s.numSamples = 0;
			senderFbo.allocate(s);
			senderFboList[i] = senderFbo;
			senderWidthList[i] = width;
			senderHeightList[i] = height;
		}
		ofPushMatrix();
		ofPushStyle();
		senderFboList[i].begin();
		ofClear(0);
		ofSetColor(255);
		t.draw(0,0,width,height);
		senderFboList[i].end();
		ofPopStyle();
		ofPopMatrix();
		glBindTexture(GL_TEXTURE_2D, 0);  //
		spoutSenderList[i]->SendTexture(senderFboList[i].getTextureReference().getTextureData().textureID, GL_TEXTURE_2D, senderWidthList[i], senderHeightList[i], false); 
	}
}
示例#20
0
文件: ofApp.cpp 项目: aferriss/mdAtl
//--------------------------------------------------------------
ofTexture ofApp::postProcess(ofTexture threeDSceneTex){
    bumpFbo.begin();
        bumpShader.begin();

            bumpShader.setUniform1f("fogOsc", fogSlider->getValue());
        

            bumpShader.setUniform1f("colorMix", colorMixSlider->getValue());
        
            bumpShader.setUniform2f("res", 1.0/ofGetWidth(), 1.0/ofGetHeight());
            bumpShader.setUniformTexture("u_image", threeDSceneTex, 0);
            
            bumpShader.setUniformTexture("bump2", threeDSceneTex, 1);
            bumpShader.setUniform1f("time", ofGetFrameNum()*0.1);

//            bumpShader.setUniform1f("fadeToBlack", fadeToBlackSlider->getValue());
//            bumpShader.setUniform1f("fadeInColor", fadeInColorSlider->getValue());
            bumpShader.setUniform1f("hueCycle", hueCycle);
    
            bumpShader.setUniform1f("colorSlider", colorslider->getValue());
            threeDSceneTex.draw(0,0);
        bumpShader.end();
    bumpFbo.end();
    
    
    glowFbo.begin();
    glowShader.begin();
        glowShader.setUniformTexture("srcTex", bumpFbo.getTexture(), 0);
        glowShader.setUniform2f("step", 5.0/w, 5.0/h);
        glowShader.setUniform1f("time", ofGetFrameNum()*0.1);
        
        bumpFbo.draw(0,0);
    glowShader.end();
    glowFbo.end();
        
    //glowFbo.draw(0,0);
        
    
    for(int i = 0; i<1; i++){
        ofTexture blurTex;
        if(i == 0){
            blurTex = glowFbo.getTexture();
        } else{
            blurTex = blurVFbo2.getTexture();
        }
        
        blurHFbo2.begin();
            blurHShader2.begin();
                blurHShader2.setUniformTexture("srcTex", blurTex, 0);
                blurHShader2.setUniform2f("res", 1.0,1.0);
                blurHShader2.setUniform2f("step", 1.0/w, 1.0/h);
                blurTex.draw(0,0);
            blurHShader2.end();
        blurHFbo2.end();
            
        blurVFbo2.begin();
            blurVShader2.begin();
                blurVShader2.setUniformTexture("srcTex", blurHFbo2.getTexture(), 0);
                blurVShader2.setUniform2f("res", 1.0,1.0);
                blurVShader2.setUniform2f("step", 1.0/w, 1.0/h);
                blurHFbo2.draw(0,0);
            blurVShader2.end();
        blurVFbo2.end();
    }
      
        
    for(int i = 0; i<1; i++){
        ofTexture blurTex;
        if(i == 0){
            blurTex = bumpFbo.getTexture();
        } else{
            blurTex = blurVFbo.getTexture();
        }
        
        blurHFbo.begin();
            blurHShader2.begin();
                blurHShader2.setUniformTexture("srcTex", blurTex, 0);
                blurHShader2.setUniform2f("res", 1.0,1.0);
                blurHShader2.setUniform2f("step", 1.0/w, 1.0/h);
                blurTex.draw(0,0);
            blurHShader2.end();
        blurHFbo.end();
            
        blurVFbo.begin();
            blurVShader2.begin();
                blurVShader2.setUniformTexture("srcTex", blurHFbo.getTexture(), 0);
                blurVShader2.setUniform2f("res", 1.0,1.0);
                blurVShader2.setUniform2f("step", 1.0/w, 1.0/h);
                blurHFbo.draw(0,0);
            blurVShader2.end();
        blurVFbo.end();
    }
        
    
        compositeFbo.begin();
            compositeShader.begin();
            compositeShader.setUniformTexture("bumpTex", bumpFbo.getTexture(), 0);
            compositeShader.setUniformTexture("edgeTex", blurVFbo2.getTexture(), 1);
            compositeShader.setUniformTexture("blurTex", blurVFbo.getTexture(), 2);
            bumpFbo.draw(0,0);
            compositeShader.end();
        compositeFbo.end();
    
        //compositeFbo.draw(0,0);
        //bumpFbo.draw(0,0);
    
    
     fxaaFbo.begin();
         fxaaShader.begin();
         fxaaShader.setUniformTexture("tDiffuse", compositeFbo.getTexture(), 0);
        if(renderCubeMap){
            fxaaShader.setUniform2f("resolution", 1.0/(cubeMapTileSize), 1.0/(cubeMapTileSize));
        } else{
            fxaaShader.setUniform2f("resolution", 1.0/(w), 1.0/(h));
        }
            compositeFbo.draw(0,0);
         fxaaShader.end();
     fxaaFbo.end();
    
    
    
    return fxaaFbo.getTexture();
    
}
//--------------------------------------------------------------
void VisualRingBuffer::setTexture(ofTexture texture){
    begin();
    texture.draw(0, 0, width, height);
    end();
}