![]() |
Ответ: Xors3D. Шейдеры. Урок первый
Ссылка битая
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Shaders in Xors3d Engine. First steps (RU).pdf |
Ответ: Xors3D. Шейдеры. Урок первый
первый и последний
|
Ответ: Xors3D. Шейдеры. Урок первый
Первый шейдер, добавляет зеленный оттенок текстуре =)
Код:
static float4 Colorka : COLOR0; |
Ответ: Xors3D. Шейдеры. Урок первый
А вот еще. Заменяет зеленые оттенки на синие.
Код:
static float4 Colorka : COLOR0; |
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Кстати использовал два готовых примера shader-теней.
В последний момент решил воспользоваться alpha и transparent текстурами. До обработки они прозрачны, после затенения - не прозрачные но с тенями. (ну я решил прозрачные меши рендерить отдельно от теней) А так, например как в Blender картинке: ![]() Или например травы.. Просто я с шейдерами никогда не связывался. В общем стандартные прозрачности исчезают после обработки. |
Ответ: Xors3D. Шейдеры. Урок первый
Забей на alpha канал и тени, даже пока не суйся туда, лучше займись более важными вещами с шейдерами.
|
Ответ: Xors3D. Шейдеры. Урок первый
А вотя мой шейдер воды
Код:
//КОД ШЕЙДЕРА Код:
Define tModel=xLoadMesh("Resurse\Models\Water\Model.b3d");Плоскость ![]() |
Ответ: Xors3D. Шейдеры. Урок первый
Водичку нужно в анимации смотреть :)
Советую не использовать условия в шейдерах - они очень медленные. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
варианта два - компилятор решает какой выбрать: 1. то что в ифе выполняется в любом случае, а потом умножается на маску условия. 2. происходит реальный бранч. в этом случае, надо иметь в виду, что видюха обрабатывает много пикселей параллельно - в квадратных блоках (4х4 пикселя вроде обычно). если один пиксель в блоке выполняет длинный бранч, а другие не выполняют - другим все равно придётся ждать этот один пиксель, как будто иф сработал на них всех. если зоны с разными бранчами чётко отделены на экране, а не шумно перемешаны - то будет норм работать. также, в бранчах не работает tex2D - но работает tex2Dlod/tex2Dgrad. нормальные бранчи пашут только в sm 3.0 и выше. компилер выбирает их если внутри нет tex2D и код более менее не однострочный вроде как. код выше по хорошему должен компильнуться в вариант 1 ---- Цитата:
Код:
Colorka.rgb = Colorka.a>0.75? (1-Colorka.rgb)/4+Colorka.rgb : Colorka.rgb; |
Ответ: Xors3D. Шейдеры. Урок первый
Объясните пожалуйста басяцким языком что такое вектор Бинормали и Тангент?
|
Ответ: Xors3D. Шейдеры. Урок первый
![]() |
Ответ: Xors3D. Шейдеры. Урок первый
Нормаль обычно перпендикулярна поверхности.
Тангент перпендикулярен нормали и бинормали, и паралелен Y координате в текстурных координатах. Бинормаль, перпендикулярен нормали и тангенту, и паралелен X координате в текстурных координатах. Это нужно для того чтобы взять нормал карту (текстуру), извлечь из неё X и Y смещение, но оно же локально на текстуре, и далее используя нормаль, тангент и бинормаль, повернуть этот полученный вектор смещения из локального пространства в мировое. Чтобы можно было уже далее использовать эти данные с другими, например вектором луча света от источника света, который тоже в мировом пространстве. Любые операции над любыми данными, нужно производить в одном пространстве, это может быть локальное (local), мировое (world) или экранное (screen). Если какие-то данные в другом пространстве, то нужно их трансформировать в нужное, и для этого порой хватает только матрицы трансформации (local > world), проекционной матрицы (world > screen), а для текстурных, таких как нормал карта, нужны tbn (tanget, binormal, normal) |
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 1
Мой семпл BPCM (Box Projected Cube Map)
![]() Автогенератор нормалей (Приятная мелочь) |
Часовой пояс GMT +4, время: 05:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot