1

Тема: Шейдери для факіняна (творча криза)

Хайо. В цій темі я буду розбиратися з отими шейдерами, не тільки з мовою Cg, а й взагалі з алгоритмами і т.д. використовуючи котрі можна намутити круті ефекти.
А ви будете казати  -"вааав!", "агааа!!!", коли вам буде зрозуміло, і будете відповідати, коли я буду задавати питання.

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P
Подякували: 0xDADA11C71

2

Re: Шейдери для факіняна (творча криза)

Може краще "Шейдери від ФакіНяна"? замість "для"

x

3

Re: Шейдери для факіняна (творча криза)

От зайшов я на сторінки з референсами (юніті3д), і захтів переглянути, які там built-in параметри є. Натрапив на параметр
_ScreenParams.  З його назви зрозуміло, що то якісь параметри екрану, наприклад, ширина и висота. А опис тут такий

x is the current render target width in pixels, y is the current render target height in pixels, z is 1.0 + 1.0/width and w is 1.0 + 1.0/height.

І тут я поламався. Що таке current render target? Це те, що рендерять, чи те, куди рендерять?
Чесно кажучи, спершу я подумав, що це ширина і висота об'єкту, котрий обробляється, але як виявилось, це ширина саме віконця, в котре рендериться об'єкт. Мається на увазі не весь ваш екран, а саме віконце, котре ми можемо зменшувати або збільшувати. Я то дізнався експерементальним шляхом.
Маємо такий код

CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct vertOut {
                float4 pos:SV_POSITION;
                float4 scrPos;
            };

            vertOut vert(appdata_base v) : POSITION {
                vertOut o;
                o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
                o.scrPos = ComputeScreenPos(o.pos);
                return o;
            }

            fixed4 frag(vertOut i : vertOut) : COLOR {
                float wcoord = _ScreenParams.y/900;
                fixed4 color;
 
                 color = fixed4(wcoord,0,0,1);
                
                return color;
            }

            ENDCG

У вершинному шейдері коїться усіляка фігня, котра нам не цікава. А от у фрагментному я беру _ScreenParams.y, тобто висоту, і ділю на 900, а 900 - це висота мого екранчика. Ну і там має вийти 1, я гадав.
Тоді колір має бути червоним, бо колір задається від 0 до 1.
Але колір був якийсь не дуже червоний, а от такий

Прихований текст
http://puu.sh/eJnUv/6342bf49b1.png

Ну я спробував те віконце потаскати в плані розмірів і виявилось, що при меншому розмірі той прямокутник ще темніший стає

Прихований текст
http://puu.sh/eJo25/3ba0dba453.png

А при більшому вже червонішає

Прихований текст
http://puu.sh/eJo3J/b27ffcdaa2.png

Ось так я і роздуплився, що оті параметри містять в собі :3

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

4

Re: Шейдери для факіняна (творча криза)

Chemist-i написав:

Може краще "Шейдери від ФакіНяна"? замість "для"

я поки що писати не буду їх, я розбиратись буду з референсами, бо нічо написати не зможу, ліл

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

5

Re: Шейдери для факіняна (творча криза)

видаляйте тему, там нічого не зрозуміло

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

6

Re: Шейдери для факіняна (творча криза)

FakiNyan написав:

видаляйте тему, там нічого не зрозуміло

Перейменував, не дякуйте.

x