示例#1
0
// add_random_light
// Spawns a random point light with random color and a random
// Position between 3 and -3 in all directions
static void add_random_light()
{
	CPointLight rnd;

	float x = (rand() % 1024 / 1024.0F) * 24.0F - 24.0F;
	float y = (rand() % 1024 / 1024.0F) * 24.0F - 24.0F;
	float z = (rand() % 1024 / 1024.0F) * 24.0F - 24.0F;

	vec3 lpos = {x, y, z};
	rnd.SetPosition(lpos);

	float r = rand() % 1024 / 1024.0F;
	float g = rand() % 1024 / 1024.0F;
	float b = rand() % 1024 / 1024.0F;

	int b1, b2, b3, b4, b5, b6;
	b1 = rand() % 54;
	b2 = rand() % 54;
	b3 = rand() % 54;
	b4 = rand() % 54;
	b5 = rand() % 54;
	b6 = rand() % 54;


	vec3 lcolor = {r, g, b};
	rnd.SetColor(lcolor);
	rnd.SetRadius(4.0F);


	g_lightManager->AddLight(&rnd);
}
示例#2
0
// init_render_targets(void)
// This function obtains handles, loads textures, and sets up the various offscreen
// targets required for this demo.
// For this demo, there are 3 offscreen color targets that share an offscreen depth buffer.
// They are the normaldepth buffer, the primary ssao target, and the temp blur target.
static void init_render_targets()
{
	int dispWidth = GetScreenWidth();
	int dispHeight = GetScreenHeight();

	unsigned int msaaFlags = SAMPLE_NEAREST;

	g_normalDepthColor = g_pTexInterface->AddRenderTarget(dispWidth, dispHeight, PIXEL_FORMAT_RGBA32F, SAMPLE_TRILINEAR_ANISO);
	g_offscreenDepth   = g_pTexInterface->AddDepthStencilTarget(dispWidth, dispHeight, 32, 0);
	g_lightBuffer	   = g_pTexInterface->AddRenderTarget(dispWidth, dispHeight, PIXEL_FORMAT_RGBA8, SAMPLE_TRILINEAR_ANISO);

	g_msaaColor = INVALID_HANDLE;
	g_msaaDepth = INVALID_HANDLE;
	if(g_bMSAA)
	{
		msaaFlags |= (MSAA_8_SAMPLES | TEXTURE_WRITE_ONLY);
		g_msaaColor		   = g_pTexInterface->AddRenderTarget(dispWidth, dispHeight, PIXEL_FORMAT_RGBA8, msaaFlags);
		g_msaaDepth		   = g_pTexInterface->AddDepthStencilTarget(dispWidth, dispHeight, 32, 0, msaaFlags);
	}
	g_resolveTexture   = g_pTexInterface->AddRenderTarget(dispWidth, dispHeight, PIXEL_FORMAT_RGBA8, SAMPLE_NEAREST);
	g_edgeTexture	   = g_pTexInterface->AddRenderTarget(dispWidth, dispHeight, PIXEL_FORMAT_RGBA8, SAMPLE_NEAREST);



	// Generate and load random texture for SSAO //
	g_randomTexture = g_pTexInterface->AddTexture("Media/Textures/splash.dds", SAMPLE_BILINEAR | SAMPLE_CLAMP);
	g_groundTexture = g_pTexInterface->AddTexture("Media/Textures/brick-walk-texture.bmp", SAMPLE_TRILINEAR_ANISO | SAMPLE_WRAP);
	g_pTexInterface->SetGlobalAnisotropy(16.0F);

	// Gen global light //
	vec3 color = {0.5f, 0.5f, 0.5f};
	vec3 pos = {0.0f, 0.0f, 0.0f};
	CPointLight pl;
	pl.SetColor(color);
	pl.SetPosition(pos);
	pl.SetRadius(40.0f);
	g_lightManager->AddLight(&pl);
}