Chodzi o uzyskanie takiego efektu bez ręcznego tworzenia zdjęcia i bez nowego znacznika svg
<svg id='triangle' xmlns="http://www.w3.org/2000/svg" version="1.1" width='300px' height='300px'>
<defs>
<pattern id='image' width="1" height="1" viewBox="0 0 100 100" >
<image xlink:href='https://www.w3schools.com/howto/pineapple.jpg' width="100" height="100" preserveAspectRatio="none"></image>
</pattern>
</defs>
<path d='M0 0 L300 0 L300 300 Z' class='myClass'></path>
<path d='M0 300 L0 0 L300 300 Z' class='myClass' style="filter: grayscale(100%);"></path>
</svg>
Definiujesz wzorzec image
.
Przypisujesz go jako tło fill
dla dwóch elementów: ścieżek rysujących trójkąt.
Drugiej z nich przypisujesz dodatkowo filtr szarości.
nie rozumiem też czemu to nie działa gdy styl dodam do jednego ze znaczników path,
No przecież tak właśnie robisz i tak działa.
czemu on nie jest "propagowany" do zdjęcia do którego się odnosi.
Jak styl dodam do znacznika svg to styl jest poprawnie przekazywany do zdjęć niżej w hierarchii i obydwa zdjęcia są czarno-białe.
Bo tak działa CSS. Jeśli chcesz zmodyfikować zdjęcie wykorzystywane jako tło, dodajesz filtr do IMAGE,
jeśli chcesz modyfikować tylko wybrany element używający tego zdjęcia jako tła, dodajesz filtr do PATH (czy jakiegoś innego elementu).