Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

3D графика в Turbo Pascal 7.0   Найти похожие ветки 

 
_   (2009-10-25 13:59) [0]

Вот никогда не думал, что на Паскале вот такое можно вытворять:
http://pascal.sources.ru/graph/inertia.htm

Посмотрите демки, впечатляет.


 
Virgo_Style ©   (2009-10-25 14:03) [1]


> Вот никогда не думал, что на Паскале вот такое можно вытворять:


почему бы и нет?


 
xayam ©   (2009-10-25 14:05) [2]

ничего невозможного нет, как обычно


 
_   (2009-10-25 14:05) [3]

В те далёкие времена можно было бы неплохую 3D-игрушку состряпать ещё до 1-го 2.5D-DOOM. С хорошей графикой.


 
@!!ex ©   (2009-10-25 15:07) [4]

У меня в качестве первой курсовой в ВУЗе было 3D на паскале. пробелма то в чем? Такой же язык как и все.


 
_   (2009-10-25 15:16) [5]


> У меня в качестве первой курсовой в ВУЗе было 3D на паскале.
>  пробелма то в чем? Такой же язык как и все.


Объёмный кубик? Или что? На кого учился?


 
boa_kaa ©   (2009-10-25 15:50) [6]

О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг,
И случай, бог изобретатель...

А.С. Пушкин


 
@!!ex ©   (2009-10-25 15:59) [7]

> [5] _   (25.10.09 15:16)

Прикладная математика и информатика.

У нас задание было сделать презентацию факультета... я выпендрился, сделал софтварный 3Д рендер. :)))
Самое сложное - сделать фрагментацию треугольника. Все остальное делается без особых проблем.


 
_   (2009-10-25 16:45) [8]


> я выпендрился, сделал софтварный 3Д рендер. :)))


Тоже на Паскале?
Я учусь на первом курсе и неплохо знаю OpenGL и основы Direct3D,
тоже повыпендриваюсь. ;)


 
@!!ex ©   (2009-10-26 06:57) [9]

> [8] _   (25.10.09 16:45)

Могу поделится сорсами, если надо.


 
_   (2009-10-26 09:34) [10]

Был бы рад, поучиться. ;)
Но с ящиком проблемы. (
Просьба где нибудь залить, учитывая что сорсы не так уж много весят.


 
brother ©   (2009-10-26 09:37) [11]

ну, а мне на мыло плз... поглядим шо за велосипед ;)


 
brother ©   (2009-10-26 09:37) [12]

те в асю)


 
_   (2009-10-26 18:37) [13]

UP


 
Virgo_Style ©   (2009-10-26 19:48) [14]

Ага. У меня все было гораздо скромнее - всего-то кубик рендерился. Правда, уголки кубика почему-то пропадали... но меня и так устраивало )


 
_   (2009-10-26 20:00) [15]

Самый интересный пример (IMV.exe), рендер головы: можно натягивать текстуру, настраивать свет, полупрозрачность, различные заливки и др.
Угарно. Гы. =)


 
Kostafey ©   (2009-10-26 20:22) [16]

Да, помню. Но много проблем было с движением объектов.
Про какие-то специализированные граф. библиотеки я не
знал (2000г). Объекты при рендериге заметно дергались,
вся картинка мерцала. Частично спасали ассемблерные
вставки, но не до конца.
Тот факт, что эта проблема так и не была до конца
решена, послужило причиной того, что я бросил писать
свою первую (хоть и не последнюю :))) игрушку. Если
бы тогда я отрыл что-то вроде OpenGL, Direct3D или
что-то подобное, не извесно чем бы сейчас занимался :(.


 
_   (2009-10-26 20:39) [17]


> 2000г


В 2000 вышла книга по OpenGL Краснова.
Если к ней ещё приплюсовать примеры Хорна, то можно было бы догнать
Quake 3 по графике. А тот вышел в 99.


 
Kostafey ©   (2009-10-26 21:03) [18]

> В 2000 вышла книга по OpenGL Краснова.

Легко вам говорить. Вот для меня в то время книжка
по TurboPascal за 60 руб. стоила целое состояние!

О! Не надо мне рассказывать про сканы в интернете.
Интернет стоил вообще заоблачные деньги, на
него ходили смотреть все вместе на несколько минут
по большим праздникам. :((


 
_   (2009-10-26 21:08) [19]


> Легко вам говорить.


М-да, фиговые были деньки...


> Интернет стоил вообще заоблачные деньги, на
> него ходили смотреть все вместе на несколько минут
> по большим праздникам.


А я кроме Dendy ничего и не видел, тогда. =)


 
Pavia ©   (2009-10-26 21:35) [20]

Да ладно врать нормальный интернет был в 2000 году. Тогда пол Москвы на халявном интернете сидело. И сейчас сидит только на другой халяве.


> > В 2000 вышла книга по OpenGL Краснова.

В 2004 вообще-то вышла.


 
_   (2009-10-26 21:47) [21]


> В 2004 вообще-то вышла.


Неееет уж, в 2000-м. по Direct3D - в 2000. ;P
http://www.delphikingdom.com/asp/book.asp?BookID=21


 
Kostafey ©   (2009-10-26 21:58) [22]

> [20] Pavia ©   (26.10.09 21:35)
> Тогда пол Москвы на халявном интернете сидело.

На планете Москва, может, тырнету и было много, а вот
с деревнями, городками и "городами" - было сложнее.
Сейчас - да. К каждой берлоге оптоволокно проведено.


 
GDI+   (2009-10-26 22:03) [23]


> _   (25.10.09 13:59)
>
> Вот никогда не думал, что на Паскале вот такое можно вытворять:
>
> http://pascal.sources.ru/graph/inertia.htm


Как курсовая/дипломная сойдёт, а так не впечатляет. Фигня.


 
_   (2009-10-27 08:39) [24]


> Как курсовая/дипломная сойдёт, а так не впечатляет. Фигня.


Пример с 3D-головой смотрел?
А говорил фигня...


 
_   (2009-10-28 10:18) [25]

@!!ex ©

Где сырцы?


 
@!!ex ©   (2009-10-28 10:34) [26]

> [25] _   (28.10.09 10:18)

Че за наезд? ]:->
Только сегодня освободился. Готовили проект к ACGI.
Сейчас допилю текстурирование и выложу.


 
_   (2009-10-28 10:53) [27]


> Че за наезд? ]:->
> Только сегодня освободился.


