![]() |
Ответ: Xors3D. Шейдеры. Урок первый
Dzirt, в этом уроке не все описанно. Он хоть и полезный, но искать по интернету что в нём упущенно мне представляется не правельным. Да и сам заголовок его подразумивает продолжение.
Кстати, может тогда где нибудь указать ссылки на уроки, которые показались, на взгляд авторов первого урока, полезными. |
Ответ: Xors3D. Шейдеры. Урок первый
Больше всего рекомендую просто изучать чужие шейдеры, пробовать их менять и смотреть на результат, пробовать копировать из них куски, так постепенно поймёшь что как работает. Ну и ещё изучай хелп по HLSL из DXSDK.
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Вот я вот поражаюсь, ну не может уважающий себя геймдейвер ,превозмогая себя, и тем самым сильно усложняя себе жизнь, найти сам.
Смотри-ка, первая ссылка: http://www.google.com.ua/search?clie...hannel=suggest |
Ответ: Xors3D. Шейдеры. Урок первый
baton4ik, ты опоздал я там уже был. Ты думаешь я что то нашел? Если ты нашел давай ссыль пжлст
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
CRASHER, а тебе кто-то обязан за твою слабость перед малейшими трудностями?
Ты не способен выполнить элементарную задачу, и уже тычешь на других, не осознавая своего недовольства к себе, за то что сам не способен. По запросу msdn - первая ссылка, имеет свой поиск сверху, по нужному запросу сразу даёт что нужно. По запросу в гугле dxsdk - сразу выдаёт первую ссылку на список вариантов скачиваний, вторую сразу скачивать, а третью на страницу для разработчиков. Слушай лентяй, харе с такими запросами тут окошеливаться, если сам ничего не можешь сделать, тебе никто не будет помогать ничего, зачем? Ты же не способен учится получается, и кому нужно тащить такого лентяя у себя на плечах? baton4ik, открыл гугл и нашёл чё нада, а ты его ещё в этом обвиняешь? |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
По запросу "dxsdk documentation", первая ссылка, снизу слева под секцией "3", Documentation.
Приношу извинения, набросился и не по делам на самом деле. Просто эмоции - этим мы все обладаем, но читая посты в топике, показалось явное не отличие от предыдущих вопросителей, которые в гугле не искали. ИМХО, гугло-скилл - неотъемлемая часть набора способностей программиста. |
Ответ: Xors3D. Шейдеры. Урок первый
MoKa, спасибо, я тож конечно не самым лучшим образом отвечал, на меня не похоже. Принашу глубочайшие извинения MR_F если его обидел.
Вообще проблема в чем я пытаюсь изучить шейдеры. Для этого мне посоветовали хелпы по HLSL и DXSDK? Но понятия это растяжимые хелпы, и следовательно не зная что искать я не знаю даже как спросить. Спрошу тогда так, что бы ты ,MoKa, стал учить после вышеописанного урока по шейдерам? |
Ответ: Xors3D. Шейдеры. Урок первый
Я бы стал писать простые шейдеры. Обучение как ты знаешь состоит из последовательных этапов. Начиная с простого к сложному.
Лучше всего когда понимаешь как шейдерный конвеер работает и как передедавать переменные и как из вершинного в попиксельный шейдер передаются данные. Для это напиши простой шейдер - простой диффуз. При этом попробуй это сделать без единого копипаста, но можно смотреть в чужой шейдер. Разбери его до мелчайших деталей. В msdn на HLSL есть хорошая инфа о тех или иных общих момментах. Далее усложняй, но важно понять представление вершины и пикселя в шейдере, "как шейдер видит" их :) Тогда будет проще далее. |
Ответ: Xors3D. Шейдеры. Урок первый
Ладно, будем пытать Ся :)
|
Ответ: Xors3D. Шейдеры. Урок первый
Пасибо мока сочитание терминов msdn и HLSL привели меня на ссылку где какраз то что я искал. С этого можно продолжить свое обучение шейдерам.
http://www.gamedev.ru/code/terms/HLSL?page=2 Советую после изучения первого урока полазать по ссылкам в конце этой странице всем несведующим :) |
Ответ: Xors3D. Шейдеры. Урок первый
а можно пример простого шейдера который тупо окрашивает обьект в белый цвет?
|
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
кстати вопрос такой.
в примерах используется такой вариант передачи матриц: float4x4 view_proj_matrix; - в шейдере и xSetEffectMatrixSemantic poly, "MatWorldViewProj", WORLDVIEWPROJ в ксорсе а в уроке тупо в шейдере float4x4 viewprojMatrix : MATRIX_VIEWPROJ; т.е. эти варианты делают по сути одно и тоже? |
Ответ: Xors3D. Шейдеры. Урок первый
Да, с одним отличем как эта матрица задаётся. В первом варианте, нада ручками указывать матрицу, а во втором, она будет автоматически назначена, исходя из объекта на который шейдер наложен. Второй лучше, если это не нужно менять из кода (не могу придумать необходиомсти), так что юзай второй.
Это называется семантики. В документации есть раздел про семантики. |
Ответ: Xors3D. Шейдеры. Урок первый
Привет Всем!)
Первый раз познакомился с написанием шейдеров вчера, ради постэффектов т к в основном для обьектов нужен только обычный диффуз) Прошу помощи в реализации одной штуки: возможно ли как нибудь использовать в шейдере внешнюю функцию? например для передачи положения текущего пикселя в двиг, чтобы сгенерировать маску (чтобы некий пост-эффект действовал только на некоторые обьекты) ? или может как то по другому можно? ибо через камераПик ну ооочень тормозно получается) UPD: а что если изменить активный буффер на другой, отрендерить в него нужные шейдеры, перепригнуть на начальный буффер, отрендерить еще раз с нормальными шейдерамы и наложенным пост-эффектом с маской созданной в предыдущем буффере? |
Ответ: Xors3D. Шейдеры. Урок первый
Т.к. ты только начал заниматься шейдерами, то ещё думаешь совсем в иной парадигме.
Суть шейдеров - математически обрабатывать тексели, и не более. Зная на что шейдер как механизм может, ты будешь знать что можно с ними делать, а что нет (например передать какую-то внешнюю функцию, невозможно, да и зачем, если есть внутренние?). Далее понимая возможности математики, и смекалки, сможешь придумать реализацию идеи. Как я понял, тебе нужно обработать пост эффектом только конкретный объект. Если там нету блуров, и тексели которые нужно обработать постом находятся прямо на нужном объекте, то можно применить алгоритм пост обработки, на сам объект, заранее получив позицию пикселя в скринспейсе (если это нужно для пост обработки). А можно отрендерить маску, в отдельную текстуру, и затем по маске делать пост обработку, или смешивать пост обработанную текстуру с нормальной. Короче, вариантов много, зависит всё от деталей. Каждый из них имеет свои недостатки, экспериментируй - это лучший вариант изучить шейдеры. |
Ответ: Xors3D. Шейдеры. Урок первый
Хотелось бы узнать, насколько баловство с шейдерами на этом сайте поможет общему применению. Есть ли отличия в написании кода? Значительны ли они?
Заранее благодарю. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Мужики, не получается применить пиксельный шейдер к спрайту - на иных объектах все ок, вопрос: есть ли какой-то специальный подход к спрайтам или к ним тупо не можно применять шейдеры вообще?
|
Ответ: Xors3D. Шейдеры. Урок первый
Есть объект Poly, можешь его создавать и применять шейдер на него.
|
Ответ: Xors3D. Шейдеры. Урок первый
При чем здесь полигоны? У спрайта их и так двое + в семантике шейдеров есть такая штука как PSIZE - специально для спрайтов
так почему же не получается? Код:
Handle sprite = xCreateSprite(); Код:
texture diffuseTexture : TEXTURE_0; //текстура _____UPD__________________________________________________ _______________________________________ Аууу....))) Налипать текстурки весело, а с шейдерамы еще веселее))))))) |
Ответ: Xors3D. Шейдеры. Урок первый
Knightmare
дружище, перезалей пожалуйста, почитать хочется :) |
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Всем привет.Такой вапрос,есть анемированная модель (рук с оружием) руки скин на костях оружие нет, загружаю xloadanimmesh парент к камере, работает хорошо но как только накладываю шеидер вамп, с оружием все нормально а руки меняют координаты xpositionentity ? Что делаю не так? Изените есле не понятно выразил проблему.
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Вззял стандартный шейдер (skining) дописал к нему бамп,все работает отлично (руки) на месте,но вот (оружиие) оно статично поетому его не видно.Возможно ли совместить статику и скин в одном шейдере? Или грузить отдельно ( xloadanimmesh (руки)) и одельно (xloadanlmmesh (оружие)) и парент (оружие,руки) может кто подскажет как правельнее или где я торможу,да и спасиба за ответ.
|
Ответ: Xors3D. Шейдеры. Урок первый
xgetchild()
xfindchild() руки отдельно а оружие отдельно выбираешь и применяешь шейдеры |
Ответ: Xors3D. Шейдеры. Урок первый
Я догадалса так применить но я заметел что на скин (руки) ИСТОЧНИК СВЕТА действует с одной стороны.Какбудто загрузилась модель в координаты 0,0,0 а СВЕТ 15,10,-5 хоть модель и парент( камерае) при перемищении позиция источника света не меняется только при повороте камеры и так в любых координатах сцены.Подскажите где мой косяк.
|
Ответ: Xors3D. Шейдеры. Урок первый
Всем доброго.Кто небуть писал шеидер для (skin) с источником света, diffuse+bamp+specular я понимаю что вапрос звучит так буто я выпрашеваю но мне любые подсказки будут полездны.Так как шеидеры только осваеваю.
|
Ответ: Xors3D. Шейдеры. Урок первый
Sapik
Чел. Ты меня конечно извини, но тебе бы русский язык для начала освоить... |
Ответ: Xors3D. Шейдеры. Урок первый
Colossus и это все что ты можеш написать про шеидер
|
Ответ: Xors3D. Шейдеры. Урок первый
Ты то что пытаешься выразить не можешь нормально написать.
|
Ответ: Xors3D. Шейдеры. Урок первый
moka.Твои примеры очень понятны.Но они для статики.Жаль что нет для скина с источником света.Я пробывал к примеру шейдера (skining) дописать источник света с (bamp) , частично используя твой шейдер.Источник света есть, но координаты источника света привязаны к скину и риагируют только на вращение.Надеюсь понятно выражаю суть проблемы.
|
Ответ: Xors3D. Шейдеры. Урок первый
При скине у тебя есть позиции текстелей и их нормали в статическом состоянии и в локальном пространстве модели, далее ты применяешь матрицу на нормали и позицию, тем самым получаешь уже анимированную позицию и нормали текселя, далее применяешь матрицу трансформации самого объекта, таким образом у тебя будут доступны позиция и нормаль текселя с учётом скиннинга, и уже применяешь свет как обычно.
|
Ответ: Xors3D. Шейдеры. Урок первый
Когдаж второй урок выдет?)
|
Ответ: 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)
![]() Автогенератор нормалей (Приятная мелочь) |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Код:
[ branch ] if ( ... ) { ... } Для for, while можно указать unroll( x ) или loop, первый разворачивает цикл, в необязательном параметре можно указать насколько развернуть, loop - цикл не разворачивается. |
Ответ: Xors3D. Шейдеры. Урок первый
Вот такой вопрос .
Делаю спотлайт для деферреда и настигла проблема . Код спотлайта из кода Чем больше vLightAngles.z тем ярче спотлайт в итоге я получаю еле светлый свет при яркости 255(1в шейдере). Как исправить я даже не знаю |
Ответ: Xors3D. Шейдеры. Урок первый
Ребят, а можно както заиндексировать текстурки?
Пробывал сделать так: разместил на текстуру 512х512 16 текстурок по 128х128; Оказалось что такое не прокатывает ибо изза фильтрации по краю тайла выводятся цвета соседнего тайла |
Ответ: Xors3D. Шейдеры. Урок первый
нужно делать спец края вокруг тайлов. т.е. ещё несколько пикселей продолжения тайла в бока, и выборку менять, чтобы брать квадрат без краёв этих. тогда фильтроваться нормально будет.
если тексы одного размера, можно в 3д текстуру положить и выбирать слои её. ну и на дх10+ на это есть текстурные массивы. |
Ответ: Xors3D. Шейдеры. Урок первый
Хм, оказалось что проблема даже не из за "соседних тайлов", так как я размножил один тот же тайл по всей текстуре, но при прорисовке видна грань с цветом от пикселя 0:0
Код:
static float4 Colorka : COLOR; |
Ответ: Xors3D. Шейдеры. Урок первый
Проблема решаема. Оказывается работает так input.texCoords%0.1 или input.texCoords%0.2 0.3 0.4 0.5 и так далее, главное чтобы после запятой была одна цифра. + дополнительные грани от Mr_F_
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
GOOGLE? Я не зануда, но это на столь уже базовые знания везде пережованные... |
Часовой пояс GMT +4, время: 19:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot