Войти
ПрограммированиеФорумГрафика

mix colors?

Страницы: 1 2 3 4 Следующая »
#0
22:40, 16 мая 2019

Всем привет!

Почему такой код не работает в GLSL?

  vec3 ColorA = vec3(VertexColor.r, VertexColor.g, VertexColor.b);
  vec3 ColorB = vec3(DiffColor.r, DiffColor.g, DiffColor.b);
  vec3 MixColor = mix(ColorA, ColorB, Affect);

а такой (с константой цвета)  РАБОТАЕТ!

  vec4 MixColor = VertexColor * (1.0 - Affect) + (vec4(vec3(1.0, 0.0, 0.0), 1.0) * Affect);

DiffColor передается в шейдер корректно.
VertexColor передается тоже корректно.

#1
22:56, 16 мая 2019

eDmk
> Affect

Хто такой ?

> vec3 MixColor = mix(ColorA, ColorB, Affect);

замени Color* на константы

#2
23:25, 16 мая 2019

eDmk
> а такой (с константой цвета)  РАБОТАЕТ!
> vec4 MixColor = VertexColor * (1.0 - Affect) + (vec4(vec3(1.0, 0.0, 0.0),
> 1.0) * Affect);

А такой скорее всего не работает

vec4 MixColor = VertexColor * (1.0 - Affect) + DiffColor * Affect;
Но DiffColor передается корректно, да? )

#3
(Правка: 23:45) 23:33, 16 мая 2019

BingoBongo
> Но DiffColor передается корректно, да? )
>

Не в тот шейдер передавался :) Вот где собака порылась.

Теперь работает:

vec4 MixColor = vec4(mix(vec3(VertexColor), vec3(DiffColor), Affect), 1.0);
и даже так работает:
vec4 MixColor = vec4(mix(VertexColor.rgb, DiffColor.rgb, Affect), 1.0);

#4
0:12, 17 мая 2019

eDmk
> Не в тот шейдер передавался :) Вот где собака порылась.

убогое пипи

#5
0:33, 17 мая 2019

innuendo
Про GL плохого слова не говоришь, в отличие от DX12))

#6
0:36, 17 мая 2019

IBets
Да это он наверно про писк младенцев в GL.
Почти заслужено. Я на нем мало писал.

#7
0:47, 17 мая 2019

eDmk
Это понятно, то там есть предыстория

#8
4:31, 17 мая 2019

eDmk
> Почему такой код не работает в GLSL
"не работает" — падает? выдаёт чёрный цвет? не компилируется? поджигает занавеску?

#9
(Правка: 10:17) 10:09, 17 мая 2019

Suslik
> выдаёт чёрный цвет?
В точку!

У меня 2 шейдера с DiffColor: LightProc и ObjectProc. Передавал в LightProc только.
Теперь работает:

+ Показать

#10
10:56, 17 мая 2019

eDmk
> vec4 diff = MixColor * max(dot(l, n) * Attenuation, minLightK);
> vec4 spec = SpecColor * max(pow(dot(l, reflect(-v, n)), Shininess), minLightK) * Attenuation;
дай угадаю, сам придумал?

#11
11:30, 17 мая 2019

Suslik
> дай угадаю, сам придумал?
Из книжки взял.

#12
11:46, 17 мая 2019

eDmk
> Из книжки взял.
можно узнать, в какой книге ты вычитал про max() в обеих формулах?

#13
(Правка: 12:05) 12:03, 17 мая 2019

Suslik
> можно узнать, в какой книге ты вычитал про max() в обеих формулах?
>
>
https://thebookofshaders.com/glossary/?search=mix

Мне нужна смесь цветов от источника cвета и от цвета вершины или текселя.
По моему корректно. Везде так делают в примерах.

#14
12:22, 17 мая 2019

Мне нужен фонг + текстура или оттенок света.

+ Показать

Как то еще можно проще сделать?

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика