Jak zrobić wbudowany cień w SVG

Muszę utworzyć pudełko z wstawionym cieniem, w taki sam sposób, w jaki CSS3 ma wbudowane cienie. Do tej pory znalazłem filtr z FeGaussianBlur, ale problem z tym polega na tym, że dodaje on cień poza ramką, czego nie chcę. Oto kod, który mam do tej pory:

<svg>
    <defs>
        <filter id="drop-shadow">
            <feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="5" />
            <feGaussianBlur in="SourceAlpha" result="blur2" stdDeviation="10" />
            <feGaussianBlur in="SourceAlpha" result="blur3" stdDeviation="15" />
            <feMerge>
                <feMergeNode in="blur" mode="normal"/>
                <feMergeNode in="blur2" mode="normal"/>
                <feMergeNode in="blur3" mode="normal"/>
                <feMergeNode in="SourceGraphic" mode="normal"/>
            </feMerge>
        </filter>
    </defs>
    <rect x="10" y="10" width="100" height="100"
    stroke="black" stroke-width="4" fill="transparent" filter="url(#drop-shadow)"/>
</svg>

Zrobiłempróbny który również porównuje ten kod z pożądanym wynikiem CSS. Filtr nie powinien działać tylko na prostokątach, ale także na trapezach i bardziej skomplikowanych wielokątach.

Próbowałem już korzystać z radialGradient, ale ponieważ to sprawia, że ​​gradient okrężny też nie jest dobry.

questionAnswers(2)

yourAnswerToTheQuestion