All pastes #230672 Raw Edit

Unnamed

public text v1 · immutable
#230672 ·published 2006-10-31 11:25 UTC
rendered paste body
const float x_off_1 = 1.0f / 1024.0f;
const float y_off_1 = 1.0f / 768.0f;
const float boardwidth = 1024.0f;
const float boardheight = 768.0f;
const float paddleWidth = 30.0f;
const float paddleHeight = 150.0f;
const float ballRadius = 10.0f;
const float ballSpeed = 20.5f;
const float halfwidth = 1024.0f / 2.0f;

float4 ball = tex2D(input.Sampler1, float2(0,0));
float4 paddles = tex2D(input.Sampler1, float2(1,1));

if(input.TexCoord0.r < x_off_1 && input.TexCoord0.g < y_off_1)
{
	if((ball.r < paddles.r  + (paddleWidth / 2.0f) + ballRadius
	&& ball.g < paddles.g + (paddleHeight / 2.0f) + ballRadius
	&& ball.g > paddles.g - (paddleHeight / 2.0f) - ballRadius) ||
	(ball.r > paddles.b  - (paddleWidth / 2.0f) - ballRadius
	&& ball.g < paddles.a + (paddleHeight / 2.0f) + ballRadius
	&& ball.g > paddles.a - (paddleHeight / 2.0f) - ballRadius) &&
	(ball.r < (boardwidth - ballRadius) || ball.r > ballRadius))
	{
		if(ball.b > 1)
		{
			ball.x -= (paddleWidth - 1);
		}
		else
		{
			ball.x += (paddleWidth + 1);
		}
		
		//distance from center
		float2 vel = float2(ball.ba);
		vel = reflect(float2(vel), float2(1,0));
		ball.ba = vel.xy;
		
		
	}
	else if((ball.r > (boardwidth - ballRadius) || ball.r < ballRadius) ||
	((ball.r < (paddles.r - paddleWidth) && ball.r > 0) || (ball.r > (paddles.b + paddleWidth) && ball.r < boardwidth)))
	{
		ball.r = halfwidth;
		ball.g = boardheight / 2.0f;
		
		float2 noise = input.Noise2D(float2(input.Float_C1,input.Float_C1))*ballSpeed;
		ball.b = noise.x;
		ball.a = noise.y;
		
		ball.b = max(ball.b, 1.0f);
		ball.b = min(ball.b, 10.0f);
		
		ball.a = max(ball.a, 1.0f);
		ball.a = min(ball.a, 10.0f);
		
		ball.b *= ballSpeed;
		ball.a *= ballSpeed;
		
		ball.b /= noise.y;
		ball.a /= noise.x;
	}
	else if(ball.g > (boardheight - (ballRadius)) || ball.g < (ballRadius))
	{
		ball.a = -ball.a;
	}	
	if(ball.b != 0.0f || ball.a != 0.0f)
	{
		ball.r += ball.b;
		ball.g += ball.a;
	}
	//final speed check
	if(ball.b < 5.0f && ball.b > -5.0f)
	{
		if(ball.b > 0)
		{
			ball.b += 1;
		}
		else
		{
			ball.b -= 1;
		}
	}
	output.Color = float4(ball.r, ball.g, ball.b, ball.a);
}
else
{	
	paddles.r = (boardwidth / 100) * 10;
	paddles.b = boardwidth - ((boardwidth / 100) * 10);
	if(paddles.g > boardheight + 1000.0f || paddles.a > boardheight + 1000.0f)
	{
		paddles.g = halfwidth;
		paddles.a = halfwidth;
	}
	paddles.g = paddles.g + input.Float_C0;
	paddles.a = paddles.a - input.Float_C0;
	//CLAMP
	if(paddles.g > boardheight - (paddleHeight / 2))
	{
		paddles.g = boardheight - (paddleHeight / 2);
	}
	
	if(paddles.g < paddleHeight / 2)
	{
		paddles.g = paddleHeight / 2;
	}
	
	if(paddles.a > boardheight - (paddleHeight / 2))
	{
		paddles.a = boardheight - (paddleHeight / 2);
	}
	
	if(paddles.a < paddleHeight / 2)
	{
		paddles.a = paddleHeight / 2;
	}
	//END CLAMP
	output.Color = float4(paddles);