rendered paste bodyconst 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);