| 
<?phpuse nstdio\svg\container\G;
 use nstdio\svg\container\SVG;
 use nstdio\svg\desc\Desc;
 use nstdio\svg\filter\Composite;
 use nstdio\svg\filter\Filter;
 use nstdio\svg\filter\GaussianBlur;
 use nstdio\svg\filter\SpecularLighting;
 use nstdio\svg\light\PointLight;
 use nstdio\svg\shape\Rect;
 
 require_once __DIR__ . '/../vendor/autoload.php';
 
 $svg = new SVG();
 $svg->apply(['viewBox' => '0 0 1100 400']);
 
 new Desc($svg, 'Filter example');
 
 $filter = new Filter($svg);
 
 $blur = new GaussianBlur($filter);
 $blur->apply(['in' => 'SourceAlpha', 'stdDeviation' => 4, 'result' => 'blur1']);
 
 $specularLight = new SpecularLighting($filter);
 $specularLight->apply(['result' => 'specOut', 'in' => $blur->result, 'specularExponent' => 20, 'lighting-color' => '#bbbbbb']);
 
 $pointLight = new PointLight($specularLight);
 $pointLight->apply(['x' => 50, 'y' => 100, 'z' => 200]);
 
 $composite = new Composite($filter);
 $composite->apply(['in' => "SourceGraphic", 'in2' => $specularLight->result, 'operator' => "arithmetic", 'k1' => 0, 'k2' => 1, 'k3' => 1, 'k4' => 0]);
 
 $g = new G($svg);
 $g->apply(['stroke' => "tomato", 'fill' => "peru", 'filter' => "url(#$filter->id)"]);
 
 $params = [
 ['x' => '10%', 'y' => '10%'],
 ['x' => '55%', 'y' => '10%'],
 ['x' => '10%', 'y' => '55%'],
 ['x' => '55%', 'y' => '55%'],
 ];
 
 foreach ($params as $param) {
 new Rect($g, '40%', '40%', $param['x'], $param['y']);
 }
 
 echo $svg->draw();
 |