Я будто знал. ]:)
Ждём-с... ;)


 
@!!ex ©   (2009-10-28 12:58) [28]

http://sol-online.org/content/software3d.rar

проект делится на 5 логических частей:
SoftwareShader.pas - самый низкий уровень. реализует обработку вершин, фрагментов и тест глубины. Плюс тут определены все основные типы с которыми работает растеризатор. Если сравнивать с OpenGl - то это шейдеры

Software3DPipeline.pas - собственно растеризатор. Если сравнивать с OpenGl - то это собственно растеризатор на видеокарте

Transforms3D.pas - надстройка реализующая работу с матрицами. Если сравнивать с OpenGl - то это драйвер.

ShadersEx.pas,Textures.pas - расширение функционала. Загрузчик текстур и шейдеры умебщие работать с текстурами и блендингом.

Main.pas - пример использования.

В растеризаторе сейчас испольузется очень медленное вычисление Varyings переменных. Значения вычисляются для каждого пикселя. Используется линейная интерполяция, поэтому текстуру козявит при трансформации полигона. Решение есть: использовать перспективную интерполяцию. Но она шибко медленная и кода там раз в 5 больше. Поэтому делать не стал.
Варианты оптимизации:
1) Не все значения нужно интерполировать. Если во всех трех вершинах значение одно и тоже, переменную надо помечать как неизменную и не трогать. Это приличное количество вычислений.
2)Сейчас значение вычисляется для каждого пикселя. Можно вычеслять по краям скан-линии и уже банально использовать приращение, а не интерполяцию.

Растеризатор прекрасно распаралеливается, можно хоть каждую скан-линию в отдельный поток определять.


 
@!!ex ©   (2009-10-28 13:06) [29]

Кстати, если перенести шейдеры и собственно растеризатор на OpenCL или CUDA, можно сделать вполне сносный рендерер для Макса и аналогичных инструментов.


 
_   (2009-10-28 13:35) [30]

Большое спасибо.

P.S. [Шёпотом] Сейчас сюда прибежит antonn. ;)


 
@!!ex ©   (2009-10-28 13:55) [31]

> [30] _   (28.10.09 13:35)

Эм.. Да ради бога. :)
Это чисто демонстрационный код, не претендующий на скорость или большие возможности.
Хотя возможность заменять FFP на свои обработчики позволяет делать все, что умеют современные видеокарты.


 
_   (2009-10-28 15:32) [32]

А где пример объёмной фигуры? Или хотя бы кубика? ;)


 
Sapersky   (2009-10-28 17:04) [33]

А где пример объёмной фигуры? Или хотя бы кубика? ;)

Видимо, все силы ушли на имитацию архитектуры OpenGL. На кубик уже не хватило :)

Вот ещё интересная демка:
http://sapersky.narod.ru/files/Voxel.rar
картинку рисует несколько корявую - но оцените объём кода... чистый рендер, безо всяких классов-битмапов - около 100 строк. А разрешение карты можно увеличить, хотя воксели прямо "под ногами" всё равно будут резать глаз квадратными формами. Нужно либо какую-то межвоксельную интерполяцию придумывать, либо делать подстройку детализации в зав-ти от расстояния (с фрактальной догенерацией мелких деталей). Или исключить возможность разглядывать воксели под ногами - изометрия (С&C3 вроде?), вертолётный симулятор (старые Comanche).
Глубоко по теме не копал, насколько технология в принципе перспективна - мне судить сложно, может быть, врождённые пороки неискоренимы на самом деле. Но у софтверного клона видеокарты перспективы тоже сомнительны, а воксели - это хотя бы оригинально :)
Впрочем, Кармак, как обычно, уже придумал всё до нас, скрестив бульдога с носорогом - "ray tracing into a sparse voxel octree":
http://www.pcper.com/article.php?aid=532


 
_   (2009-10-28 17:30) [34]


> Вот ещё интересная демка:


Шикарно. Можно немного посидеть и сделать небольшой шутер, который можно выставить на IGDC. ;)
P.S. antonn, вот точно, сейчас прибежит. ;)


 
@!!ex ©   (2009-10-28 18:00) [35]

> [32] _   (28.10.09 15:32)
> А где пример объёмной фигуры? Или хотя бы кубика? ;)

А в чем проблема набросать в растеризатор набор вершин задающих кубик?



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.007 c
2-1257739169
Андрей Смирнов
2009-11-09 06:59
2009.12.27
Как правильно передать массив URL в Функцию (WinInet)


15-1256416210
Юрий
2009-10-25 00:30
2009.12.27
С днем рождения ! 25 октября 2009 воскресенье


4-1226011581
AnarchyMob
2008-11-07 01:46
2009.12.27
Создание главного меню на WinCE


15-1256399840
_
2009-10-24 19:57
2009.12.27
Психотип. Кто Вы?


15-1256647102
Scot Storch
2009-10-27 15:38
2009.12.27
Проблема с кодировкой (русские символы)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский