2015-08-31 2 views
0

я в настоящее время имеющий пиксельный шейдер:HLSL: Вырезать текстуры радиально

float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 
{ 

float4 color = tex2D(Sampler0,coords); 
float dx = coords.x - 0.5f; 
float dy = coords.y - 0.5f; 

float tpos = dx * dx + dy * dy; 
if(tpos <= 0.25f && tpos > 0.25f-width) 
    return color; 
else 
    return float4(0.0f, 0.0f, 0.0f, 0.0f); 
} 

Таким образом, я могу нарисовать круг. Но как я обрезаю круг, например. нарисовать круг 30 градусов? Или 60 градусов один? Спасибо.

ответ

1

Я хотел бы предложить использовать характеристическую atan2 (doc) (wiki), чтобы вычислить угол вашего фрагмента по отношению к окружности центру, а затем сделать вырезку, как ваше расстояние вырезка.

+0

Спасибо! Решил его: 'float degree = -180 + dg; if (радианы (градусы)> atan2 (dy, dx)) цвет возврата; еще ... ' – Gallardo994

Смежные вопросы