1

Тема: Дибільна документація від nVidia

Хайо. Вирішив розібратися з шейдерами, аби робити круті ефекти, і почав п'ялитись в документацію і приклади.
І от там бачу таку стрічку

if (fmod(50.0*wcoord.x,2.0)<1.0) {
                    color = fixed4(wcoord.xy,0.0,1.0);
                } else {
                    color = fixed4(0.3,0.3,0.3,1.0);
                }

Ну, думаю, треба розібратись, що таке fmod.
Пішов до nvidia, тому що той код пишеться мовою Cg. І бачу там таке.
http://http.developer.nvidia.com/Cg/fmod.html
Ну, думаю, тепер треба розібратись, що таке

float2 c = frac(abs(a/b))*abs(b);

дивлюсь на frac, бо з abs все зрозуміло
http://http.developer.nvidia.com/Cg/frac.html
бачу там

float frac(float v)
{
  return v - floor(v);
}

лізу тепер по floor, і тут на тобі

float3 floor(float3 v)
{
  float3 rv;
  int i;

  for (i=0; i<3; i++) {
    rv[i] = v[i] - frac(v[i]);
  }
  return rv;
}

ОТ ЩО ЗА ДИБІЛІЗМ? ЯКИЙ ДИБІЛ ЦЕ ЛАЙНО ПИСАВ? СРАНА РЕКУРСІЯ!!!! ІДІОТИ БЕЗМОЗГЛІ!!!!!!!!!

2

Re: Дибільна документація від nVidia

Щось мені сі здає що ви не той флур дивите. Бо це зациклювання. І типи не співпадають

float3 v

і

float v

.
Може там перевантаження функції, і є інший флур (який в нормальних умовах є відсіканням дробової частини)

3

Re: Дибільна документація від nVidia

Chemist-i написав:

Щось мені сі здає що ви не той флур дивите. Бо це зациклювання. І типи не співпадають

float3 v

і

float v

.
Може там перевантаження функції, і є інший флур (який в нормальних умовах є відсіканням дробової частини)

ну може воно десь тут написано? бо перевантажень купа, у вас норм з інглішем?

Name

floor - returns largest integer not greater than a scalar or each vector component.

Synopsis

float  floor(float a);
float1 floor(float1 a);
float2 floor(float2 a);
float3 floor(float3 a);
float4 floor(float4 a);

half   floor(half a);
half1  floor(half1 a);
half2  floor(half2 a);
half3  floor(half3 a);
half4  floor(half4 a);

fixed  floor(fixed a);
fixed1 floor(fixed1 a);
fixed2 floor(fixed2 a);
fixed3 floor(fixed3 a);
fixed4 floor(fixed4 a);
Parameters

a
Vector or scalar of which to determine the floor.
Description

Returns the floor or largest integer not greater than a scalar or each vector component.

Reference Implementation

floor for a float3 vector could be implemented like this.

float3 floor(float3 v)
{
  float3 rv;
  int i;

  for (i=0; i<3; i++) {
    rv[i] = v[i] - frac(v[i]);
  }
  return rv;
}
Profile Support

floor is supported in all profiles except fp20.

See Also

ceil, round

4

Re: Дибільна документація від nVidia

floor for a float3 vector could be implemented like this.

Звідси
це векторна, а та скалярна (may be)

5

Re: Дибільна документація від nVidia

fmod досі був float modulus-ом. Тобто залишком від ділення на дробове число. Автори вважали це common knowledge-ем, гадаю. А frac - дробова частина числа. floor - округлення до найближчого меншого цілого.

6

Re: Дибільна документація від nVidia

А float floor(float) можете показати?

7

Re: Дибільна документація від nVidia

koala написав:

fmod досі був float modulus-ом. Тобто залишком від ділення на дробове число. Автори вважали це common knowledge-ем, гадаю. А frac - дробова частина числа. floor - округлення до найближчого меншого цілого.

то fmod(4, 3.5) == 0.14 ?

8

Re: Дибільна документація від nVidia

FakiNyan написав:
koala написав:

fmod досі був float modulus-ом. Тобто залишком від ділення на дробове число. Автори вважали це common knowledge-ем, гадаю. А frac - дробова частина числа. floor - округлення до найближчого меншого цілого.

то fmod(4, 3.5) == 0.14 ?

Ні, 0.5 же:
frac(abs(4/3.5))*abs(3.5) = frac(1.(142857))*3.5=0.(142857)*3.5=0.5
0.(x) - цикл, 0.xxxxxx...

Подякували: FakiNyan1

9 Востаннє редагувалося FakiNyan (18.01.2015 23:15:36)

Re: Дибільна документація від nVidia

в шейдері це використовується для відмалювання отакого

Прихований текст

http://docs.unity3d.com/ru/current/uploads/Main/ShaderWindowsCoordinatesBars.png

глянув графік в вольфрам альфа

Прихований текст

http://не-дійсний-домен/eHF4p/8ef45a4ba7.png

Чуйте, це треба просто запам'ятати, чи можна якось зрозуміти?

10

Re: Дибільна документація від nVidia

мод - остаток від ділення?
Це можна зрозуміти, як націло ділитись щось починає - так і 0, все інше зростаюча функція.

11

Re: Дибільна документація від nVidia

Chemist-i написав:

мод - остаток від ділення?
Це можна зрозуміти, як націло ділитись щось починає - так і 0, все інше зростаюча функція.

мод - fmod про який писав пан koala
от його графік

Прихований текст

http://не-дійсний-домен/eHIwL/ac694fe658.png