Демонстрация эффекта затенения Gourad Shading.
How to code gouraud shading. Full pascal source included.
Coded by The Faker/S!P. Fast iNjEcTioN By Access/Antares
Привет, чуваки ...
Я тут отсутствовал некоторое время, а когда вернулся,
застал дискуссию, в которой обсуждают и мой код и мою персону...
Да, я специально постил некоторые спорные утверждения, которые,
на мой взгляд, должны были способствовать конструктивному обсуждению
и расширению кругозора тех людей, которые верят только тому,
что пишут в компьютерных журналах и говорят "так называемые гуру".
Подобная реакция на мой постинг мне совсем не нравится - некоторые
парни реагировали весьма по-детски, в стиле
"ты-придурок-гонишь-полную-чушь-и-мы-просто-ржем-над-тобой".
Возможно, такие высказывания обусловлены возрастом моих юных оппонентов
(или чем-то другим?).
В общем, меня это сильно разозлило, и я ответил им в довольно-таки
резкой форме. По большей части это просто грязь, и ламеры те, кто думает,
что уличили меня в моей неправоте, а на самом деле - сами выставили себя
на посмешище, когда пытались улучшить 16-битный код в 32-разрядном режиме.
НИ ОДИН подобный код не работает, как я и заявлял ранее, хотя меня и
пытались смешать с дерьмом некоторые "товарищи" с непомерно раздутыми
амбициями.
Еще одной темой, вызвавшей дискуссию, было мое утверждение о том,
для алгоритма Gouraud shading требуется около 0.25 инструкций кода
на каждый пиксел. Я написал это только потому, что был весьма удивлен,
узнав, что некоторые люди до сих пор считают этот алгоритм черезчур
"кодо-прожорливым" ... хотя я к тому времени уже и заменил его на
Phong shading. Судя по ответам, которые я получил,
некоторые подумали, что я подразумеваю 1/4 фрейма или что-то в этом роде,
и они отвечали в духе "если-я-не-могу-этого-сделать-то-как-ОН-может-
это-сделать-Здесь-какая-то-ошибка-или-я-распоследний-ламер".
Удивительно, что некоторые _действительно_ считают, что их код
оптимизирован настолько хорошо, что уже никто не сможет сделать
его быстрее потому, что это просто невозможно. Однако, их ожидает
удивление и разочарование.
НИКОГДА не говорите, что ваш код оптимален,
поскольку может придти вася пупкин и действительно сделать его быстрее -
тем более, если это касается Pentium-инструкций, или каких-нибудь
недокументированных фич.
Вот, собственно, почему я и решил привести здесь свой код.
Кроме того, вы можете найти релизы моих intro с исходниками
и посмотреть на них. Вот тогда мы сможем продолжить дискуссию...
И еще относительно предоставления исходного кода...
Общеизвестно, что демо-группы обычно *НЕ* открывают свои исходники.
В то время как некоторые американские демо-группы избалованы сетями
и скоростными каналами, мы, европейцы начинали вообще без каких-либо
туториалов - большинство из нас не имеет доступа в Internet и даже модема,
как такового. Но, не будем об этом.
В сегодняшней ситуации я считаю просто НЕОБХОДИМЫМ открыть исходники.
И совсем не потому, что сегодня появилось множество новичков,
которые, буквально, ТРЕБУЮТ (!) открыть код, потому, что он, видите-ли,
им нужен. При этом они пользуются странным методом
"мы будет чморить его, пока он не отдаст нам исходники".
Мне наплевать на подобных ЛАМЕРОВ.
Попытайтесь посмотреть на открытый код как на ПОДАРОК,
а не как ваше _право_!
Несмотря на все это, я и раньше выпускал релизы с исходниками,
и, возможно, буду это делать и дальше...
Кстати, а лично вы, например, с удовольствием открыли бы свои
коды/приемы/трюки тем, кто пытается вас обосрать?
Фактически, большинство таких людей - просто ламеры, не способные
предоставить никаких доказательств того, что они действительно могут
писать что-нибудь дельное. Любой дурак может трепаться о том,
"как надо делаеть то или это", и, пофигу, прав оппонент или нет -
флеймить с любым, кто имеет другое мнение.
Я считаю, что такой поход приванивает фашизмом.
Возьмем, к примеру, DOOM: многие 'клянутся', что они уже писали или пишут
подобные вещи - я не знаю, кто выдвинул утверждение, что в DOOM
есть отсечение лучей, но я держу пари, что парни из ID обсирались от смеха,
читая подобные треды ;) Я думаю, что просто в их интересах
дезинформировать общественность, поскольку им нужно продавать
свою технологию и программы, или я неправ?
(Это только мое предположение, а вовсе не обвинение, dudes).
Конечно, вполне возможно заставить DOOM отсекать лучи, но я очень сомневаюсь,
что вам при этом удастся достичь скорости оригинала.
Почему я пришел к такому заключению?
Потому, что не только я, но и некоторые из ведущих демо-кодеров убедились
в этом на собственном опыте.
(Возьмите, к примеру, программу ACK3D, в которой реализовано отсечение лучей.
Но и она, как вы сами можете убедиться, далеко не дотягивает даже до скорости
Wolf3D, и ее производительность при выводе пола/потолка намного хуже ..)
Вы можете смеяться и дальше, но я, как демо-кодер, _всегда_ проверяю
алгоритмы на их применимость и эффективность. И я выбираю не _самый_крутой_
алгоритм, а тот, который соответствует требованиям конкретной задачи.
Например, я никогда не использую BSP-деревья - хотя я и прекрасно знаком
с этим алгоритмом, но пока не вижу смысла в его применении.
Что я, собственно, хочу этим сказать - не надо заглядывать в рот тем,
кто сам называет себя Гуру. Просто попробуйте самостоятельно взглянуть
на суть проблемы.
Я знаю, что некоторые здесь опять поднимут вой либо по поводу вышесказанного,
либо по поводу выловленных ими мелких багов в моей программе, либо из-за
недостаточной оптимизации отдельных ASM-блоков.
Да и хрен с ними - надо же им хоть чем нибудь заниматься ;)
Я благодарю всех тех, кто знает меня, кто видел мои программы
и поддерживает меня в этой группе - Вы знаете, кто Вы!
Меня действительно не волнует, что вы будете делаеть с этим исходником,
поскольку для меня он уже устарел ... Почему?
Этот код был написан около года назад, я ничего в нем не оптимизировал
кроме внутреннего цикла, так что, мой новый Phong сегодня гораздо быстрее :)
Я привожу здесь лишь пример _работающего_ кода, а не "полностью
документированный, хорошо-структурированный, ascii-разукрашенный код
для защиты свой своей задницы" - мне и без этого есть, чем заняться.
Подписано, Faker (S!P Internet PR)
_____________________________________________________________
\ \ \
| "No one told you when to run, | in fake life: |
| you missed the starting gun." | Stefan Ohrhallinger |
| | St. Laurenz 54 |
| SURPRISE! PRODUCTIONS, AUSTRIA | A-4950 ALTHEIM |
| | |
| "lightyears ahead!" | +43-732-2457-1025 |
| __________________________________\_______________________\__
\_/____________________________________________________________/