void Model::render(const RenderConf & _conf) const
	{
		if (!getShader())
			return;

		if (!Configurator::isDepthTestEnabled())
			glEnable(GL_DEPTH_TEST);

		Shader & shader = *getShader();
		shader.use();

		bool useCustomConf = _conf != RenderConf::Default;

		const auto & lights = useCustomConf ? _conf.lights : getLights();
		const auto & matrices = useCustomConf ? _conf.matrices : getMatrices();

		shader.setMat4f("mvp", matrices.mvp)
			.setMat4f("model", matrices.transform)
			.setMat4f("inverseModel", matrices.inverseTransform)
			.setVec3("cameraPos", matrices.cameraPosition)
			.setFloat("material.shininess", 5.f)
			.setLights("light", lights.cbegin(), lights.cend())
			.setBoolean("useColorOnly", m_useColorOnly)
			.setColor("singleColor", m_color);

		renderMeshes();

		Shader::unuse();

		if (!Configurator::isDepthTestEnabled())
			glDisable(GL_DEPTH_TEST);
	}
Example #2
0
void SSAOPass::configBlurQuadStateSet(osg::Group *g, char dir, osg::TextureRectangle *outSSAOTex)
{
    osg::ref_ptr<osg::StateSet> ss = g->getOrCreateStateSet();
    if(dir == 'y')
    {
        ss->setAttributeAndModes(getShader(_blurY_shader), osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
    }
    else if(dir == 'x')
    {
        ss->setAttributeAndModes(getShader(_blurX_shader), osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
    }
    else
    {
        fprintf(stderr, "Shadow Group, blur dir err\n");
        exit(0);
    }
    ss->addUniform(new osg::Uniform("u_ssaoTex", 0));
    ss->setTextureAttribute(0, outSSAOTex);
    
    ss->addUniform(new osg::Uniform("u_depthTex", 1));
    ss->setTextureAttribute(1, _sharedDepthTex);
    
    ss->addUniform(new osg::Uniform("u_inv_screenSize", osg::Vec2(1.0 / _screenWidth, 1.0 / _screenHeight)));
    float s = 128.0f, e = 131070.0f, fs = 1.0f / s, fe = 1.0f / e, fd = fs - fe;
    
    ss->addUniform(new osg::Uniform("fs", fs));
    ss->addUniform(new osg::Uniform("fd", fd));
}
Example #3
0
		void DCTextBox::e_draw()
		{
			::X39::Singletons::MATERIAL* mat = ::X39::Singletons::MaterialManager::getInstance().getMaterialByIndex(1);
			int textureIndex = 1;
			getShader().use();
			if(width < 16 || height < 16)
			{
				drawTexture2D(mat, textureIndex, 0, 0, mat->textures[0]->width, mat->textures[0]->height, posX, posY, width, height, getShader());
			}
			else
			{
				//TopLeft corner
				drawTexture2D(mat, textureIndex, 0, 0, 16, 16, posX, posY, 16, 16, getShader());
				if(height > 32)
				{
					//Left Side
					drawTexture2D(mat, textureIndex, 0, 16, 16, 16, posX, posY + 16, 16, height - 32, getShader());
				}
				//BottomLeft corner
				drawTexture2D(mat, textureIndex, 0, 64 - 16, 16, 16, posX, posY + height - 16, 16, 16, getShader());

				//TopRight corner
				drawTexture2D(mat, textureIndex, 64 - 16, 0, 16, 16, posX + width - 16, posY, 16, 16, getShader());
				if(height > 32)
				{
					//Right Side
					drawTexture2D(mat, textureIndex, 64 - 16, 16, 16, 16, posX + width - 16, posY + 16, 16, height - 32, getShader());
				}
				//BottomRight corner
				drawTexture2D(mat, textureIndex, 64 - 16, 64 - 16, 16, 16, posX + width - 16, posY + height - 16, 16, 16, getShader());
				
				if(width > 32)
				{
					//Top side
					drawTexture2D(mat, textureIndex, 16, 0, 16, 16, posX + 16, posY, width - 32, 16, getShader());
					
					if(height > 32)
					{
						//Middle side
						drawTexture2D(mat, textureIndex, 16, 16, 16, 16, posX + 16, posY + 16, width - 32, height - 32, getShader());
					}
					//Bottom side
					drawTexture2D(mat, textureIndex, 16, 64 - 16, 16, 16, posX + 16, posY + height - 16, width - 32, 16, getShader());
				}
			}
			getShader().unuse();
			if(!innerText.empty())
				drawTextLine2D(::X39::Singletons::FontManager::getInstance().getFont(0), innerText.c_str(), height / FONTSIZEBASE, posX, posY, width);
			if(deleteButtonPressed)
			{
				deleteButtonPressedTimeout++;
				if(deleteButtonPressedTimeout > 22)
				{
					deleteButtonPressedTimeout = 20;
					if(innerText.size() > 0)
						innerText.pop_back();
				}
			}
		}
Example #4
0
 void Shader::reload() {
     this->m_shader.setupShaderFromSource(GL_VERTEX_SHADER, getShader(GL_VERTEX_SHADER));
     this->m_shader.setupShaderFromSource(GL_FRAGMENT_SHADER, getShader(GL_FRAGMENT_SHADER));
     if(ofIsGLProgrammableRenderer()) {
         this->m_shader.bindDefaults();
     }
     this->m_shader.linkProgram();
 }
Example #5
0
    void Material::update()
    {
        getShader()->use();

        getShader()->setUniform("color", diffuseColor);

        // ToDo: set specularColor
        // ToDo: set shininess

    }
osg::ref_ptr<osg::Program> OSGShaderFactory::createShaderProgram( const std::string& vertexProgram, const std::string& fragmentProgram )
{
    osg::ref_ptr<osg::Program> program = new osg::Program;
    
    osg::ref_ptr<osg::Shader> vertexShader = getShader( vertexProgram, osg::Shader::VERTEX );
    osg::ref_ptr<osg::Shader> fragmentShader = getShader( fragmentProgram, osg::Shader::FRAGMENT );
    
    program->addShader( vertexShader );
    program->addShader( fragmentShader );
    
    return program;
}
Example #7
0
void Rectangle::draw()
{
	getShader()->beginShader();
    if (getShader()->drawShaded()) {
		getShader()->beginShading();
    	beginList();
    	if(!isCached())
    	{
			glRectf(x, y, width, height);
		}
    	endList();
 	    getShader()->endShading();
	}
    if (getShader()->drawOutline()) {
    	getShader()->beginOutline();
		beginList();
    	if(!isCached())
    	{
			glRectf(x, y, width, height);
		}
    	endList();
    	getShader()->endOutline();

    }
    getShader()->endShader();
}
Example #8
0
/*
 *	Shall return a shader where offsets of members in
 *	lightsource uniform buffer and shadowmap matrix uniform buffer can be queried,
 *	if the global shader features indicate their possible usage;
 *
 *	note: an instance transform uniform block is not necessary, as every instance manager
 *	has its "own" shader to query from; only the other two uniform blocks have a "global" character
 */
Shader* ShaderManager::getUniformBufferOffsetQueryShader(bool forShadowMapGeneration)
{
	//shaderfeatures to request from the shadermanager a minimalistic shader containing the
	//uniform buffer declaration, so that offsets can be queried
//	static ShaderFeaturesLocal sfl =
//		ShaderFeaturesLocal(
//				RENDERING_TECHNIQUE_DEFAULT_LIGHTING, //lighting, for the creation of the lightsource uniform block
//				TEXTURE_TYPE_2D_RECT, //play no role, dummy..
//				VISUAL_MATERIAL_TYPE_DEFAULT_LIGHTING, //lighting, for the creation of the lightsource uniform block
//				ShadingFeatures(
//						SHADING_FEATURE_DIRECT_LIGHTING //lighting, for the creation of the lightsource uniform block
//						//TODO add shadowing when the rest is stable
//				),
//				false //no global instance buffer query needed
//	);

	if(forShadowMapGeneration)
	{
		//shadow map generation,layout(shared) uniform ShadowCameraTransformBuffer block
		//note the ShadowCameraTransformBuffer is used twice:
		//	- for generation of shadowmaps in a geometry shader
		//	- for shadowmap lookup in a fragment shader
		//though the same buffer object is used, the logical uniform block in the shaders is different;
		//to omit bugs as far as possible, two meta infos for the same buffer will be maintained
		//queried;
		return getShader(
			ShaderFeaturesLocal(
				RENDERING_TECHNIQUE_SHADOWMAP_GENERATION,
				TEXTURE_TYPE_2D_RECT, //play no role, dummy..
				VISUAL_MATERIAL_TYPE_NONE,
				ShadingFeatures(SHADING_FEATURE_NONE),
				false //no global instance buffer query needed
			)
		);
	}
	else
	{
		//lighting, for the creation of the "layout(shared) uniform LightSourceBuffer"  block
		return getShader(
			ShaderFeaturesLocal(
				RENDERING_TECHNIQUE_DEFAULT_LIGHTING,
				TEXTURE_TYPE_2D_RECT, //play no role, dummy..
				VISUAL_MATERIAL_TYPE_DEFAULT_LIGHTING,
				ShadingFeatures(SHADING_FEATURE_DIRECT_LIGHTING),
				false //no global instance buffer query needed
			)
		);
	}

}
Example #9
0
void GPUNullFilter::applyOnGPU(GLTexturePtr pSrcTex)
{
    getShader()->activate();
    m_pTextureParam->set(0);
    draw(pSrcTex);

}
Example #10
0
 bool Render::rawFrame(CZScene &scene,CZNode *pRootNode, CZMat4 &projMat)
 {
     curShader = getShader(kDirectionalLightShading);
     
     if (curShader == NULL)
     {
         LOG_ERROR("there's no shader designated\n");
         return false;
     }
     curShader->begin();
     
     // common uniforms
     glUniform3f(curShader->getUniformLocation("ambientLight.intensities"),
                 scene.ambientLight.intensity.x,
                 scene.ambientLight.intensity.y,
                 scene.ambientLight.intensity.z);
     
     glUniform3f(curShader->getUniformLocation("directionalLight.direction"),
                 scene.directionalLight.direction.x,scene.directionalLight.direction.y,scene.directionalLight.direction.z);
     
     glUniform3f(curShader->getUniformLocation("eyePosition"),scene.eyePosition.x,scene.eyePosition.y,scene.eyePosition.z);
     
     glUniform3f(curShader->getUniformLocation("directionalLight.intensities"),
                 scene.directionalLight.intensity.x,
                 scene.directionalLight.intensity.y,
                 scene.directionalLight.intensity.z);
     CZCheckGLError();
     
     draw(pRootNode, projMat);
     CZCheckGLError();
     
     curShader->end();
     
     return true;
 }
int ShaderManager::saveProgress(const char *shaderName, char *errorText, Editor *editor)
{
	Shader *shader;
	int retVal = getShader(shaderName, &shader, errorText);
	if (retVal) return retVal;

	SYSTEMTIME sysTime;
	GetSystemTime(&sysTime);

	char filename[SM_MAX_FILENAME_LENGTH+1];
	sprintf_s(filename, SM_MAX_FILENAME_LENGTH, "%s%s.%d_%d_%d_%d_%d_%d",
		SM_PROGRESS_DIRECTORY, shaderName, sysTime.wYear, sysTime.wMonth,
		sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
	FILE *fid;
	if (fopen_s(&fid, filename, "wb"))
	{
		sprintf_s(errorText, MAX_ERROR_LENGTH,
			      "Could not write to '%s'", filename);
		return -1;
	}
	fwrite(shader->getShaderText(), sizeof(char), strlen(shader->getShaderText()), fid);
	fclose(fid);

	// If there is an editor attached, set a snapshot
	if (editor)
	{
		editor->setSnapshot(filename);
	}

	return 0;
}
Example #12
0
void SSAOPass::configureStateSet()
{
    osg::Matrix projMatrix = _mainCamera->getProjectionMatrix();
    osg::Matrix inverseProjMat = osg::Matrix::inverse(projMatrix);
    
    _stateSet->setAttributeAndModes(getShader(_ssao_shader_id), osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
    _stateSet->addUniform(new osg::Uniform("u_occluderBias", _occulderBias));
    _stateSet->addUniform(new osg::Uniform("u_samplingRadius", _samplingRadius));
    _stateSet->addUniform(new osg::Uniform("u_attenuation", osg::Vec2(_constantAttenuation, _linearAttenuation)));
    _stateSet->addUniform(new osg::Uniform("u_farDistance", _farPlaneDist));
    _stateSet->addUniform(new osg::Uniform("u_inverseProjMatrix", inverseProjMat));
    _stateSet->addUniform(new osg::Uniform("u_randomJitterTex", 0));
    _stateSet->addUniform(new osg::Uniform("u_normalAndDepthTex", 1));
    _stateSet->addUniform(new osg::Uniform("u_positionTex", 2));
    _stateSet->addUniform(new osg::Uniform("u_screen_wh", osg::Vec2(_screenWidth, _screenHeight)));
    
//    _stateSet->addUniform(new osg::Uniform("u_debug", 3));
//    _stateSet->setTextureAttributeAndModes(3, _debug);
//    
    _stateSet->setTextureAttribute(0, _randomTexture2D);
    _stateSet->setTextureAttribute(1, getInTexture(_in_normal_tex));
    _stateSet->setTextureAttribute(2, getInTexture(_in_position_tex));
//
//    float w = _mainCamera->getViewport()->width();
//    float h = _mainCamera->getViewport()->height();
//    osg::Vec2 texelSize = osg::Vec2(1.0f/w, 1.0f/h);
//    _stateSet->addUniform(new osg::Uniform("u_texelSize", texelSize));
    
    //_screenQuad->getOrCreateStateSet()->setUpdateCallback(new SSAOStateCallback(_mainCamera, this));
    _stateSet->setUpdateCallback(new SSAOStateCallback(_mainCamera, this));
}
Example #13
0
void GPUChromaKeyFilter::applyOnGPU(GLTexturePtr pSrcTex)
{
    // Set up double-buffering
    int curBufferIndex = m_Erosion%2;
    getFBO(curBufferIndex)->activate();
    getShader()->activate();
    m_pTextureParam->set(0);

    float h, s, l;
    m_Color.toHSL(h, s, l);
    m_pHKeyParam->set(h);
    m_pHToleranceParam->set(m_HTolerance*360);
    m_pHSoftToleranceParam->set((m_HTolerance+m_Softness)*360.0f);
    m_pSKeyParam->set(s);
    m_pSToleranceParam->set(m_STolerance);
    m_pSSoftToleranceParam->set(m_STolerance+m_Softness);
    m_pLKeyParam->set(l);
    m_pLToleranceParam->set(m_LTolerance);
    m_pLSoftToleranceParam->set(m_LTolerance+m_Softness);
    m_pSpillThresholdParam->set(m_SpillThreshold*360);
    m_pIsLastParam->set(int(m_Erosion==0));
    draw(pSrcTex);

    for (int i = 0; i < m_Erosion; ++i) {
        curBufferIndex = (curBufferIndex+1)%2;
        getFBO(curBufferIndex)->activate();
        OGLShaderPtr pShader = avg::getShader(SHADERID_EROSION);
        pShader->activate();
        m_pErosionTextureParam->set(0);
        m_pErosionIsLastParam->set(int(i==m_Erosion-1));
        getDestTex((curBufferIndex+1)%2)->activate(GL_TEXTURE0);
        m_pProjection2->draw(avg::getShader(SHADERID_EROSION));
    }
}
Example #14
0
GLuint ObjectManager::obtainShader( const void* key, const GLenum type )
{
    const GLuint id = getShader( key );
    if( id != INVALID )
        return id;
    return newShader( key, type );
}
void Margin::draw()
{

	Vector3D * scale = getScale();

	getVSML()->loadIdentity(VSMathLib::MODEL);

	// Margin
	getVSML()->pushMatrix(VSMathLib::MODEL);
	getVSML()->translate(getPosition()->getX(), getPosition()->getY(), getPosition()->getZ());
	getVSML()->scale(scale->getX(), scale->getY(), scale->getZ());

	// cube
	getVSML()->pushMatrix(VSMathLib::MODEL);
	getVSML()->translate(-0.5f, -0.5f, -0.5f);
	glUseProgram((*getShader()).getProgramIndex());
	
	getVSML()->matricesToGL();
	glBindVertexArray(vaoMargin);
	glDrawElements(GL_TRIANGLES, faceCountMargin * 3, GL_UNSIGNED_INT, 0);
	getVSML()->popMatrix(VSMathLib::MODEL);
	// cube

	getVSML()->popMatrix(VSMathLib::MODEL);
	// Margin
}
Example #16
0
void fsDrawMgr::deleteAllVramObjForEngine()
{
    fsDrawMgr* ins = instance();

    for (const fsID* tex_id = ins->m_tex_map.getFirstKeyN(); tex_id; tex_id = ins->m_tex_map.getNextKeyN(*tex_id))
    {
        fsTex* tex = getTexture(*tex_id);

        if (tex->m_tex_obj != 0)
        {
            fsLowLevelAPI::unregisterTexture(tex->m_tex_obj);
            tex->m_tex_obj = 0;
        }

        tex->m_flag.setOn(fsTex::FLAG_UPLOAD);
    }

    for (const fsID* shd_id = ins->m_shd_map.getFirstKeyN(); shd_id; shd_id = ins->m_shd_map.getNextKeyN(*shd_id))
    {
        fsShd* shd = getShader(*shd_id);

        if (shd->m_shd_obj != 0)
        {
            fsLowLevelAPI::unregisterShader(shd->m_shd_obj);
            shd->m_shd_obj = 0;
        }

        shd->m_flag.setOn(fsShd::FLAG_UPLOAD);
    }
}
Example #17
0
	template <typename T> Ptr<T> Panel::createWidget()
	{
		Ptr<T> widget = widgets.appendNew<T>(getScene(), getShader());
		widget->setDepth(depth + 1);
		widgetInfos.insert({widget, WidgetInfo()});
		updateWidgetBounds(widget);
		return widget;
	}
Example #18
0
void init()
{
	int argc = 0;
	char** argv = NULL;
	glutInit(&argc, argv); /* NOTE: this hack will not work on windows */
	glewInit();

	/* Load the shader */
	shader = getShader("mesh-generation.vert", "shader.frag");

	uniform.object = glGetUniformLocation(shader, "object");
	uniform.lightingModel = glGetUniformLocation(shader, "lightingModel");
	uniform.isLocalViewer = glGetUniformLocation(shader, "isLocalViewer");
	uniform.isPerPixelLighting = glGetUniformLocation(shader, "isPerPixelLighting");
	uniform.time = glGetUniformLocation(shader, "time");

	/* Lighting and colours */
	glClearColor(0, 0, 0, 0);
	glShadeModel(GL_SMOOTH);
	glEnable(GL_DEPTH_TEST);

	
	glEnable(GL_LIGHT0);

	//glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);
	//glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
	//glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular);
	glMaterialfv(GL_FRONT, GL_AMBIENT, material_ambient);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, material_diffuse);
	glMaterialfv(GL_FRONT, GL_SPECULAR, material_specular);
	glMaterialf(GL_FRONT, GL_SHININESS, material_shininess);

	/* Camera */
	camera_zoom = 5.0;
	camera_heading = 0.0;
	camera_pitch = 0.0;
	mouse1_down = 0;
	mouse2_down = 0;

	/* Turn off all keystate flags */
	memset(key_state, 0, 1024);

	/* Default render modes */
	renderstate.wireframe = 0;
	renderstate.lighting = 1;
	renderstate.shaders = 0;
	renderstate.osd = 1;
	renderstate.lightType = 1;
	renderstate.lightModel = 1;
	renderstate.shading = 1;
	renderstate.animate = 0;


	update_renderstate();

	regenerate_geometry();
}
void RenderingSystemOgl::resetShader( Shader::Type shaderType ) {
    if( getShader(shaderType) == nullptr )
        return;

    ::glUseProgramStages( *_programPipeline, selectShaderStage(shaderType), 0 );
    checkResult( "::glUseProgramStages" );

    RenderingSystemCommon::resetShader( shaderType );
}
Example #20
0
//! reinitialize inventor volume
void DVRVolume::reload(void)
{
    if(getShader() != NullFC) 
    {
        textureManager.clearTextures(getTextureStorage());

        shadingInitialized = false;
    }
}
Example #21
0
void DVRVolume::initializeClipObjects(      DrawActionBase *action, 
                                      const Matrix         &volumeToWorld)
{
    DVRClipObjectsPtr clipObjects = DVRVOLUME_PARAMETER(this, DVRClipObjects);
  
    if(clipObjects                != NullFC && 
       clipObjects->getClipMode() != DVRClipObjects::Off)
    {
        
        DVRVolumeTexturePtr tex = DVRVOLUME_PARAMETER(this, DVRVolumeTexture);

        if(tex != NullFC) 
        {
            const Vec3f &res   = tex->getResolution();
            const Vec3f &slice = tex->getSliceThickness();
            
            Vec3f diag(res[0] * slice[0], 
                       res[1] * slice[1], 
                       res[2] * slice[2]);
            
            Vec3f sliceDir;
            
            if(getShader()->useMTSlabs())
            {
                Slicer::getAASlicingDirection(action,&sliceDir);
            }
            else
            {  
                switch (getTextures2D()) 
                {
                    case 0: // 3D textures
                        Slicer::getSlicingDirection(action, &sliceDir);    
                        break;

                    case 1: // 2D textures  
                        Slicer::getAASlicingDirection(action, &sliceDir);
                        break;

                    default: // auto
                        Window *window = action->getWindow();

                        if(window->hasExtension(_extTex3D))
                            Slicer::getSlicingDirection(action, &sliceDir);
                        else
                            Slicer::getAASlicingDirection(action, &sliceDir);
                }
            }
            
            Plane clipReferencePlane(sliceDir, -0.5f * diag.length());  
            
            clipObjects->initialize(volumeToWorld, clipReferencePlane);

            clipper.setReferencePlane(clipReferencePlane);
        }
    }
}
Example #22
0
static void texture_define(lua_State* L, const char* define)
{
	auto* shader = getShader(L);
	if (!shader) return;
	Renderer* renderer = getRendererGlobal(L);
	if (!renderer) return;

	auto& slot = shader->m_texture_slots[shader->m_texture_slot_count - 1];
	slot.define_idx = renderer->getShaderDefineIdx(lua_tostring(L, -1));
}
Example #23
0
void SuperShader::createShaders(
    const Material& material, 
    ShaderRef& nonShadowedShader, 
    ShaderRef& shadowMappedShader) {

    Cache::Pair p       = getShader(material);

    nonShadowedShader   = p.nonShadowedShader;
    shadowMappedShader  = p.shadowMappedShader;
}
Example #24
0
File: Ocean.cpp Project: BSkin/Boat
//string mPath, string tPath, string sPath, glm::vec3 position, glm::vec3 direction, glm::vec3 up
Ocean::Ocean() : GameObject("Models\\ocean.obj", "Textures\\error.tga", "Shaders\\Ocean Shaders\\ocean.glsl", glm::vec3(0,0,0), glm::vec3(0,0,-1), glm::vec3(0,1,0))
{
	windDirection = glm::normalize(glm::vec2(1,1));
	amplitude = 5.0f; // 2.0f;
	windSpeed = 600.0f;
	lambda = 1000.0f;
	gridSize = 512.0f;//2000.0f;
	oceanTime = 0;
	FFTbool = true;
	quad = getModel("Models\\quad.obj");

	//save seed
	oceanSeed = rand();
	grandSeed(oceanSeed);
	gaussianNumbersTexture = Texture::loadComplexGaussianNumbersTexture(textureSize, textureSize);

	butterflyLookupTexture = Texture::loadButterflyLookupTexture(textureSize, numPasses);
	
	FFTTestTexture = Texture::loadFFTTest(textureSize, textureSize);
	iFFTTestTexture = Texture::loadiFFTTest(textureSize, textureSize);

	h0Buffer = new FrameBuffer(textureSize, textureSize);
	h0Buffer->addDepthBuffer();
	h0Buffer->addColorFloatTexture();

	htBuffer = new FrameBuffer(textureSize, textureSize);
	htBuffer->addDepthBuffer();
	htBuffer->addColorFloatTexture();
		
	FFTPingPongBuffer = new FrameBuffer(textureSize, textureSize);
	FFTPingPongBuffer->addDepthBuffer();
	FFTPingPongBuffer->addColorFloatTexture();
	FFTPingPongBuffer->addColorFloatTexture();

	dataBuffer = new FrameBuffer(textureSize, textureSize);
	dataBuffer->addDepthBuffer();
	dataBuffer->addColorFloatTexture(); //heigth(2)
	dataBuffer->addColorFloatTexture(); //choppy vectors
	dataBuffer->addColorFloatTexture(); //heights - boat depths(r)

	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

	h0Shader = getShader("Shaders\\Ocean Shaders\\h0.glsl");
	htShader = getShader("Shaders\\Ocean Shaders\\ht.glsl");
	choppyShader = getShader("Shaders\\Ocean Shaders\\choppy.glsl");
	FFTxShader = getShader("Shaders\\Ocean Shaders\\FFTx.glsl");
	FFTyShader = getShader("Shaders\\Ocean Shaders\\FFTy.glsl");
	scaleShader = getShader("Shaders\\Ocean Shaders\\scale.glsl");
	finalHeightShader = getShader("Shaders\\Ocean Shaders\\finalOceanHeight.glsl");
	quadShader = getShader("Shaders\\quad.glsl");

	updateH0Texture();
}
Example #25
0
static void texture_slot(lua_State* state, const char* name, const char* uniform)
{
	auto* shader = getShader(state);
	if (!shader) return;
	auto& slot = shader->m_texture_slots[shader->m_texture_slot_count];
	copyString(slot.name, name);
	slot.uniform_handle = bgfx::createUniform(uniform, bgfx::UniformType::Int1);
	copyString(slot.uniform, uniform);
	++shader->m_texture_slot_count;
}
Example #26
0
void fsDrawMgr::deleteShader(fsID shd_id)
{
    instance();

    if (shd_id == fsID::ZERO)
    {
        fsThrow(ExceptionInvalidArgument);
    }

    fsDelete(getShader(shd_id), fsShd);
}
Example #27
0
void CharacterModel::deactivateShader(void)
{
    for(UInt32 i = 0; i < getMaterials().size(); ++i)
    {
        ChunkMaterialPtr m = getMaterials(i);
        
        beginEditCP(m);
        m->subChunk(getShader());
        endEditCP(m);
    }
}
Example #28
0
void GPUHueSatFilter::applyOnGPU(GLTexturePtr pSrcTex)
{
    OGLShaderPtr pShader = getShader(SHADERID_HSL_COLOR);
    glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
    pShader->activate();
    m_pHueParam->set(m_Hue);
    m_pSatParam->set(m_Saturation);
    m_pLightnessParam->set(m_LightnessOffset);
    m_pColorizeParam->set((int)(m_bColorize));
    m_pTextureParam->set(0);
    draw(pSrcTex);
}
Example #29
0
MaterialData CompiledMaterial::getMaterial() const {
	MaterialData data;

	String frag = core::String(getShader().toStdString());
	data.prog = ShaderProgram(new Shader<FragmentShader>(frag));

	for(int i = 0; i != samplers.size(); i++) {
		data.surface.textures[i] = samplers[i].texture;
	}

	return data;
}
Example #30
0
 bool Render::blitBackground(CZImage *bgImg, bool clearColor /* = true */)
 {
     if(bgImg == nullptr)
     {
         LOG_ERROR("bgImg is nullptr!\n");
         return false;
     }
     
     CZShader *pShader = getShader(kBlitImage);
     
     if (pShader == NULL)
     {
         LOG_ERROR("there's no shader for blitting background image\n");
         return false;
     }
     
     if(prepareBgImage(bgImg) == false) return false;
     if(prepareBgVAO() == false) return false;
     
     // draw Rect
     glClear(GL_DEPTH_BUFFER_BIT);
     
     if(clearColor)
         glClear(GL_COLOR_BUFFER_BIT);
     
     CZMat4 mvpMat;
     mvpMat.SetOrtho(0,width,0,height,-1.0f,1.0f);
     
     pShader->begin();
     glUniformMatrix4fv(pShader->getUniformLocation("mvpMat"),1,GL_FALSE,mvpMat);
     glUniform1i(pShader->getUniformLocation("texture"), (GLuint) 0);
     glUniform1f(pShader->getUniformLocation("opacity"), 1.0f); // fully opaque
     
     enableTexture(bgImg);
     
     // clear the buffer to get a transparent background
     glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
     glClear(GL_COLOR_BUFFER_BIT );
     
     // set up premultiplied normal blend
     glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
     
     GL_BIND_VERTEXARRAY(pBgImageRes->vao);
     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
     
     GL_BIND_VERTEXARRAY(0);
     
     pShader->end();
     
     CZCheckGLError();
     
     return true;
 }