Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Пт Фев 22, 2013 07:35 Заголовок сообщения: |
|
|
Вариант попроще, без излишек Паскаля
Код: | // Horizontal line using texturemapping
void TextureMapHorline(int Xbeg, int Xend,int y,
int u1,int v1,int u2,int v2,
UCHAR *source, UCHAR *dest)
{
if (Xbeg > Xend) // make sure Xbeg is left of Xend
{
int temp = Xbeg;
Xbeg = Xend;
Xend = temp;
}
int length = Xend - Xbeg;
int startofs = (y << 8) + (y << 6) + Xbeg; // equals y*320 + Xbeg
int DeltaX = 0; int DeltaY = 0;
if ((Xend-Xbeg) != 0)
{
DeltaX = ((u2-u1) * 256) / (Xend-Xbeg);
DeltaY = ((v2-v1) * 256) / (Xend-Xbeg); // 8.8 fixed-p
}
int TextureXpos = u1 << 8;
int TextureYpos = v1 << 8;
for (int i = startofs; i <= startofs + length; i++)
{
dest[i] = source[(TextureYpos/256)*256 + (TextureXpos/256)];
TextureXpos += DeltaX;
TextureYpos += DeltaY;
}
} |
интересно, что в Madrielle 4k попроще:
http://zxspectrum48.i-demo.pl/zxdemos_pliki/intros/MADRIE1K.TAP _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Пт Фев 22, 2013 10:05 Заголовок сообщения: |
|
|
bi71 писал(а): | спасибо, нашел похожую процедуру в The PXD trainer-serie #4
Код: | (xbeg,xend,y,u1,v1,u2,v2:integer;source,dest : word;bri:byte); |
зачем нужна bri? выходит яркость цвета?
|
Ну там вроде не совсем яркость, точнее совсем не яркость, это просто плюсует байт bri к байту цвета пикселя рисующегося в видео-буфер. Тобишь, если VGA-палитру градиентами линейными сделать, то будет типа яркость
Цитата: |
ну и дальше с u1,v1,u2,v2 осталось сообразить, какие значения присваивать.. |
Ну, это ведь текстурные координаты, то есть координаты отрезка на текстуре, который должен быть "натянут" на эту линию.
v1 и v2 могут быть разными, не обязательно как на картинке.
Далее играемся параметрами, на сколько хватит фантазии. Например там же есть процедура (правда не на asm) которая используя эту текстурную линию рисует текстурированный треугольник (там правда не предусмотрено правильное обрезание в случае, если треугольник залазит за левый край экрана).
Но уж для обычного текстурированного твистера этой рутины текстурной линии хватит с головой
-
Последний раз редактировалось: BiTL (Пт Фев 22, 2013 10:47), всего редактировалось 3 раз(а) |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Пт Фев 22, 2013 10:08 Заголовок сообщения: |
|
|
bi71 писал(а): |
интересно, что в Madrielle 4k попроще:
|
когда понимаешь принцип, упрощать можно хоть до посинения ) Но сначала обычно пишется понятный алгоритм, а уж потом придумываются способы оптимизировать его, заменить часть кода каким-то трюком ради уменьшения размера или экономии тактов, сам же понимаешь. |
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Пт Фев 22, 2013 11:37 Заголовок сообщения: |
|
|
BiTL писал(а): | bi71 писал(а): |
интересно, что в Madrielle 4k попроще:
|
когда понимаешь принцип, упрощать можно хоть до посинения ) Но сначала обычно пишется понятный алгоритм, а уж потом придумываются способы оптимизировать его, заменить часть кода каким-то трюком ради уменьшения размера или экономии тактов, сам же понимаешь. |
там интро разбито на три кусочка:
-пародия на фрактал Серпинского(59 байт)+звук интры+сам твистерю
но перед процедурой идет долгий precalc, сути которого не понимаю, похоже, что ради текстового скролла готовится лукап-табличка, но алгоритм просто непонятен.
да и в других 8битных продуктах все не ясно.
Сейчас написал на Пуревасике, похоже на правду, хотя и картинка ужасная.
надо попробовать нормальный твистер написать. _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Пт Фев 22, 2013 13:33 Заголовок сообщения: |
|
|
мало-мало матана.
какая-то фигня из вариантов выходит _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Сб Фев 23, 2013 07:38 Заголовок сообщения: |
|
|
Вариант на SpecBas
http://www.worldofspectrum.org/forums/showthread.php?t=42600
и мой нубский код(PureBasic):
Код: | Global Dim texture.b (640,640)
;// Horizontal line using texturemapping
;void TextureMapHorline(int Xbeg, int Xend,int y,int u1,int v1,int u2,int v2,UCHAR *source, UCHAR *dest)
Procedure TextureMapHorline(Xbeg.i,Xend.i,y.i,u1.i,v1.i,u2.i,v2.i);,UCHAR *source, UCHAR *dest)
If (Xbeg > Xend); // make sure Xbeg is left of Xend
temp.i = Xbeg;
Xbeg = Xend;
Xend = temp;
EndIf
length.i = Xend - Xbeg;
;;;;;;;;;;;;;;;;;;;;int startofs = (y << 8) + (y << 6) + Xbeg; // equals y*320 + Xbeg
DeltaX.i = 0
DeltaY.i = 0
If ((Xend-Xbeg) <>0)
DeltaX = ((u2-u1) * 256) / (Xend-Xbeg);
DeltaY = ((v2-v1) * 256) / (Xend-Xbeg); // 8.8 fixed-p
EndIf
TextureXpos.i = u1; << 8;
TextureYpos.i = v1 << 8;
;For (int i = startofs; i <= startofs + length; i++)
For i=Xbeg To Xbeg+length; {
;dest[i] = source[(TextureYpos/256)*256 + (TextureXpos/256)];
Plot(i,y,RGB(texture(TextureXpos>>8,TextureYpos>>8),0,0))
TextureXpos = TextureXpos +DeltaX;
TextureYpos = TextureYpos +DeltaY;
Next i
EndProcedure
For i=0 To 640
For j=0 To 640
texture(i,j)=i&j;(i!j)&255
Next j
Next i
InitSprite()
OpenWindow(0,0,0,640,480,"Twister textured",#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
ang.f=0.2
damp.f=0.02
amp.f=0
pi.f=3.1415927
Repeat
StartDrawing(ScreenOutput())
For a=1 To 480-1
LineXY( 0,a,640,a,0)
x1.i=Int(((Sin(((a*amp)*pi/180)+ang))*40*2)+160);
x2.i=Int(((Sin(((a*amp)*pi/180)+ang+90*pi/180))*40*2)+160);
x3.i=Int(((Sin(((a*amp)*pi/180)+ang+90*2*pi/180))*40*2)+160);
x4.i=Int(((Sin(((a*amp)*pi/180)+ang+90*3*pi/180))*40*2)+160);
If x1<x2
;LineXY( x1,a,x2,a,RGB(255,0,0))
TextureMapHorline(X1,X2,a,X1,a,X2,a)
EndIf
If x2<x3
LineXY(x2,a,x3,a,RGB(0,255,0))
EndIf
;Color 0,0,255
If x3<x4
LineXY(x3,a,x4,a,RGB(0,0,255))
EndIf
;Color 0,0,128
If x4<x1
LineXY(x4,a,x1,a,RGB(255,255,0))
EndIf
Next a
ang=ang+0.3
amp=amp+damp
If (amp>1) Or (amp<-1)
damp=-damp
EndIf
StopDrawing()
; -------- Lets the show start --------
FlipBuffers()
Delay(100)
Until WindowEvent()=#PB_Event_CloseWindow ;GetAsyncKeyState_(#VK_ESCAPE)
End
|
с текстурами ерунда полная. _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Вт Мар 26, 2013 06:36 Заголовок сообщения: |
|
|
BiTL писал(а): | http://www.youtube.com/watch?v=8dpRUQAA5Oc&feature=player_detailpage#t=83s - о какой дрочибельный твистер! |
ты бы хоть время указал...
между делом, в описании алгоритма rubbercube попалась ссылка на твистер. вот его бы и стоило обсудить. _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Вт Мар 26, 2013 10:12 Заголовок сообщения: |
|
|
bi71 писал(а): |
ты бы хоть время указал... |
время в ссылке обозначено, тобишь видео должно стартовать с 83 секунды. Если у тебя этого не происходит, значит у тебя на ютубе включен режим HTML5 ( http://www.youtube.com/html5 ), а html5-плеер неумеет стартовать с указанной позиции. Если флэш-плеером смотреть, то всё нормально. |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Вт Мар 26, 2013 11:19 Заголовок сообщения: |
|
|
bi71 писал(а): |
между делом, в описании алгоритма rubbercube попалась ссылка на твистер. вот его бы и стоило обсудить. |
а ссылку эту не судьба показать? Вот ты вечно, пишешь, а хуй тебя знает, о чём речь, где это ты видел, как это найти? Будто все телепаты.
Если оно в описании rubbercube, а под данным определением понимается тот присловутый stored cube (slime cube), о котором я писал раз пиисят, то скорее всего и твистер по той ссылке основан на данном эффекте, и обсуждать там не чего.
ЗЫ: склоняюсь к мысли, что и показанный мной в последней ссылке "твистер" именно так сделан, просто кэширование кадров и построчный вывод со смещением по оси времени.
Вот так же и подобные гифки делают http://clck.ru/8bnie |
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Вт Мар 26, 2013 13:12 Заголовок сообщения: |
|
|
BiTL писал(а): | bi71 писал(а): |
между делом, в описании алгоритма rubbercube попалась ссылка на твистер. вот его бы и стоило обсудить. |
а ссылку эту не судьба показать? Вот ты вечно, пишешь, а хуй тебя знает, о чём речь, где это ты видел, как это найти? Будто все телепаты.
Если оно в описании rubbercube, а под данным определением понимается тот присловутый stored cube (slime cube), о котором я писал раз пиисят, то скорее всего и твистер по той ссылке основан на данном эффекте, и обсуждать там не чего.
ЗЫ: склоняюсь к мысли, что и показанный мной в последней ссылке "твистер" именно так сделан, просто кэширование кадров и построчный вывод со смещением по оси времени.
Вот так же и подобные гифки делают http://clck.ru/8bnie |
вечно ты матом ругаешься..
кто в гугле забанен:
http://blog.gamingyourway.com/post/2008/11/06/JellyCubeWithAnAnimatedPlasmaTexture.aspx
и к тому же
http://www.pouet.net/prod.php?which=58141
не довел до конца одиночный эффект, какая-то фигня вышла.
амижно-попсовый эффект приводить не буду.
кому еще материала накидать? _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
bi71
Зарегистрирован: 14.07.2012 Сообщения: 872
|
Добавлено: Вт Мар 26, 2013 13:13 Заголовок сообщения: |
|
|
BiTL писал(а): | bi71 писал(а): |
ты бы хоть время указал... |
время в ссылке обозначено, тобишь видео должно стартовать с 83 секунды. Если у тебя этого не происходит, значит у тебя на ютубе включен режим HTML5 ( http://www.youtube.com/html5 ), а html5-плеер неумеет стартовать с указанной позиции. Если флэш-плеером смотреть, то всё нормально. |
в общем, втыкать и фапать с 1:23. _________________ BiTL подстилка бандеровская |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Вт Мар 26, 2013 15:46 Заголовок сообщения: |
|
|
По ссылке описан только алгоритм рисования банальной плазмы. А ссылка там дальше ( http://blog.zupko.info/?p=140 ) на эффект названный 3d Twist Modifier. Это вообще хуйня, просто вершины куба смещаются туда сюда, что там непонятного и интересного?
Гибкий кубик в этой интре не имеет никакого отношения к тем ссылкам что ты привёл. Тут как раз тот самый случай, что ты как-то нашёл в моих pascal-евских примерах http://sources.codenet.ru/file/1316/distort.zip (здесь строки граней при отрисовке "волнятся" по синусу, причём естсественно только в координате X ) ничего больше)
Так что опять не понятно - чего тебя возбудило?
- - - -
Вот где меня действительно "гибкий кубик" распидарашивает, так это в этой крактро: http://pouet.net/prod.php?which=15027
Я не понимаю как он сделан. Если предположить, что он просто имеет овер9000 поликов (а он очень гладко деформируется, полики не торчат), то не совсем ясно, почему у меня на древней видеокарте это не тормозило). Хотя может правда просто много полигонов... |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|