forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D. Шейдеры. Урок первый (http://forum.boolean.name/showthread.php?t=8564)

Samodelkin 03.05.2014 22:39

Ответ: Xors3D. Шейдеры. Урок первый
 
Цитата:

Сообщение от Mr_F_
необязательно.
варианта два - компилятор решает какой выбрать:

Ещё можно указать явно:
Код:

[ branch ] if ( ... ) { ... }
Для if и switch можно указывать branch или flatten, соответственно динамически или нет.
Для for, while можно указать unroll( x ) или loop, первый разворачивает цикл, в необязательном параметре можно указать насколько развернуть, loop - цикл не разворачивается.

tirarex 10.05.2014 11:14

Ответ: Xors3D. Шейдеры. Урок первый
 
Вот такой вопрос .
Делаю спотлайт для деферреда и настигла проблема .

Код спотлайта

cD = cD * cLightColor;
float3 vLight = normalize(vLightPos - vWorldPos.xyz);
float NdotL = max(0.0f, dot(vNormal, vLight));
float cosAngle = max(0.0f, dot(-vSpotLightDir, vLight));
float resi = saturate(1.0f - distance(vWorldPos.xyz, vLightPos) / fLightRadius);
float spotAtten = smoothstep(vLightAngles.x, vLightAngles.z, cosAngle);
cD=cD*(NdotL*spotAtten);

из кода
xSetEffectVector gPostPoly,"vLightAngles",0.1,0,numval(180)


Чем больше vLightAngles.z тем ярче спотлайт
в итоге я получаю еле светлый свет при яркости 255(1в шейдере).
Как исправить я даже не знаю

Izunad 08.06.2014 19:48

Ответ: Xors3D. Шейдеры. Урок первый
 
Ребят, а можно както заиндексировать текстурки?

Пробывал сделать так:
разместил на текстуру 512х512 16 текстурок по 128х128;
Оказалось что такое не прокатывает ибо изза фильтрации по краю тайла выводятся цвета соседнего тайла

Mr_F_ 08.06.2014 20:24

Ответ: Xors3D. Шейдеры. Урок первый
 
нужно делать спец края вокруг тайлов. т.е. ещё несколько пикселей продолжения тайла в бока, и выборку менять, чтобы брать квадрат без краёв этих. тогда фильтроваться нормально будет.
если тексы одного размера, можно в 3д текстуру положить и выбирать слои её. ну и на дх10+ на это есть текстурные массивы.

Izunad 08.06.2014 21:35

Ответ: Xors3D. Шейдеры. Урок первый
 
Хм, оказалось что проблема даже не из за "соседних тайлов", так как я размножил один тот же тайл по всей текстуре, но при прорисовке видна грань с цветом от пикселя 0:0


Код:

static float4 Colorka : COLOR;
texture Texture000: TEXTURE;

sampler Sampler1 = sampler_state
{
        Texture = <Texture000>;
};

struct PSInput
{
        float2 texCoords : TEXCOORD0;
};

float4 PSMain (PSInput input): COLOR {
        Colorka=tex2D(Sampler1,input.texCoords%0.25f);
        return float4(Colorka);
}

technique MainTechnique
{
        pass p
        {
                AlphaBlendEnable = 1;
                PixelShader        = compile ps_2_0 PSMain();
        }
}

Получается что когда input.texCoords почти кратна 0.25f он высчитывает цвет из координатов 0.0f

Izunad 08.06.2014 21:56

Ответ: Xors3D. Шейдеры. Урок первый
 
Проблема решаема. Оказывается работает так input.texCoords%0.1 или input.texCoords%0.2 0.3 0.4 0.5 и так далее, главное чтобы после запятой была одна цифра. + дополнительные грани от Mr_F_

Izunad 12.06.2014 19:49

Ответ: Xors3D. Шейдеры. Урок первый
 
Цитата:

если тексы одного размера, можно в 3д текстуру положить и выбирать слои её
А можно поподробнее, что такое 3д текстура для начала?

moka 12.06.2014 20:34

Ответ: Xors3D. Шейдеры. Урок первый
 
Цитата:

Сообщение от Izunad (Сообщение 282542)
А можно поподробнее, что такое 3д текстура для начала?

http://gamedev.stackexchange.com/que...re-3d-textures
GOOGLE?

Я не зануда, но это на столь уже базовые знания везде пережованные...

Samodelkin 12.06.2014 20:41

Ответ: Xors3D. Шейдеры. Урок первый
 
Нужно в школе ввести отдельный предмет "Что такое поисковые системы и зачем они нужны".

Arton 12.06.2014 22:22

Ответ: Xors3D. Шейдеры. Урок первый
 
Цитата:

Сообщение от Samodelkin (Сообщение 282544)
Нужно в школе ввести отдельный предмет "Что такое поисковые системы и зачем они нужны".

И психологию занудства. Тоже полезно будет.

Arton 10.08.2014 00:09

Ответ: Xors3D. Шейдеры. Урок первый
 
Вложений: 2
Копипаста из урока.
Не работают шейдеры, я запарился, хочу что бы кто-нибудь взглянул:

Вложение 20783

Каждый раз ошибка:
Вложение 20784

Если убрать проверку всё равно не работает (не накладывается/не загружается).

Samodelkin 10.08.2014 04:11

Ответ: Xors3D. Шейдеры. Урок первый
 
Цитата:

Сообщение от Arton (Сообщение 285176)
Копипаста из урока.
Не работают шейдеры, я запарился, хочу что бы кто-нибудь взглянул:

Вложение 20783

Каждый раз ошибка:
Вложение 20784

Если убрать проверку всё равно не работает (не накладывается/не загружается).

Ну я не собирал, тем более с Хорсом не работал никогда, но взглядом прошелся по коду -- в шейдере у тебя в функции PSMain строка
Код:

float lit        = dot(input.normal, 8lightDirection);
имя 8lightDirection - опечатка.

Вообще это же неудобно, представь что у тебя код шейдера в несколько тысяч строк, как ты будешь опечатки искать? Если Хорс не предоставляет информацию по компиляции шейдеров, то придумай что-нибудь, например напиши свой код который использует дх напрямую, где есть отчёт о сборки шейдера.

Mr_F_ 10.08.2014 04:14

Ответ: Xors3D. Шейдеры. Урок первый
 
ксорс можно заставить выплёвывать жирный хтмл с логом ошибок, включая все ошибки компила шейдеров.
шейдер ежели не скомпилился, то вернёт ноль, дальше ты этот 0 суёшь в ValidateTechnique и крашишься.

tirarex 10.08.2014 12:41

Ответ: Xors3D. Шейдеры. Урок первый
 
Вложений: 1
Цитата:

Сообщение от Arton (Сообщение 285176)
Копипаста из урока.
Не работают шейдеры, я запарился, хочу что бы кто-нибудь взглянул:

Вложение 20783

Каждый раз ошибка:
Вложение 20784

Если убрать проверку всё равно не работает (не накладывается/не загружается).

Там было несколько ошибок.
На сайте mok'и поищи tv3d shader editor,
Полезная штуковина.

Arton 10.08.2014 18:57

Ответ: Xors3D. Шейдеры. Урок первый
 
Спасибо большое :)

Цитата:

Сообщение от Samodelkin (Сообщение 285181)
Код:

float lit        = dot(input.normal, 8lightDirection);
имя 8lightDirection - опечатка.

Вместо "8" должен было быть "-", почему-то при копирование из pdf все "-" заменились на "8" (не говоря уже о потерянном форматирование). Заменял, но не всё заметил.

У Моки утилиту давно не смог скачать т. к. она на юкозе, старую регистрацию не помню, а новая не прошла, попробую ещё раз.

Про выдачу ошибок шейдера в лог не знал.


Часовой пояс GMT +4, время: 05:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot