Ru/Adding a dynamic sky to your mod: Difference between revisions
m (Updated sphere creation code in DrawSky function.NOUG4AT - внеси вклад, поправь перевод.) |
m (Multipage removal) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar|title = Добавление динамического неба в ваш мод}} | ||
{{cleanup|Перевод можно было сформулировать лучше}} | {{cleanup|Перевод можно было сформулировать лучше}} | ||
[[File:Dynamic Sky.jpg|500px|thumb|right|Динамичное небо]] | [[File:Dynamic Sky.jpg|500px|thumb|right|Динамичное небо]] | ||
Line 14: | Line 15: | ||
{{note|Если вы не знаете как компилировать шейдеры или еще не работали с ними в {{src|4}}, рекомендуется сначала прочитать и осмыслить эти статьи: | {{note|Если вы не знаете как компилировать шейдеры или еще не работали с ними в {{src|4}}, рекомендуется сначала прочитать и осмыслить эти статьи: {{L|Shader Authoring|Разработка шейдеров}} & {{L|Source_SDK_2013:_Your_First_Shader|Ваш первый шейдер}}}} | ||
== Реализация == | == Реализация == | ||
Line 183: | Line 184: | ||
Хорошо, а сейчас нам нужно сделать наше динамическое небо доступным через {{hammer|4}}. | Хорошо, а сейчас нам нужно сделать наше динамическое небо доступным через {{hammer|4}}. | ||
Для этого вам понадобиться пользовательский | Для этого вам понадобиться пользовательский {{L|FGD|fgd}} файл. | ||
{{CodeBlock|lines=22|src=skydome.fgd|<nowiki>@include "halflife2.fgd" | {{CodeBlock|lines=22|src=skydome.fgd|<nowiki>@include "halflife2.fgd" | ||
Line 224: | Line 225: | ||
Создайте карту с сущностью {{code|select=all|env_skydome}} и вот оно! Теперь в вашем моде должно быть динамическое небо. | Создайте карту с сущностью {{code|select=all|env_skydome}} и вот оно! Теперь в вашем моде должно быть динамическое небо. | ||
{{ACategory|Modding}} | |||
{{ACategory|Tutorials}} |
Latest revision as of 04:02, 12 July 2024

Эта статья покажет вам как реализовать динамическое небо в вашем Source 2013 моде.


Требования
- Умение компилировать шейдеры.
- Умение компилировать решения.


Реализация
Прежде чем что-то делать, нам нужно скачать файлы. Они внутри zip-архива.
Когда вы загрузите zip-файл, извлеките файлы из shaders в: src/materialsystem/stdshaders/
, а файлы из code в: src/game/
Откройте src/game/client/client_base.vpc
Перейдите к строке $File "$SRCDIR\game\client\c_vote_controller.cpp" и под ней добавьте:
Далее откройте src/game/server/server_base.vpc
и под $File "$SRCDIR\game\server\vote_controller.cpp" добавьте:
И после этого, пересоберите свое games.sln
решение.
Теперь мы можем перейти к реализации кода отрисовки.
Код отрисовки
Сначала нам нужно отредактировать код клиента для динамического неба.
Откройте src/game/client/view.cpp
В функции void CViewRender::Init( void ), под m_ModulateSingleColor.Init( "engine/modulatesinglecolor", TEXTURE_GROUP_OTHER ); добавьте:
Теперь откройте src/game/client/viewrender.h
И под функцией void SetWaterOverlayMaterial( IMaterial *pMaterial ) добавьте:
Найдите CMaterialReference m_UnderWaterOverlayMaterial; и под этим добавьте:
Теперь нам нужно создать купол. Чтобы сделать это, откройте src/game/client/viewrender.cpp
Под #include "sourcevr/isourcevirtualreality.h" добавьте:

Под функцией void CViewRender::DrawViewModels( const CViewSetup &view, bool drawViewmodel ) добавьте:
Теперь для включения и отключения отрисовки вам нужно перейти к функции void CRendering3dView::DrawWorld( float waterZAdjust ) и
выше unsigned long engineFlags = BuildEngineDrawWorldListFlags( m_DrawFlags ); добавить:
Шейдеры


stdshader_dx9_30.txt
и убедитесь, что в вашем 
stdshader_dx9_30.txt
файле есть только skydome_ps30 и skydome_vs30, чтобы ускорить компиляцию шейдеров (НЕ ЗАБУДЬТЕ ОЧИСТИТЬ 
stdshader_dx9_20b.txt
)А теперь откройте game_shader_dx9_base.vpc
И под $File "screenspace_general.cpp" добавьте:
Скомпилируйте шейдер динамического неба и пересоберите ваше решение.
Хорошо, а сейчас нам нужно сделать наше динамическое небо доступным через Hammer.
Для этого вам понадобиться пользовательский fgd файл.
Заключение
Теперь вам нужна последняя деталь и это - материал.
Перейдите в вашу директорию materials
и создайте поддиректорию с названием shaders
После этого, создайте файл skydome.vmt
и вставьте это внутрь:
Создайте карту с сущностью env_skydome и вот оно! Теперь в вашем моде должно быть динамическое небо.