Я пытаюсь сделать фрагментный шейдер для стиля 2d, над которым я сейчас работаю.
Но чтобы это работало, я должен сделать так, чтобы текстура могла перекрываться несколько раз.
результат, который я хочу, и 2 текущих результата:
Edit1: в моем художественном стиле у меня есть 1 текстура на плоскость. чтобы создать иллюзию толщины каждой плоскости, мне нужно нарисовать ее 2 раза с расстоянием в один пиксель.
иллюстрации:
если нарисована зеленая плоскость, то синяя плоскость, да, я хотел бы заменить зеленую область синей, где она перекрывается.
Я попытался вычесть следующее расположение текстуры, чтобы свести на нет смешение текстур, но также привел к добавлению отрицательных значений в пустой области.
```
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform float shxx;
uniform float shyy;
void main()
{
vec2 Coord1 = v_vTexcoord + vec2(0,0);
vec2 Coord2 = v_vTexcoord + vec2(shxx,shyy);
vec2 Coord3 = v_vTexcoord + vec2(shxx+shxx,shyy+shyy);
vec2 Coord4 = v_vTexcoord + vec2(+shxx+shxx+shxx,+shyy+shyy+shyy);
gl_FragColor = v_vColour * texture2D( gm_BaseTexture, Coord1)
- v_vColour * texture2D( gm_BaseTexture, Coord2)
+ v_vColour * texture2D( gm_BaseTexture, Coord2)
- v_vColour * texture2D( gm_BaseTexture, Coord3)
+ v_vColour * texture2D( gm_BaseTexture, Coord3)
- v_vColour * texture2D( gm_BaseTexture, Coord4)
+ v_vColour * texture2D( gm_BaseTexture, Coord4);
}
```