![]() |
Ответ: Xors3D. Шейдеры. Урок первый
Нужно в школе ввести отдельный предмет "Что такое поисковые системы и зачем они нужны".
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 2
Копипаста из урока.
Не работают шейдеры, я запарился, хочу что бы кто-нибудь взглянул: Вложение 20783 Каждый раз ошибка: Вложение 20784 Если убрать проверку всё равно не работает (не накладывается/не загружается). |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Код:
float lit = dot(input.normal, 8lightDirection); Вообще это же неудобно, представь что у тебя код шейдера в несколько тысяч строк, как ты будешь опечатки искать? Если Хорс не предоставляет информацию по компиляции шейдеров, то придумай что-нибудь, например напиши свой код который использует дх напрямую, где есть отчёт о сборки шейдера. |
Ответ: Xors3D. Шейдеры. Урок первый
ксорс можно заставить выплёвывать жирный хтмл с логом ошибок, включая все ошибки компила шейдеров.
шейдер ежели не скомпилился, то вернёт ноль, дальше ты этот 0 суёшь в ValidateTechnique и крашишься. |
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 1
Цитата:
На сайте mok'и поищи tv3d shader editor, Полезная штуковина. |
Ответ: Xors3D. Шейдеры. Урок первый
Спасибо большое :)
Цитата:
У Моки утилиту давно не смог скачать т. к. она на юкозе, старую регистрацию не помню, а новая не прошла, попробую ещё раз. Про выдачу ошибок шейдера в лог не знал. |
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 1
Вот данная программа.
|
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Короче надо юзать шейдеры, сам Хорс делает что-то не так. Может мне кто-нибудь объяснить почему сохраняю шейдер через блокнот (винды) и он не работает, а через tv3d shader editor работает О_О WTF&! (а теперь всё работает... ок будем считать это локальные глюки...) |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
в шейдере просто сам выбираешь с каким значением сравнивать. |
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Поискал через яндекс и гугл (прошерстил урок Хорса), нашёл интересный урок по HLSL, но то что было нужно не увидел.
Как сделать что бы текстура с двух сторон накладывалась? |
Ответ: Xors3D. Шейдеры. Урок первый
BackFace'ы?
|
Ответ: Xors3D. Шейдеры. Урок первый
CullMode = None ставь в технике
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Хм, а что насчёт правильного освещения? Т. к. освещение одинаково для обеих сторон. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
юзай семантику VFACE: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx в зависимости от неё флипаешь нормаль. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
У меня тут бред да? Код:
int VFACE; |
Ответ: Xors3D. Шейдеры. Урок первый
да, потому что ты объявляешь пустую неопределённую переменную и сравниваешь ещё с чем-то.
VFACE над вставить в входящие данные PS. там где у тебя всякие TexCoords : TEXCOORD0, туда же вставляешь что-нибудь типа whatFace : VFACE. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
______________________________ Запихал ретурн после каждого условия и понял что мой код не работает вообще. То есть освещение не флипается там где надо, у меня флипается всё. ______________________________ Кажется понял что я не так сделал. Но как сделать правильно не понял. |
Ответ: Xors3D. Шейдеры. Урок первый
У каждой переменной есть область видимости (scope), которая обычно задается фигурными скобками {}. Объявленная внутри них переменная не может использоваться вне своей зоны видимости. Поэтому можно вынести объявление lit за пределы конструкции if-else:
Код:
float lit; |
Ответ: Xors3D. Шейдеры. Урок первый
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Как ещё можно сделать подобную штуку? Попробовать считать свет для обеих сторон? |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
нужно в VSOutput вставить. в глобале только то, что одинаково на весь шейдер. в VSOutput у тебя то, что приходит в пиксельный шейдер из VS интерполированное, и VFACE дополнительно из растеризатора - это инфа попиксельная. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Если так то переменная "whatFace" не найдена: |
Ответ: Xors3D. Шейдеры. Урок первый
ну потому что теперь ты её должен читать как input.whatFace. так же как и всё, что ты читаешь из VSOutput.
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
![]() Дебагер говорит инвалид: Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
VFACE нету на входе в вершинный шейдер - он вычисляется автоматически между вершинным и пиксельным шейдером. Поэтому он не может быть в структуре VSInput.
Попробуй сначала убрать whatFace из VSInput а в вершинном шейдере ничего не присваивай output.whatFace или присвой 0. А уже из пиксельного ты можешь обратиться к ней как input.whatFace и в ней уже будет содержаться нужное значение. Должно работать. Однако если вдруг компилятор всё-равно скажет что нет такой семантики (хотя вроде не должен), тогда тебе придется разделить VSOutput на две разные структуры - VSOutput и PSInput, и во второй добавишь VFACE. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
+ не надо ничего разделять, просто блин оставь так struct VSOutput { float4 position : POSITION0; float3 normal : TEXCOORD1; float2 texCoords : TEXCOORD0; float whatFace : VFACE } |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Так тоже сделала в первую очередь: Дебагер говорит: Цитата:
|
Ответ: Xors3D. Шейдеры. Урок первый
попробуй тогда убрать его из VSOutput, а вместо этого PSMain поменять типа
float4 PSMain(VSOutput input, float whatFace : VFACE) : COLOR { |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Нифига не понимаю, попробовал в шейдерах других игр покопаться, не нашёл. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
так что замени input.whatFace на просто whatFace ниже. |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
Цитата:
Цитата:
input, whatFace - имя |
Ответ: Xors3D. Шейдеры. Урок первый
2Arton
struct A { ... }; это описание структуры, то есть как шаблон, реальный объект при этом не создается. Объект структуры создается так: A object; - то есть сначала тип, потом имя объекта. Если нужно обратиться к полю созданного объекта: object.value; Теперь вот смотри, в графическом конвеере не всё делают шейдеры. То есть в частности между вершинным и пиксельным тоже происходят скрытые вычисления. То есть это я к тому что если структура VSOutput у тебя определена один раз, то объекта два. Сначала создаешь output в вершинном шейдере и записываешь туда явно вычисленные значения, затем происходят скрытые вычисления, и в пиксельный шейдер тебе возвращается уже другой объект, даже если он того же типа, значения полей будут другими - это важно понимать. В данном случае ты одной структурой описал объекты для выходных вершинных и входных пиксельных данных, но иногда бывают другие ситуации, когда данные различаются и нужно например объявлять отдельно VSOutput и PSInput. Также вот в такая запись: float4 PSMain( float4 pos : POSITION0, float whatFace : VFACE ) {...} будет эквивалентна такой: struct PSInput { float4 pos : POSITION0; float whatFace : VFACE; }; float4 PSMain( PSInput input ) {...} Во втором случае мы все входные параметры описали одной стрктурой и передали в качестве аргумента все параметры как один объект. Только внутри функции уже нужно обращаться к параметрам как к полям объекта input.pos и т. д. Точно также мы можем объявить и выходную структуру, например в данном случае будет: struct PSOutput { float4 col : COLOR0; }; В данном случае для одного параметра это избыточно, но механизм я думаю ясен. |
Ответ: Xors3D. Шейдеры. Урок первый
Почему нельзя использовать цвет в качестве числа???
Код:
index=tex2D(MixSampler,input.texCoords).r; |
Ответ: Xors3D. Шейдеры. Урок первый
какую ошибку пишет?
|
Ответ: Xors3D. Шейдеры. Урок первый
Ошибку не выдает, просто отказывается закрашивать модель текстурой. в Итоге получается серая моделька.
Идея была такая: Картинка[R,G,B,A] R-индекс первой текстуры G-индекс второй текстуры B-коэффициент смешивания одиннадцать текстур TS[0],TS[1]..TS[10] |
Ответ: Xors3D. Шейдеры. Урок первый
Цитата:
в лог пишутся ошибки компиляции шейдеров. читай их. |
Ответ: Xors3D. Шейдеры. Урок первый
Can't create effect from file 'Resurses\Shaders\EXP\EXP.fx'!
E:\SkinBattle - копия\Resurses\Shaders\EXP\EXP.fx(165,61): error X3000: syntax error: unexpected token ')' |
Ответ: Xors3D. Шейдеры. Урок первый
ну и что, по-твоему, здесь написано?)
|
Ответ: Xors3D. Шейдеры. Урок первый
Скачай дебагер-то, всяко сподручнее чем лог.
|
Ответ: Xors3D. Шейдеры. Урок первый
Я уже поржал над собой ')'
Код:
index=tex2D(MixSampler,input.texCoords).r; Ошибка X3512: сэмплер индекс массива должен быть буквенное выражение (174): ID3DXEffectCompiler :: CompileEffect: Был выражение об ошибке компиляции ID3DXEffectCompiler: Компиляция не удалось |
Ответ: Xors3D. Шейдеры. Урок первый
а, ну да. в ps3_0 и ниже нельзя использовать честное динамическое индексирование в массив, увы. в вертексном можно.
ты можешь запихать текстуры в атлас или 3д текстуру и вместо индекса смещать текстурные координаты. |
Ответ: Xors3D. Шейдеры. Урок первый
Я решил смешивать текстуры без шейдеров, так как текстуры статичны и не особо большого размера
Пример Код:
IncludeFile "Xors3D.pbi":xGraphics3D(0,0,16,0,#False) |
Ответ: Xors3D. Шейдеры. Урок первый
Остался у кого-нибудь урок по шейдерам? помню это pdf файл, но у емня он задевался куда-то
Прошу выложите кто-нибудь, или на почту [email protected] Заранее спасибо) |
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 1
Вот
|
Ответ: Xors3D. Шейдеры. Урок первый
Спасибо!
кстати, есть прогресс с деферредом? я отписал на gd |
Ответ: Xors3D. Шейдеры. Урок первый
Прогресса впринципе быть не может, т.к. движок забит.
|
Ответ: Xors3D. Шейдеры. Урок первый
Вложений: 1
Ты не много не в курсе про деферред =)
|
Ответ: Xors3D. Шейдеры. Урок первый
Я не могу понять одну весчъ. Если применить к двум мешам шейдер с одинаковой текстурой в памяти видеокарты будут две копии текстуры? Возможно ли создать в памяти единственную текстуру для двух мешей с одним шейдером?
|
Ответ: Xors3D. Шейдеры. Урок первый
Если ты проверил и это на самом деле происходит, то ответ: возможно, только не уверен что движок это "позволит". По идее вообще не должно быть двух текстур, а лишь одна, иначе это нонсенс, одна большая текстура и несколько шейдеров, этож сколько VRAM'а заюзается..
|
Ответ: Xors3D. Шейдеры. Урок первый
я помню момент, когда в ксорс добавили менеджер ресурсов, с того момента текстуры стали загружаться единично и референситься дальше.
так что всё должно быть ок, если только там какой-нибудь баг не закрался. |
Часовой пояс GMT +4, время: 19:20. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot