Example #1
0
void CRender3D::SetDefaultStates()
{
	uint vp_x, vp_y, vp_width, vp_height;
	_pCoreRenderer->GetViewport(vp_x, vp_y, vp_width, vp_height);
	
	_stCurState.fFovAngle = 60.f;
	_stCurState.fZNear = 0.25f;
	_stCurState.fZFar = 1000.f;
	_SetPerspectiveMatrix(vp_width, vp_height);

	_stCurState.matrixStack.Clear(MatrixIdentity());
	_pCoreRenderer->SetMatrix(_stCurState.matrixStack.Top());

	_stCurState.isLightingEnabled = false;
	_stCurState.stGlobalAmbient = TColor4(50, 50, 50, 255);
	
	_stCurState.stFogDesc.bEnabled = false;
	_stCurState.stFogDesc.stColor = ColorGray();
	_stCurState.stFogDesc.fStart = 500.f;
	_stCurState.stFogDesc.fEnd = 1000.f;

	if (_pFFP)
	{
		_pFFP->ToggleGlobalLighting(_stCurState.isLightingEnabled);
		_pFFP->SetGloablAmbientLight(_stCurState.stGlobalAmbient);
		
		_pFFP->SetFogEnabled(_stCurState.stFogDesc.bEnabled);
		_pFFP->SetFogColor(_stCurState.stFogDesc.stColor);
		_pFFP->ConfigureFog(_stCurState.stFogDesc.fStart, _stCurState.stFogDesc.fEnd);
	}

	_stCurState.eBlendingMode = BE_NORMAL;
	_stCurState.stBlendStateDesc = TBlendStateDesc();
	_pCoreRenderer->SetBlendState(_stCurState.stBlendStateDesc);

	_stCurState.stDepthStencilDesc = TDepthStencilDesc();
	_pCoreRenderer->SetDepthStencilState(_stCurState.stDepthStencilDesc);

	_stCurState.stRasterStateDesc = TRasterizerStateDesc();
	_stCurState.stRasterStateDesc.eCullMode = PCM_BACK;
	_pCoreRenderer->SetRasterizerState(_stCurState.stRasterStateDesc);
	
	_stCurState.stColor = ColorWhite();
	_pCoreRenderer->SetColor(_stCurState.stColor);
	
	_stCurState.pCurMat = INVALID_MATERIAL;

	Core()->pRender()->Unbind(EOT_UNKNOWN);
}
Example #2
0
CFixedFunctionPipeline::CFixedFunctionPipeline() : _c_fAttenuationFactor(1.75f), _bStateFilterEnabled(true)
{
	glGetIntegerv(GL_MAX_LIGHTS, &_iMaxLights);
	_pLights = new TLight[_iMaxLights];

	glFogi(GL_FOG_MODE, GL_LINEAR);
	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, TColor4(50, 50, 50, 255));

	for (int i = 0; i < _iMaxLights; ++i)
	{
		_pLights[i].type = LT_DIRECTIONAL;
		_pLights[i].mview = MatrixIdentity();

		glDisable(GL_LIGHT0 + i);
		glLightfv(GL_LIGHT0 + i, GL_DIFFUSE, ColorWhite());
		glLightfv(GL_LIGHT0 + i, GL_SPECULAR, ColorWhite());
		glLightf(GL_LIGHT0 + i, GL_CONSTANT_ATTENUATION, 1.f);
		glLightf(GL_LIGHT0 + i, GL_LINEAR_ATTENUATION, _c_fAttenuationFactor / 100.f);
		glLightf(GL_LIGHT0 + i, GL_SPOT_CUTOFF, 180.f);

		const GLfloat pos[] = {0.f, 0.f, 1.f, 0.f};
		glLightfv(GL_LIGHT0 + i, GL_POSITION, pos);
	}
}
Example #3
0
CRender::CRender(uint uiInstIdx):
CInstancedObj(uiInstIdx),
_fFovAngle(60.f), _fZNear(0.25f), _fZFar(1000.f)
{
	_pCoreRenderer = Core()->pCoreRenderer();

	bool b_supported;

	std::string flist = "Core Renderer supported features\n\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_BUILTIN_FSCREEN_MODE, b_supported);
	flist += std::string("Hardware FScreen: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_BUILTIN_STATE_FILTER, b_supported);
	flist += std::string("Builtin State Filter: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_MULTISAMPLING, b_supported);
	flist += std::string("Multisampling: ") + (b_supported ? "Yes" : "No") + "\n\t";
	
	_pCoreRenderer->IsFeatureSupported(CRDF_VSYNC, b_supported);
	flist += std::string("VSync: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRDF_PROGRAMMABLE_PIPELINE, b_supported);
	flist += std::string("Programmable pipeline: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_BGRA_DATA_FORMAT, b_supported);
	flist += std::string("BGRA textures: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_COMPRESSION, b_supported);
	flist += std::string("Texture compression: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_NON_POWER_OF_TWO_TEXTURES, b_supported);
	flist += std::string("Non power of two textures: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_DEPTH_TEXTURES, b_supported);
	flist += std::string("Depth textures: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_ANISOTROPY, b_supported);
	flist += std::string("Texture anisotropy: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_MIPMAP_GENERATION, b_supported);
	flist += std::string("Hardware mipmap generation: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRDF_TEXTURE_MIRRORED_REPEAT, b_supported);
	flist += std::string("Texture mirrored repeat: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRDF_TEXTURE_MIRROR_CLAMP, b_supported);
	flist += std::string("Texture mirror clamp: ") + (b_supported ? "Yes" : "No") + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRDF_GEOMETRY_BUFFER, b_supported);
	flist += std::string("Geometry buffer: ") + (b_supported ? "Yes" : "No") + "\n\t";

	LOG(flist, LT_INFO);

	std::string mlist = "Core Renderer device metrics\n\n\t";

	_pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_RESOLUTION, _iMaxTexResolution);
	mlist += "Maximum texture resolution: " + IntToStr(_iMaxTexResolution) + "X" + IntToStr(_iMaxTexResolution) + "\n\t";

	_pCoreRenderer->IsFeatureSupported(CRSF_TEXTURE_ANISOTROPY, b_supported);
	if (b_supported)
	{
		_pCoreRenderer->GetDeviceMetric(CRMT_MAX_ANISOTROPY_LEVEL, _iMaxAnisotropy);
		mlist += "Maximum anisotropy level: " + IntToStr(_iMaxAnisotropy) + "X" + "\n\t";
	}

	_pCoreRenderer->GetDeviceMetric(CRMT_MAX_LIGHTS_PER_PASS, _iMaxLight);

	_pCoreRenderer->GetDeviceMetric(CRMT_MAX_TEXTURE_LAYERS, _iMaxTexUnits);
	mlist += "Maximum multitexturing layer: " + IntToStr(_iMaxTexUnits) + "\n\t";

	LOG(mlist, LT_INFO);

	SetClearColor(TColor4(0x64646400));

	_pRender2D = new CRender2D(InstIdx());

	LOG("Render subsystem initialized.", LT_INFO);
}