Главная | Форум | Мой профиль | Выход | RSS
Меню сайта
Мини-чат
200
Наш опрос
Расширение спектра деятельности. Тоесть принимать и по возможности помогать не только Ultimate 3D
Всего ответов: 298
Кабинет

Логин:
Пароль:
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Наши друзья
  • Официальный cайт U3D
  • Лучший сайт по GM
  • Сайт по геймдеву
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Мы рады приветствовать Вас на русскоязычном официальном сайте игрового движка Game Maker+Ultimate3D. Этот сайт создан для всех тех, кто хотел бы своими силами создать хотя бы одну компьютерную 3D игру, но не знает, как это сделать и с чего начать.Вы всегда хотели заняться разработкой компьютерных игр, но не знали как?Тогда вы попали по адресу. Game Maker с Ultimate3D это микс, который позволит делать захватывающие компьютерные игры с неограниченными возможностями. Так же есть форум на котором можно задовать свои вопросы по Ultimate 3D!

    Шейдеры, пост обработки.

    Это - действительно интересная тема, потому что это имеет дело с очень сильной особенностью. Как только Вы знаете то, что почтовый экран shader, Вы согласитесь со мной. Таким образом вот объяснение. Вы уже должны знать, каков стандарт shader эффект. В противном случае пожалуйста прочитайте главу, которая имеет дело с ними. Если Вы не знаете, как написать shaders, Вы не можете написать, что почта показывает на экране shaders и если Вы не знаете то, что они - Вы, не может даже использовать их. Нормальные эффекты shader являются большими, потому что они могут использоваться для многих очень приличных эффектов. Однако, их возможности ограничены, потому что они могут быть применены только к единственным материалам моделей. Это - shaders экрана почты неудобства, не имеют. Они не становятся относившимися специфические материалы или модели, но к целому экрану. После Ultimate 3D отдал полную сцену, это применяет почтовый экран shaders к предоставленному изображению. Это делает их сильными.

    Простой пример для этого - то, что Вы хотите, чтобы все было черно-бело по некоторым причинам. Вы могли понять это, создавая черно-белые копии всех структур и изменяя все материальные цвета на шкалу яркости. Вы могли также использовать пиксел shader эффект для абсолютно всего, что это видимо. Ни один не желателен, потому что это требует, чтобы Вы изменили каждый отдельный объект в своей сцене. С почтовым экраном shader это может быть понят намного более легкий. Вы просто пишете один (очень простой), почта показывает на экране shader, который осуществляет черно-белый эффект. Тогда Вы применяете это, и Вы обходитесь без даже касание любых объектов сцены. Почтовый экран shader только берет предоставленное изображение, вынимает цвет из каждого отдельного пиксела, и производит это к экрану.

    Это - пример, в котором почтовый экран shader спасает Вас большая работа, но это не делает кое-чего, что не было бы возможно без этого. Таким образом вот другой, который не мог быть сделан без почтового экрана shaders: простой эффект пятна. Предположите, что главный герой Вашей игры был отравлен. Теперь Вы нуждаетесь в некотором прохладном эффекте показать игроку, что он не прекрасен. Эффект пятна, который относится к целому экрану, только прекрасен с этой целью. С обычными эффектами shader это не могло быть осуществлено, но с почтовым экраном shaders это не проблема.

    Диапазон возможных эффектов широк. Цветок, пятно и различные эффекты пятна движения - общее использование почтового экрана shaders. Дополнительно, shaders экрана почты может использоваться для многочисленных эффектов деформации. Различные экзотические эффекты могут также быть поняты. Например Вы можете инвертировать цвета, изменить гамму, дважды замеченное изображение (для пьяных главных героев) ;), затемнить или украсить специфические области экрана, выдвинуть на первый план контуры для комической графики стиля или заставить почту показать на экране shaders, которые заставляют все смотреть как в старом черно-белом кино, которое было наблюдаемыми тысячами времен. Другой вещью, для которой они могут использоваться, является глубина полевых эффектов, но это - очень продвинутое и вычислительное время интенсивная техника.


    Путем почта показывает на экране работу shaders

    Это - короткая глава и процессы, которые описываются, здесь сделаны автоматически
    Ultimate 3D. Однако, важно знать об этих вещах, потому что иначе Вы не будете в состоянии понять, почему shaders экрана почты должен смотреть способ, которым они предназначаются, чтобы смотреть. То, когда Вы начнете использовать почтовый экран shader Ultimate 3D, не будет отдавать сцену непосредственно к экрану больше. Вместо этого это отдаст все к структуре. Когда это сделано, эта структура содержит все, что Вы обычно видели бы на экране. Тогда это отдает двор, который покрывает целый экран и использует эту структуру. И этот двор использует Ваш почтовый экран shader. Этим путем Вы можете определить, как структура, которая содержит предоставленное изображение сцены, предоставить к экрану.

    Также возможно использовать многократный почтовый экран shaders. Они будут применены один за другим. Если Вы будете использовать два почтовых экрана shaders, то
    Ultimate 3D отдаст полную сцену к структуре. Тогда это отдаст двор, который использует эту структуру сцены для второй структуры, используя первый почтовый экран shader, Вы определили. В следующем шаге это отдает эту вторую структуру к экрану, используя второй почтовый экран shader, Вы определили. Если бы был третий почтовый экран shader, второй отдал бы к первой структуре снова, и эта первая структура предоставить к экрану, используя третий почтовый экран shader. Это означает, что никогда не будет чем две структуры для всего почтового экрана shaders, таким образом с точки зрения экрана почты использования памяти shaders будут очень экономичны.

    Другая вещь, которую Вы должны отметить о цепочечном почтовом экране shaders, - то, что заказ, в котором они применены, действительно имеет значение. Вот простой пример этого. Скажем, у Вас есть сцена, в которой все является синим по некоторым причинам (нереалистичный, но это - хороший пример прямо сейчас). Красный канал и зеленый канал всегда - ноль. И скажем, что у Вас есть два почтовых экрана shaders. Первый делает все шкалой яркости, беря среднее арифметическое всех трех каналов, и второй игнорирует зеленый канал и синий канал и копирует ценности красного канала на все три канала. Если Вы примените экран почты красного ответа shader прежде, чем почта шкалы яркости покажет на экране shader, то shader экрана почты красного ответа произведет черную картину, потому что красный канал не используется в сцене, и шкала яркости shader не будет изменять эту черную картину. Если Вы используете экран почты красного ответа shader после того, как почта шкалы яркости показывает на экране shader, шкала яркости shader произведет более темную версию синего канала на все три канала, и красный ответ у shader будут некоторые положительные данные, чтобы произвести. Таким образом результаты отличаются, в зависимости от заказа эффектов. По этой причине Вы можете настроить приоритет для каждого почтового экрана shader.


    Использование почтового экрана shaders

    Это может казаться немного странным, но отправить экран shaders, представлены объектами Game Maker точно так же как модели, примитивы и ландшафты. Причина для этого состоит в том, что это делает их использование очень удобным. У Вас просто есть один объект для каждого почтового экрана shader эффект и всякий раз, когда Вы нуждаетесь в одном из них, Вы просто создаете случай соответствующего объекта. Остальное сделано объектом автоматически. Также случается очень часто, что тот же самый почтовый экран shader должен использоваться многократно, чтобы достигнуть эффекта, это достаточно сильно. В этом случае Вы можете просто создать многократные случаи почтового экрана shader объект. И если комната Game Maker всегда использует специфический почтовый экран shader, Вы только помещаете случай почтового экрана shader объект в этой комнате, и Вы сделаны. Никакое сложное кодирование.

    Таким образом единственная вещь, которую Вы должны знать теперь, как создать, они отправляют экран shader объекты. Это весьма легко. Сложная часть пишет shaders, но если это является слишком трудным для Вас, Вы можете всегда использовать shaders, сделанный другими. С созданием действительного почтового экрана shaders будут иметь дело ниже. Создание почтового экрана shader объекты подобно созданию всех других
    объектов в Ultimate 3D. В первом шаге Вы должны настроить несколько переменных. Тогда Вы вызываете функцию, чтобы создать почтовый экран shader. После этого Вы можете вызвать некоторые другие функции, чтобы настроить другие варианты для почтового экрана shader.Наконец Вы должны поместить в Destroy() подлинник в разрушить в случае вызова.. Step() не необходим. Вот список переменных, которые доступны для почтового экрана shaders. Есть только четыре:

    vertex_shader
    Вершина shader, который принадлежит этому почтовому экрану shader. Эта переменная должна быть установлена в последовательность, например, "effects/BlurPSS.vsh".

    pixel_shader
    Пиксел shader, который принадлежит этому почтовому экрану shader. Эта переменная должна быть установлена в последовательность, например, "effects/BlurPSS.psh". Отметьте, что создание почтового экрана shader эффект потерпит неудачу, не показывая ошибку в случае, если необходимый пиксел shader версия не поддержан. По этой причине Вы должны назвать GetSupportedPSVersion() прежде, чем создать почтовый экран shader, чтобы удостовериться, что необходимый пиксел shader версия поддержан.

    camera_index (дополнительный)
    Каждый почтовый экран shader относится к предоставленному изображению специфического объекта камеры. Если это не камера по умолчанию, Вы должны установить эту переменную в индекс специфической камеры, которая является ценностью переменной числа той камеры (в пределах от 1 - 31, поскольку 0 обращается к камере по умолчанию), не id объекта.

    приоритет (дополнительный)
    Как объяснено выше, shaders экрана почты заказа применен в, действительно имеет значение. По этой причине Вы можете использовать эту переменную, чтобы назначить приоритетам отправить экран shader объекты. Это может быть любым значением с плавающей запятой. Чем выше ценность этой переменной, тем ранее почтовый экран shader применен в каждой структуре.


    Как только Вы сделаны с настраиванием всех этих переменных, Вы можете использовать функцию CreatePostScreenShader(), чтобы создать почтовый экран shader. Теперь Вы можете задаваться вопросом, почему shaders экрана почты не используют Ultimate 3D формат файла эффекта (*.ufx). Причина состоит в том, что это сделало бы вещи излишне сложными. Так как shaders экрана почты не становятся относившимися трехмерные
    объекты, но к целому экрану, нет очень предварительно вычисленной постоянной информации, которая могла быть настроена для них. Нет никакой информации о материалах, преобразование объектов сцены не имеет значения, и источники света уже применены. Обычно все, в чем Вы нуждаетесь, является небольшим количеством цветной информации или некоторым набором факторов, чтобы изменить силу эффекта. Они могут быть настроены или через инструкцию определения специфического shader, или через следующие две функции:

    Эта функция настраивает специфическую вершину shader, постоянный регистр для почтового экрана shader возражают, что этим называют. Это в состоянии переписать постоянные регистры, которые были настроены через инструкцию определения вершины shaders.

    SetPSSVSConstant(
    VSConstantIndex,
    Value1, Value2, Value3, Value4
    )

    VSConstantIndex
    Индекс вершины shader постоянный регистр Вы хотите изменить. Это может быть произвольным значением в диапазоне от 0 до 95.

    Value1, Value2, Value3, Value4
    Ценности Вы хотите настроить для этого постоянного регистра. Value1 скопирован к x-компоненту, Value2 скопирован к y-компоненту, Value3 скопирован к z-компоненту, и Value4 скопирован к w-компоненту.


    Эта функция настраивает специфический пиксел shader, постоянный регистр для почтового экрана shader возражают, что этим называют. Это не в состоянии переписать постоянные регистры, которые были настроены через инструкцию определения пиксела shaders.

    SetPSSPSConstant(
    PSConstantIndex,
    Value1, Value2, Value3, Value4
    )

    PSConstantIndex
    Индекс пиксела shader постоянный регистр Вы хотите изменить. Это может быть произвольным значением в диапазоне от 0 до 7.

    Value1, Value2, Value3, Value4
    Ценности Вы хотите настроить для этого постоянного регистра.
    Но shader константы не все, что Вы можете настроить для почтового экрана shaders. Им можно было также настроить одну структуру для каждой стадии структуры. Только структура первой стадии структуры (стадия 0) не может быть изменена, потому что эта стадия всегда использует структуру сцены. Структуры всех других стадий могут быть настроены через следующую функцию.

    Эта функция настраивает данную структуру, поскольку структура для данной стадии структуры почтового экрана shader возражает, что этим называют:

    SetPSSTexture(
    TextureStage,
    TextureIndex
    )


    TextureStage

    Индекс стадии Вы хотите настроить другую структуру для. Так как первая стадия структуры всегда использует структуру сцены и не может быть изменена, это должно быть значение в диапазоне от 1 до 7.

    TextureIndex
    Индекс структуры, которую Вы хотите настроить для этой стадии, которая является возвращаемым значением специфической функции погрузки структуры.
    Когда письмо почты показывает на экране shaders, случается весьма часто, что Вы можете использовать в своих интересах специфические фильтры структуры, чтобы сделать Ваш взгляд эффектов лучше. Например, если Вы будете использовать линейное фильтрование для структуры сцены, то это уже сделает это немного расплывчатым, который может быть желателен или нет. По этой причине Вы можете настроить отдельный фильтр структуры для каждой отдельной стадии структуры для почтового экрана shaders. По умолчанию, первая стадия использует самое близкое фильтрование пункта, и все другие стадии используют фильтр структуры, который был настроен через SetFilter(...), который является линейным фильтрованием по умолчанию. Если Вы хотите настроить другой фильтр, Вы можете использовать следующую функцию, чтобы сделать это:

    Эта функция настраивает различный фильтр структуры для специфической стадии структуры почтового экрана shader объект, который вызывает эту функцию:

    SetPSSFilter(
    TextureStage,
    FilterType
    )

    TextureStage
    Стадия структуры Вы хотите настроить новый фильтр для. Это может быть произвольное значение в диапазоне от 0 до 7.

    FilterType
    Фильтр Вы хотите настроить для этой стадии. Чтобы получить описание значения единственных ценностей, Вы можете пройти для этого параметра, пожалуйста сошлитесь на описание функции SetFilter (Options.htm (...)).


    Письмо почты показывает на экране shaders

    Почтовый экран shaders написан на том же самом языке ассемблера как обычные эффекты shader. Однако, они обычно весьма различны. Вершина shaders, особенно, может отличаться очень настоятельно. Первая причина состоит в том, что никакие матричные вычисления не должны быть сделаны, потому что регистр положения вершины уже находится в месте проектирования. Вторая причина состоит в том, что дворы, которые используются, чтобы применить почтовый экран shaders, составлены из не больше, чем четырех вершин. Таким образом каждая вершина shader почтового экрана shader не вычисляет больше чем четыре вершины, который не является ни о чем по сравнению с сотнями и тысячами вершин, которые должны быть вычислены для shaders, которые используются для трехмерных моделей. По этой причине Вы не должны заботиться об оптимизации в почтовой вершине экрана shaders. Если десять дополнительных линий вершины shader кодекс могут спасти Вас одна линия пиксела shader кодекс, или если они делают использование почтового экрана shader эффектом немного более удобный, Вы должны использовать их.
    Самая важная вещь, которую Вы должны знать, чтобы быть в состоянии написать действительный почтовый экран shaders, доступные регистры данных вершины. Они - v0, v7 и v8. Вот описание их содержания:

    v0 содержит положение вершины в месте проектирования. Так как это уже находится в месте проектирования, Вы можете просто использовать mov инструкцию передать это к регистру продукции oPos. Никакая матрица не необходима.

    v7 содержит координаты структуры, которые должны использоваться для структуры сцены.

    v8 содержит координаты структуры в диапазоне от 0 до 1, который может использоваться для всех других структур.
    Причина, что v7 и v8 различны, состоит в том, что структурам нужно было всегда составлять измерения полномочий два, тогда как отдают цели, может иметь произвольный размер. Так, если у Вас есть viewport с размером 800*600, у структуры сцены будут измерения 1024*1024, таким образом координаты структуры v7 будут в диапазоне от 0 до 800/1024 для x-координаты, и в диапазоне от 0 до 600/1024 для y-координаты.

    После того, как вся эта теория здесь - небольшой shader экрана почты в качестве примера. Это использует карту искажения координаты структуры, это, как предполагается, настроено для стадии 1, чтобы исказить изображение на экране. Этот небольшой shader экрана почты в качестве примера уже очень силен. Это может использоваться для прохладных эффектов деформации.

    Этот код является вершиной shader

    vs.1.1

    mov oPos, v0
    mov oT0, v7
    mov oT1, v8

    Не могло быть легче, мог это:D? Этот код является пиксельным shader :

    ps.1.4

    texcrd r0.rgb, t0
    texld r1, t1

    mad r1.rgb, r1, c0, r0

    phase

    texld r0, r1

    Пиксел shader делает следующий. Сначала это получает первую координату структуры для этого пиксела и данных от карты искажения. Тогда это умножает данные от карты искажения фактором и добавляет первую координату структуры пиксела. Наконец это использует эту новую координату структуры, чтобы искать texel в структуре сцены. Это будет продукцией этого shader. Чтобы использовать этот shader, Вы должны настроить карту искажения для стадии 1 и фактор силы искажения для первого пиксела shader постоянный. Это - все.








    © Shkola Ultimate 3D . Все права защищены.Макарский Роман (ASD_W_GAMES) And Беляков Вячеслав (ZXC76)
    Author:
    © Christoph Peters. Some rights reserved.




    Школа Ultimate3D 2009-2010 год