- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
unsigned int mapGray(double color/*0.0 --- 255.0*/)
{
int base = static_cast<unsigned char>(color);
if(base>=255)
return 0xFFFFFFFF;
else if(base<0)
return 0x000000;
double frac = color-base;
unsigned char r = 0;
unsigned char g = 0;
unsigned char b = 0;
if(frac<1.0/14.0) {
} else if(frac<3.0/14.0) {
r=1;
} else if(frac<5.0/14.0) {
b=1;
} else if(frac<7.0/14.0) {
g=1;
} else if(frac<9.0/14.0) {
b=1;
r=1;
} else if(frac<11.0/14.0) {
g=1;
b=1;
} else if(frac<13.0/14.0) {
r=1;
g=1;
} else {
r=1;
g=1;
b=1;
}
return (base+r)<<16 | (base+g)<<8 | (base+b) | 0xFF000000;
}
Steve_Brown 19.12.2011 09:25 # −3
TarasB 19.12.2011 09:29 # 0
Lure Of Chaos 06.01.2012 23:28 # 0
guest 10.01.2012 13:31 # +1
Как потом base может быть больше 255 или меньше 0.
Если это необходимый хак, то такие мется в коде оюязательно сопровождаются комментарием, который раскрывает суть хака, чтоб не ломать голову полчаса, смотря на шаманство.
gammaker 14.01.2012 11:49 # 0
TarasB 14.01.2012 12:35 # +1
gammaker 14.01.2012 16:18 # 0
Xom94ok 15.01.2012 05:13 # 0
В монохромных рендерах в областях с медленным переходом цветов могут быть видны "ступеньки", на которых цвет меняется от, например, 0x101010 до 0x111111. Только между этими двумя цветами есть ещё цвета 0x101011, 0x101110, 0x111010, 0x101111 и так далее, использовав которые, можно сделать картинку более "плавной". Где-то я эту идею подглядел, а где - уже не помню.
bugmenot 15.01.2012 05:32 # 0
Xom94ok 15.01.2012 06:43 # 0
bugmenot 15.01.2012 13:43 # 0
OCEHHuu_nemyx 16.10.2020 13:57 # +1
gammaker 16.10.2020 14:06 # +1
https://devoln.github.io/texgen/
Раньше там можно было сохранять результат и делиться ссылкой, но сервис, который я использовал в качестве бекенда, перестал существовать.
Сейчас пилю новую версию, которая будет убийцей Shader Toy.
OCEHHuu_nemyx 16.10.2020 14:19 # +1
OCETuHCKuu_nemyx 16.10.2020 16:19 # +1
Это здорово.
Это очень хорошо!
OCETuHCKuu_nemyx 16.10.2020 16:21 # +1
gammaker 17.10.2020 21:53 # +1
Xom94ok 14.01.2012 12:58 # 0
gammaker 14.01.2012 16:16 # 0
if(base>=255)
return 0xFFFFFFFF;
else if(base<0)
return 0x000000;
Число переводится в unsigned char, поэтому оно не может быть отрицательным или больше 255.
Остальные строки вроде больше нерациональности касаются.
Xom94ok 15.01.2012 05:00 # 0
Xom94ok 15.01.2012 05:15 # 0
gammaker 15.01.2012 11:48 # 0
guest8 09.04.2019 12:25 # −999