Search the Community
Showing results for tags 'шейдеры'.
-
Доброго времени суток! После просмотра видео возник вопрос про вершинный шейдер... Кто-нибудь знает каким образом шейдер определяет точки, которые нужно передвигать и в каком направлении? Само видео:
-
Сразу оговорюсь, что в шейдерах я не понимаю от слова совсем, и мне очень сложно понять их работу, ибо для меня всё это очень неочевидные моменты до которых я не могу сам дойти. Итак, есть колеса, по умолчанию выглядят так: (Обратите внимание: У колеса есть хром. Какой-никакой, но есть) С этими колесами мне нужно производить следующие манипуляции: 1.Изменять ширину 2.Изменять размер 3.Изменять развал Для всего этого у меня есть шейдер (не мой): После "прогонки" колёс через этот шейдер на выходе получается это: Колёса могут в развал, ширину, смену цвета дисков, но главное -- не смотря на то что в шейдере вроде как считается этот самый хром, по факту его нет (для него как я понял используется эта текстурка (создать в скрипте и "загрузить" её в шейдер я не забыл) То-же самое случается когда колесо просто-напросто красится пиксельным шейдером, но если создать renderTarget, и скормить ему шейдеру заменяющему текстуру, то колесо покрасится, и при этом хром который есть на диске по стандарту никуда не улетучивается: Хром есть, цвет есть, значит нужно удалить из первой версии пиксельный шейдер, и оставить ему как задачу только лишь менять ширину/развал, а красить будем другим шейдером с помощью текстуры/рендертаргета: Накладываем "новый" шейдер для ширины и развала, + накладываем шейдер на покраску через замену текстуры, результат: Итак, вопросы: 1.Если можно, то как подружить эти два шейдера 2.Если можно, то как заменять только ОДНУ текстуру через "длинный" шейдер до того как вертексный шейдер её "растянет" (при этом этот шейдер применяется на все текстуры на обьекте) shader\applyToWorldTexture("*", object) 3.Если можно, то как починить хром в первой версии шейдера, который красит диск с помощью пиксельного шейдера (я кстати так и не смог понять почему он красит только диск, ведь накладывается шейдер на все текстурки) наверное, это условие: if (dot(delta,delta) < 0.2) { float4 Color = maptex * PS.Diffuse * 1; Color.a = PS.Diffuse.a; return Color; } p.s. Я шерстил по майкрософтовским докам, честно скажу: Не осилил и не понял Спасибо за внимание, надеюсь на вашу помощь. p.s. Если задача сложная, или большой обьём, то могу материально отблагодарить за работу
-
Здравствуйте, необходимо сделать отрисовку картинок на стёкле автомобиля, при этом картинка не должна быть прозрачной, а стекло должно. Изначально шейдер выглядел так: texture gTexture; technique TexReplace { pass P0 { Texture[0] = gTexture; } } Результат был таким: После этого я сделал текстуру стекла непрозрачной, и попытался давать ей прозрачность шейдером и также отрисовывать картинки: float alpha = 0.5; struct PSInput { float4 Diffuse : COLOR0; }; float4 PixelShaderFunction( PSInput PS ) : COLOR0 { float4 color = PS.Diffuse; color.a = alpha; return color; } texture gTexture; technique TexReplace { pass P0 { AlphaBlendEnable = TRUE; DestBlend = INVSRCALPHA; SrcBlend = SRCALPHA; PixelShader = compile ps_2_0 PixelShaderFunction(); Texture[0] = gTexture; } } В результате стекло становилось прозрачным, но картинки вообще не отображались. В HLSL не разбираюсь вообще, и даже далеко нет полного понимания того как работают шейдеры впринципе. Поэтому обращаюсь сюда Как можно всё-таки отрисовывать картинки на стекле так, чтобы они не были прозрачны?
-
- шейдеры
- замена текстур
-
(and 1 more)
Tagged with: