Я пытаюсь обернуть изображение вокруг цилиндра в серебряном свете. Я много смотрел в гугле, но ничего не нашел. Насколько я знаю, это можно сделать с помощью пиксельного шейдера, но не знаю, как это сделать.
Возможно ли это?
Спасибо.
Как обернуть изображение вокруг цилиндра в Silverlight
Ответы (2)
Это не полная намотка на цилиндр, но вы получите начальную идею / пример:
(код находится в GLSL, а не в HLSL, но я думаю, что преобразовать его будет несложно)
uniform sampler2D tex;
void main()
{
vec2 cen = vec2(0.5,gl_TexCoord[0].y)-gl_TexCoord[0].xy;
cen = vec2(pow(cen.x,1.7),pow(cen.y,2.2));
cen.y = 3.9*sin(1.8*gl_TexCoord[0].x-2.3);
vec2 mcoord = 1.65*vec2(-0.22+gl_TexCoord[0].x,1.95+gl_TexCoord[0].y);
gl_FragColor = texture2D(tex, mcoord+cen);
}
Из этого

вы получите что-то вроде этого 
Удачи
person
Agnius Vasiliauskas
schedule
03.09.2010
Спасибо за ответ. Я попробую это.
- person Samvel Siradeghyan; 04.09.2010
Совершенно то, что мне нужно. Если кому-то нужен HLSL, вот его ввод sampler2D: register (s0); float4 main (float2 uv: TEXCOORD): COLOR {float4 color = 0; float2 center = float2 (0,5, ув.х / 2); center = float2 (pow (center.x, 1.7), pow (center.y, 2.2)); center.y = 3.9 * sin (1.8 * uv.x - 2.3); float2 mcoord = 1.65 * float2 (-0.22 + uv.x, 1.95 + uv.y); uv.x = mcoord.x + center.x; uv.y = mcoord.y + center.y; цвет = tex2D (ввод, УФ); возврат (цвет); } По этой ссылке вы можете узнать, как использовать собственные эффекты шейдера: silverlight.net / learn / videos / all / pixel-effects.
- person Samvel Siradeghyan; 05.09.2010
можем ли мы получить обобщенный шейдер с входными переменными?
- person foson; 09.02.2011
Вы можете попробовать Zam3d. Раньше я использовал пробные версии, и вы можете получить трехмерную фигуру и попробовать установить фон для изображения. Посмотрите, поможет ли это.
person
Abhi
schedule
02.09.2010