Ejemplo n.º 1
0
void SaAoRenderer::reloadShaders() {
	if (geometryPassShader) delete geometryPassShader;
	if (processingPassShader) delete processingPassShader;
	if (filteringPassShader) delete filteringPassShader;

	/*
	geometryPassShader = new SaAoGeometryPassShader();
	processingPassShader = new SaAoProcessingPassShader(shadersCompileConstants);
	filteringPassShader = new SaAoFilteringPassShader();
	*/

	initShaderPrograms();

	VSGLInfoLib::getUniformsInfo(processingPassShader->getId());

	screenSpaceRayOrigin = glm::vec2(0,0);
	screenSpaceEmisphereCenter = glm::vec2(0,0);

	setTextureMapping(isTextureMappingEnabled());
	setNormalMapping(isNormalMappingEnabled());
	setSpecularMapping(isSpecularMappingEnabled());
	setOpacityMapping(isOpacityMappingEnabled());

	setShowingGBuffer(isShowingGBuffer());

	/*
	setShowingArea(isShowingArea());
	setShowingSampling(isShowingSampling());
	setShowingSamplingDensity(isShowingSamplingDensity());
	setShowingZoomedArea(isShowingZoomedArea());
	*/

	setAoSamplingRadius(getAoSamplingRadius());
	setAoAngleBias(getAoAngleBias());
	setAoMaxDistance(getAoMaxDistance());
	setAoNumSamples(getAoNumSamples());

	setSamplingPatternId(getSamplingPatternId());

	setAoMultiplier(getAoMultiplier());
	setAreaMultiplier(getAreaMultiplier());
	setSolidAngleMultiplier(getSolidAngleMultiplier());

	setHemisphereSamplingMode(getHemisphereSamplingMode());

	setAlbedoEnabled(isAlbedoEnabled());
	setAoEnabled(isAoEnabled());
	
	setAmbientEnabled(isAmbientEnabled());
	setDirectEnabled(isDirectEnabled());

	setAoComputationId(getAoComputationId());	
	setAreaComputationId(getAreaComputationId());

	setBlurEnabled(isBlurEnabled());
	setBlurKdepth(getBlurKdepth());
	setBlurKnormal(getBlurKnormal());
	setBlurKernelSize(getBlurKernelSize());

	setAlchemyK(getAlchemyK());
	setAlchemyRO(getAlchemyRO());
	setAlchemyU(getAlchemyU());

	setTechnique(getTechnique());

	reshape(winW, winH);
}
Ejemplo n.º 2
0
void Material::setAmbient(MaterialTexture _ambientTexture){
    m_ambient_texture = _ambientTexture;
    m_ambient = glm::vec4(m_ambient_texture.amount, 1.f);
    setAmbientEnabled((bool)m_ambient_texture.tex);
}
Ejemplo n.º 3
0
void SaAoRenderer::init(int awinW, int awinH) {
	printf("initializing %s\n", getLabel().c_str());

	winW = awinW;
	winH = awinH;

	initMrtBuffers(winW, winH);
	initShaderPrograms();
	ssd.init();

	// when depth test enabled, accept fragment if closer to the camera than the former one
	glDepthFunc(GL_LESS);

	//glEnable(GL_CULL_FACE);

	// disable blending
	glDisable(GL_BLEND);



	VSGLInfoLib::getCurrentTextureInfo();

	screenSpaceRayOrigin = glm::vec2(0,0);
	screenSpaceEmisphereCenter = glm::vec2(300,300);

	setTextureMapping(true);
	setNormalMapping(true);
	setSpecularMapping(true);
	setOpacityMapping(true);

	setShowingGBuffer(false);

/*	setShowingArea(false);
	setShowingSampling(false);
	setShowingSamplingDensity(false);
	setShowingZoomedArea(false);
*/

	setAoSamplingRadius(DEFAULT_SAMPLINGRADIUS);
	setAoAngleBias(DEFAULT_ANGLEBIAS);
	setAoMaxDistance(DEFAULT_MAXDIST);
	setAoNumSamples(DEFAULT_NUMSAMPLES);

	setAoMultiplier(1.0f);
	setAreaMultiplier(1.0f);
	setSolidAngleMultiplier(1.0f);

	setAlchemyK(1.0);
	setAlchemyRO(1.0);
	setAlchemyU(0.0001);

	setSamplingPatternId(SamplingPatternShaderSub::emisphere);
	setHemisphereSamplingMode(HemisphereSampling::HEMISPHERE_RANDOM);
	setUniformSamplingRadius(false);

	setTechnique(SaAoProcessingPassShader::SASSAO);

	
	setAoComputationId(D2DaoShaderSub::dssao);	
	setAreaComputationId(AreaCalculatorShaderSub::circumscribedCircleArea);


	setAlbedoEnabled(true);
	setAoEnabled(true);
	setAmbientEnabled(true);
	setDirectEnabled(true);

	setBlurEnabled(true);
	setBlurKdepth(10.0);
	setBlurKnormal(20.0);
	setBlurKernelSize(3);

	// init full screen quad
	quad = new FullScreenQuad();

	reshape(awinW, awinH);
}
Ejemplo n.º 4
0
void Material::setAmbient(const glm::vec4 _ambient){
    m_ambient = _ambient;
    m_ambient_texture.tex.reset();
    setAmbientEnabled(true);
}