Shading language wrapper.

Продукти, библиотеки и програмни интерфейси (API) за разработка на игри и модове.
Потребителски аватар
KosSiO
Power User
Power User
Мнения: 316
Регистриран на: 20 окт 2008 19:29
Местоположение: Targovishte,Sofia

Shading language wrapper.

Мнение от KosSiO » 14 юли 2015 18:47

Във връзка със замирането на форума реших да споделя поседно какво правих(не че е нещо особенно или завършено).

http://www.gamedev.net/blog/1921/entry- ... -language/

В свободното си време пиша един мини render енджин. Който wrap-ва GL D3D11, като оставям възможност да ползвам нещо конкретно от base API-то без да счупи работата на ренд-а. В това енджинче имам няколко шейдъра които правеха доста прости неща. В кода на шейдърите имаше токени които в последстивие "разпъвах" за да обърна кода към GLSL и HLSL. Това се оказа супр НЕ-гъвкаво и почнах да търся други варианти. В крайна сметка се спрях на flex/bison и писането на custom език. Оказа се че не толкова сложна задачка, просто изисква да се вложи време.

В gamedev.net съм описал малко по добре, но накратко:
- flex/bsion са 2 туула с които описваш граматиката и синтаксиса на езика. Те плюят С++ код с който може да се парсне програма на дефинирания език. От това нещо генерирам едно AST дърво, обхождам го и принтя краен HLSL/GLSL.

Избрах custom език защото е голяма отговорност да кажа "ми това е HLSL", също така принципно харесвам повече GLSL (нищо че предпочитам D3D11), но има някои неща от HLSL които са ми много удобни + мога да направя специфично поведение. Примерно в GLSL няма такива нещо като sampler state, докато в HLSL има. И за това съм замислил да генерирам код по малко по-специалиен начин. Също мисля да пробвам да се генерират автоматично instancing shader-и(имам съмнения колко полезно би било, но като имам врме ще го мисля).

Ето го публично кода, като това не е финалната верия(има бая липсващи фиичъри но за семплиране на текстуки става засега), тя в момента е private repo, кето като имам време ще направя официално публично такова. https://github.com/ongamex/playground/t ... r/lang/src

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран на: 04 дек 2003 15:44
Контакти:

Re: Shading language wrapper.

Мнение от stoiko » 14 юли 2015 20:07

bgfx прави и това: https://github.com/bkaradzic/bgfx

Потребителски аватар
KosSiO
Power User
Power User
Мнения: 316
Регистриран на: 20 окт 2008 19:29
Местоположение: Targovishte,Sofia

Re: Shading language wrapper.

Мнение от KosSiO » 14 юли 2015 20:30

Следя го него, без да го ползвам, но то е не е ли само token matching?

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран на: 04 дек 2003 15:44
Контакти:

Re: Shading language wrapper.

Мнение от stoiko » 14 юли 2015 21:02

"Basically I want a clean way to be able to use one shader program with multiple rendering APIs"
е това го прави и bgfx. не знам какво е токен мачинг.

Потребителски аватар
KosSiO
Power User
Power User
Мнения: 316
Регистриран на: 20 окт 2008 19:29
Местоположение: Targovishte,Sofia

Re: Shading language wrapper.

Мнение от KosSiO » 14 юли 2015 21:21

Ами сега му разгледах кода това прави. Ами token matching си е просто strReplate, търсиш за $vertex_pos и навсякъде сменяш със vertex_shader_in.vertex_pos. Първоначално и аз бях така, но в последвие се оказа че тоя подход е труден за разширение, и чесно казано кода на шейдърите изглежда ужано, самия парсър също не е от най-четимите неща.

За сега съм доволен, защото кода е ми е доста по-малко(ест това което генерира flex-bison е 4500 реда), около 1500 реда в сравнение с преди - около 3к реда (за 1/2 от функционалността). Flex/Bison изглеждат доста надеждни(дори gcc го е ползвал навремето, reference glsl compiler-a също е на bison), но знае ли човек.

Потребителски аватар
stoiko
Power User
Power User
Мнения: 617
Регистриран на: 04 дек 2003 15:44
Контакти:

Re: Shading language wrapper.

Мнение от stoiko » 15 юли 2015 20:44

моя съвет към теб и към всички които се опитват да преоткрият топлото колело е да ползват ОСС и ако държат да се включат в ОСС проект. ще научите повече и ще се чувствате по-добре когато станете на 40 :)

Потребителски аватар
themean
Power User
Power User
Мнения: 854
Регистриран на: 02 дек 2010 22:51

Re: Shading language wrapper.

Мнение от themean » 16 юли 2015 23:36

А пък моят съвет е да преоткривате тополата вода колкото се може повече пъти, защото после като почвате работа числата са едни други. Евала косьо че още ти се занимава

Отговори

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост