www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
twister или twisting bar
На страницу Пред.  1, 2, 3, 4, 5 ... 9, 10, 11  След.
 
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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-палитру градиентами линейными сделать, то будет типа яркость Smile

Цитата:

ну и дальше с u1,v1,u2,v2 осталось сообразить, какие значения присваивать..


Ну, это ведь текстурные координаты, то есть координаты отрезка на текстуре, который должен быть "натянут" на эту линию.




v1 и v2 могут быть разными, не обязательно как на картинке.

Далее играемся параметрами, на сколько хватит фантазии. Например там же есть процедура (правда не на asm) которая используя эту текстурную линию рисует текстурированный треугольник (там правда не предусмотрено правильное обрезание в случае, если треугольник залазит за левый край экрана).

Но уж для обычного текстурированного твистера этой рутины текстурной линии хватит с головой Smile

-


Последний раз редактировалось: 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    Заголовок сообщения: Ответить с цитатой

мало-мало матана.

какая-то фигня из вариантов выходит Sad
_________________
BiTL подстилка бандеровская
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
bi71



Зарегистрирован: 14.07.2012
Сообщения: 872


СообщениеДобавлено: Пт Фев 22, 2013 14:03    Заголовок сообщения: Ответить с цитатой

http://madteam.atari8.info/index.php?prod=fx

похоже на кошерный твистер
_________________
BiTL подстилка бандеровская
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Сб Фев 23, 2013 03:37    Заголовок сообщения: Ответить с цитатой

Очень симпатичный твистер: http://www.youtube.com/watch?v=vFL3jS7Tn4c&feature=player_detailpage#t=136s Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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


СообщениеДобавлено: Вт Мар 26, 2013 05:53    Заголовок сообщения: Ответить с цитатой

http://www.youtube.com/watch?v=8dpRUQAA5Oc&feature=player_detailpage#t=83s - о какой дрочибельный твистер!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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

не довел до конца одиночный эффект, какая-то фигня вышла.

амижно-попсовый эффект приводить не буду.

кому еще материала накидать? Cool
_________________
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    Заголовок сообщения: Ответить с цитатой

bi71 писал(а):

кто в гугле забанен:
http://blog.gamingyourway.com/post/2008/11/06/JellyCubeWithAnAnimatedPlasmaTexture.aspx


По ссылке описан только алгоритм рисования банальной плазмы. А ссылка там дальше ( http://blog.zupko.info/?p=140 ) на эффект названный 3d Twist Modifier. Это вообще хуйня, просто вершины куба смещаются туда сюда, что там непонятного и интересного?

bi71 писал(а):

и к тому же
http://www.pouet.net/prod.php?which=58141


Гибкий кубик в этой интре не имеет никакого отношения к тем ссылкам что ты привёл. Тут как раз тот самый случай, что ты как-то нашёл в моих pascal-евских примерах http://sources.codenet.ru/file/1316/distort.zip (здесь строки граней при отрисовке "волнятся" по синусу, причём естсественно только в координате X ) ничего больше)

Так что опять не понятно - чего тебя возбудило?

- - - -

Вот где меня действительно "гибкий кубик" распидарашивает, так это в этой крактро: http://pouet.net/prod.php?which=15027

Я не понимаю как он сделан. Если предположить, что он просто имеет овер9000 поликов (а он очень гладко деформируется, полики не торчат), то не совсем ясно, почему у меня на древней видеокарте это не тормозило). Хотя может правда просто много полигонов...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5 ... 9, 10, 11  След.
Страница 4 из 11

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах