diff --git a/.gitignore b/.gitignore index d0e492b..ff2398e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ export_presets.cfg # Mono-specific ignores .mono/ -data_*/ \ No newline at end of file +data_*/ + diff --git a/addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png.import b/addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png.import index 781f3a4..8ec8d24 100644 --- a/addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png.import +++ b/addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://im3imr3u2j1y" +uid="uid://e6k5hrwrnjy3" path.s3tc="res://.godot/imported/VisualShaderExtras-Logo-128x128.png-726a4ccf96ab2edb98da5e19c7db9d4c.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png new file mode 100644 index 0000000..836bc8b Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png.import new file mode 100644 index 0000000..1f97540 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnetif28gysjd" +path="res://.godot/imported/icon.png-74bfc66ed32ccd3c98ad4278681f1c3e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.png" +dest_files=["res://.godot/imported/icon.png-74bfc66ed32ccd3c98ad4278681f1c3e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg new file mode 100644 index 0000000..adc26df --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg @@ -0,0 +1 @@ + diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg.import new file mode 100644 index 0000000..da877c2 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dja24d5rtr2ae" +path.s3tc="res://.godot/imported/icon.svg-92d9025726884757c43435f4ef47cb26.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" +dest_files=["res://.godot/imported/icon.svg-92d9025726884757c43435f4ef47cb26.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj new file mode 100644 index 0000000..0825979 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj @@ -0,0 +1,2331 @@ +# Blender 3.3.0 +# www.blender.org +o Suzanne +v 0.437500 0.164062 0.765625 +v -0.437500 0.164062 0.765625 +v 0.500000 0.093750 0.687500 +v -0.500000 0.093750 0.687500 +v 0.546875 0.054688 0.578125 +v -0.546875 0.054688 0.578125 +v 0.351562 -0.023438 0.617188 +v -0.351562 -0.023438 0.617188 +v 0.351562 0.031250 0.718750 +v -0.351562 0.031250 0.718750 +v 0.351562 0.132812 0.781250 +v -0.351562 0.132812 0.781250 +v 0.273438 0.164062 0.796875 +v -0.273438 0.164062 0.796875 +v 0.203125 0.093750 0.742188 +v -0.203125 0.093750 0.742188 +v 0.156250 0.054688 0.648438 +v -0.156250 0.054688 0.648438 +v 0.078125 0.242188 0.656250 +v -0.078125 0.242188 0.656250 +v 0.140625 0.242188 0.742188 +v -0.140625 0.242188 0.742188 +v 0.242188 0.242188 0.796875 +v -0.242188 0.242188 0.796875 +v 0.273438 0.328125 0.796875 +v -0.273438 0.328125 0.796875 +v 0.203125 0.390625 0.742188 +v -0.203125 0.390625 0.742188 +v 0.156250 0.437500 0.648438 +v -0.156250 0.437500 0.648438 +v 0.351562 0.515625 0.617188 +v -0.351562 0.515625 0.617188 +v 0.351562 0.453125 0.718750 +v -0.351562 0.453125 0.718750 +v 0.351562 0.359375 0.781250 +v -0.351562 0.359375 0.781250 +v 0.437500 0.328125 0.765625 +v -0.437500 0.328125 0.765625 +v 0.500000 0.390625 0.687500 +v -0.500000 0.390625 0.687500 +v 0.546875 0.437500 0.578125 +v -0.546875 0.437500 0.578125 +v 0.625000 0.242188 0.562500 +v -0.625000 0.242188 0.562500 +v 0.562500 0.242188 0.671875 +v -0.562500 0.242188 0.671875 +v 0.468750 0.242188 0.757812 +v -0.468750 0.242188 0.757812 +v 0.476562 0.242188 0.773438 +v -0.476562 0.242188 0.773438 +v 0.445312 0.335938 0.781250 +v -0.445312 0.335938 0.781250 +v 0.351562 0.375000 0.804688 +v -0.351562 0.375000 0.804688 +v 0.265625 0.335938 0.820312 +v -0.265625 0.335938 0.820312 +v 0.226562 0.242188 0.820312 +v -0.226562 0.242188 0.820312 +v 0.265625 0.156250 0.820312 +v -0.265625 0.156250 0.820312 +v 0.351562 0.242188 0.828125 +v -0.351562 0.242188 0.828125 +v 0.351562 0.117188 0.804688 +v -0.351562 0.117188 0.804688 +v 0.445312 0.156250 0.781250 +v -0.445312 0.156250 0.781250 +v 0.000000 0.429688 0.742188 +v 0.000000 0.351562 0.820312 +v 0.000000 -0.679688 0.734375 +v 0.000000 -0.320312 0.781250 +v 0.000000 -0.187500 0.796875 +v 0.000000 -0.773438 0.718750 +v 0.000000 0.406250 0.601562 +v 0.000000 0.570312 0.570312 +v 0.000000 0.898438 -0.546875 +v 0.000000 0.562500 -0.851562 +v 0.000000 0.070312 -0.828125 +v 0.000000 -0.382812 -0.351562 +v 0.203125 -0.187500 0.562500 +v -0.203125 -0.187500 0.562500 +v 0.312500 -0.437500 0.570312 +v -0.312500 -0.437500 0.570312 +v 0.351562 -0.695312 0.570312 +v -0.351562 -0.695312 0.570312 +v 0.367188 -0.890625 0.531250 +v -0.367188 -0.890625 0.531250 +v 0.328125 -0.945312 0.523438 +v -0.328125 -0.945312 0.523438 +v 0.179688 -0.968750 0.554688 +v -0.179688 -0.968750 0.554688 +v 0.000000 -0.984375 0.578125 +v 0.437500 -0.140625 0.531250 +v -0.437500 -0.140625 0.531250 +v 0.632812 -0.039062 0.539062 +v -0.632812 -0.039062 0.539062 +v 0.828125 0.148438 0.445312 +v -0.828125 0.148438 0.445312 +v 0.859375 0.429688 0.593750 +v -0.859375 0.429688 0.593750 +v 0.710938 0.484375 0.625000 +v -0.710938 0.484375 0.625000 +v 0.492188 0.601562 0.687500 +v -0.492188 0.601562 0.687500 +v 0.320312 0.757812 0.734375 +v -0.320312 0.757812 0.734375 +v 0.156250 0.718750 0.757812 +v -0.156250 0.718750 0.757812 +v 0.062500 0.492188 0.750000 +v -0.062500 0.492188 0.750000 +v 0.164062 0.414062 0.773438 +v -0.164062 0.414062 0.773438 +v 0.125000 0.304688 0.765625 +v -0.125000 0.304688 0.765625 +v 0.203125 0.093750 0.742188 +v -0.203125 0.093750 0.742188 +v 0.375000 0.015625 0.703125 +v -0.375000 0.015625 0.703125 +v 0.492188 0.062500 0.671875 +v -0.492188 0.062500 0.671875 +v 0.625000 0.187500 0.648438 +v -0.625000 0.187500 0.648438 +v 0.640625 0.296875 0.648438 +v -0.640625 0.296875 0.648438 +v 0.601562 0.375000 0.664062 +v -0.601562 0.375000 0.664062 +v 0.429688 0.437500 0.718750 +v -0.429688 0.437500 0.718750 +v 0.250000 0.468750 0.757812 +v -0.250000 0.468750 0.757812 +v 0.000000 -0.765625 0.734375 +v 0.109375 -0.718750 0.734375 +v -0.109375 -0.718750 0.734375 +v 0.117188 -0.835938 0.710938 +v -0.117188 -0.835938 0.710938 +v 0.062500 -0.882812 0.695312 +v -0.062500 -0.882812 0.695312 +v 0.000000 -0.890625 0.687500 +v 0.000000 -0.195312 0.750000 +v 0.000000 -0.140625 0.742188 +v 0.101562 -0.148438 0.742188 +v -0.101562 -0.148438 0.742188 +v 0.125000 -0.226562 0.750000 +v -0.125000 -0.226562 0.750000 +v 0.085938 -0.289062 0.742188 +v -0.085938 -0.289062 0.742188 +v 0.398438 -0.046875 0.671875 +v -0.398438 -0.046875 0.671875 +v 0.617188 0.054688 0.625000 +v -0.617188 0.054688 0.625000 +v 0.726562 0.203125 0.601562 +v -0.726562 0.203125 0.601562 +v 0.742188 0.375000 0.656250 +v -0.742188 0.375000 0.656250 +v 0.687500 0.414062 0.726562 +v -0.687500 0.414062 0.726562 +v 0.437500 0.546875 0.796875 +v -0.437500 0.546875 0.796875 +v 0.312500 0.640625 0.835938 +v -0.312500 0.640625 0.835938 +v 0.203125 0.617188 0.851562 +v -0.203125 0.617188 0.851562 +v 0.101562 0.429688 0.843750 +v -0.101562 0.429688 0.843750 +v 0.125000 -0.101562 0.812500 +v -0.125000 -0.101562 0.812500 +v 0.210938 -0.445312 0.710938 +v -0.210938 -0.445312 0.710938 +v 0.250000 -0.703125 0.687500 +v -0.250000 -0.703125 0.687500 +v 0.265625 -0.820312 0.664062 +v -0.265625 -0.820312 0.664062 +v 0.234375 -0.914062 0.632812 +v -0.234375 -0.914062 0.632812 +v 0.164062 -0.929688 0.632812 +v -0.164062 -0.929688 0.632812 +v 0.000000 -0.945312 0.640625 +v 0.000000 0.046875 0.726562 +v 0.000000 0.210938 0.765625 +v 0.328125 0.476562 0.742188 +v -0.328125 0.476562 0.742188 +v 0.164062 0.140625 0.750000 +v -0.164062 0.140625 0.750000 +v 0.132812 0.210938 0.757812 +v -0.132812 0.210938 0.757812 +v 0.117188 -0.687500 0.734375 +v -0.117188 -0.687500 0.734375 +v 0.078125 -0.445312 0.750000 +v -0.078125 -0.445312 0.750000 +v 0.000000 -0.445312 0.750000 +v 0.000000 -0.328125 0.742188 +v 0.093750 -0.273438 0.781250 +v -0.093750 -0.273438 0.781250 +v 0.132812 -0.226562 0.796875 +v -0.132812 -0.226562 0.796875 +v 0.109375 -0.132812 0.781250 +v -0.109375 -0.132812 0.781250 +v 0.039062 -0.125000 0.781250 +v -0.039062 -0.125000 0.781250 +v 0.000000 -0.203125 0.828125 +v 0.046875 -0.148438 0.812500 +v -0.046875 -0.148438 0.812500 +v 0.093750 -0.156250 0.812500 +v -0.093750 -0.156250 0.812500 +v 0.109375 -0.226562 0.828125 +v -0.109375 -0.226562 0.828125 +v 0.078125 -0.250000 0.804688 +v -0.078125 -0.250000 0.804688 +v 0.000000 -0.289062 0.804688 +v 0.257812 -0.312500 0.554688 +v -0.257812 -0.312500 0.554688 +v 0.164062 -0.242188 0.710938 +v -0.164062 -0.242188 0.710938 +v 0.179688 -0.312500 0.710938 +v -0.179688 -0.312500 0.710938 +v 0.234375 -0.250000 0.554688 +v -0.234375 -0.250000 0.554688 +v 0.000000 -0.875000 0.687500 +v 0.046875 -0.867188 0.687500 +v -0.046875 -0.867188 0.687500 +v 0.093750 -0.820312 0.710938 +v -0.093750 -0.820312 0.710938 +v 0.093750 -0.742188 0.726562 +v -0.093750 -0.742188 0.726562 +v 0.000000 -0.781250 0.656250 +v 0.093750 -0.750000 0.664062 +v -0.093750 -0.750000 0.664062 +v 0.093750 -0.812500 0.640625 +v -0.093750 -0.812500 0.640625 +v 0.046875 -0.851562 0.632812 +v -0.046875 -0.851562 0.632812 +v 0.000000 -0.859375 0.632812 +v 0.171875 0.218750 0.781250 +v -0.171875 0.218750 0.781250 +v 0.187500 0.156250 0.773438 +v -0.187500 0.156250 0.773438 +v 0.335938 0.429688 0.757812 +v -0.335938 0.429688 0.757812 +v 0.273438 0.421875 0.773438 +v -0.273438 0.421875 0.773438 +v 0.421875 0.398438 0.773438 +v -0.421875 0.398438 0.773438 +v 0.562500 0.351562 0.695312 +v -0.562500 0.351562 0.695312 +v 0.585938 0.289062 0.687500 +v -0.585938 0.289062 0.687500 +v 0.578125 0.195312 0.679688 +v -0.578125 0.195312 0.679688 +v 0.476562 0.101562 0.718750 +v -0.476562 0.101562 0.718750 +v 0.375000 0.062500 0.742188 +v -0.375000 0.062500 0.742188 +v 0.226562 0.109375 0.781250 +v -0.226562 0.109375 0.781250 +v 0.179688 0.296875 0.781250 +v -0.179688 0.296875 0.781250 +v 0.210938 0.375000 0.781250 +v -0.210938 0.375000 0.781250 +v 0.234375 0.359375 0.757812 +v -0.234375 0.359375 0.757812 +v 0.195312 0.296875 0.757812 +v -0.195312 0.296875 0.757812 +v 0.242188 0.125000 0.757812 +v -0.242188 0.125000 0.757812 +v 0.375000 0.085938 0.726562 +v -0.375000 0.085938 0.726562 +v 0.460938 0.117188 0.703125 +v -0.460938 0.117188 0.703125 +v 0.546875 0.210938 0.671875 +v -0.546875 0.210938 0.671875 +v 0.554688 0.281250 0.671875 +v -0.554688 0.281250 0.671875 +v 0.531250 0.335938 0.679688 +v -0.531250 0.335938 0.679688 +v 0.414062 0.390625 0.750000 +v -0.414062 0.390625 0.750000 +v 0.281250 0.398438 0.765625 +v -0.281250 0.398438 0.765625 +v 0.335938 0.406250 0.750000 +v -0.335938 0.406250 0.750000 +v 0.203125 0.171875 0.750000 +v -0.203125 0.171875 0.750000 +v 0.195312 0.226562 0.750000 +v -0.195312 0.226562 0.750000 +v 0.109375 0.460938 0.609375 +v -0.109375 0.460938 0.609375 +v 0.195312 0.664062 0.617188 +v -0.195312 0.664062 0.617188 +v 0.335938 0.687500 0.593750 +v -0.335938 0.687500 0.593750 +v 0.484375 0.554688 0.554688 +v -0.484375 0.554688 0.554688 +v 0.679688 0.453125 0.492188 +v -0.679688 0.453125 0.492188 +v 0.796875 0.406250 0.460938 +v -0.796875 0.406250 0.460938 +v 0.773438 0.164062 0.375000 +v -0.773438 0.164062 0.375000 +v 0.601562 0.000000 0.414062 +v -0.601562 0.000000 0.414062 +v 0.437500 -0.093750 0.468750 +v -0.437500 -0.093750 0.468750 +v 0.000000 0.898438 0.289062 +v 0.000000 0.984375 -0.078125 +v 0.000000 -0.195312 -0.671875 +v 0.000000 -0.460938 0.187500 +v 0.000000 -0.976562 0.460938 +v 0.000000 -0.804688 0.343750 +v 0.000000 -0.570312 0.320312 +v 0.000000 -0.484375 0.281250 +v 0.851562 0.234375 0.054688 +v -0.851562 0.234375 0.054688 +v 0.859375 0.320312 -0.046875 +v -0.859375 0.320312 -0.046875 +v 0.773438 0.265625 -0.437500 +v -0.773438 0.265625 -0.437500 +v 0.460938 0.437500 -0.703125 +v -0.460938 0.437500 -0.703125 +v 0.734375 -0.046875 0.070312 +v -0.734375 -0.046875 0.070312 +v 0.593750 -0.125000 -0.164062 +v -0.593750 -0.125000 -0.164062 +v 0.640625 -0.007812 -0.429688 +v -0.640625 -0.007812 -0.429688 +v 0.335938 0.054688 -0.664062 +v -0.335938 0.054688 -0.664062 +v 0.234375 -0.351562 0.406250 +v -0.234375 -0.351562 0.406250 +v 0.179688 -0.414062 0.257812 +v -0.179688 -0.414062 0.257812 +v 0.289062 -0.710938 0.382812 +v -0.289062 -0.710938 0.382812 +v 0.250000 -0.500000 0.390625 +v -0.250000 -0.500000 0.390625 +v 0.328125 -0.914062 0.398438 +v -0.328125 -0.914062 0.398438 +v 0.140625 -0.757812 0.367188 +v -0.140625 -0.757812 0.367188 +v 0.125000 -0.539062 0.359375 +v -0.125000 -0.539062 0.359375 +v 0.164062 -0.945312 0.437500 +v -0.164062 -0.945312 0.437500 +v 0.218750 -0.281250 0.429688 +v -0.218750 -0.281250 0.429688 +v 0.210938 -0.226562 0.468750 +v -0.210938 -0.226562 0.468750 +v 0.203125 -0.171875 0.500000 +v -0.203125 -0.171875 0.500000 +v 0.210938 -0.390625 0.164062 +v -0.210938 -0.390625 0.164062 +v 0.296875 -0.312500 -0.265625 +v -0.296875 -0.312500 -0.265625 +v 0.343750 -0.148438 -0.539062 +v -0.343750 -0.148438 -0.539062 +v 0.453125 0.867188 -0.382812 +v -0.453125 0.867188 -0.382812 +v 0.453125 0.929688 -0.070312 +v -0.453125 0.929688 -0.070312 +v 0.453125 0.851562 0.234375 +v -0.453125 0.851562 0.234375 +v 0.460938 0.523438 0.429688 +v -0.460938 0.523438 0.429688 +v 0.726562 0.406250 0.335938 +v -0.726562 0.406250 0.335938 +v 0.632812 0.453125 0.281250 +v -0.632812 0.453125 0.281250 +v 0.640625 0.703125 0.054688 +v -0.640625 0.703125 0.054688 +v 0.796875 0.562500 0.125000 +v -0.796875 0.562500 0.125000 +v 0.796875 0.617188 -0.117188 +v -0.796875 0.617188 -0.117188 +v 0.640625 0.750000 -0.195312 +v -0.640625 0.750000 -0.195312 +v 0.640625 0.679688 -0.445312 +v -0.640625 0.679688 -0.445312 +v 0.796875 0.539062 -0.359375 +v -0.796875 0.539062 -0.359375 +v 0.617188 0.328125 -0.585938 +v -0.617188 0.328125 -0.585938 +v 0.484375 0.023438 -0.546875 +v -0.484375 0.023438 -0.546875 +v 0.820312 0.328125 -0.203125 +v -0.820312 0.328125 -0.203125 +v 0.406250 -0.171875 0.148438 +v -0.406250 -0.171875 0.148438 +v 0.429688 -0.195312 -0.210938 +v -0.429688 -0.195312 -0.210938 +v 0.890625 0.406250 -0.234375 +v -0.890625 0.406250 -0.234375 +v 0.773438 -0.140625 -0.125000 +v -0.773438 -0.140625 -0.125000 +v 1.039062 -0.101562 -0.328125 +v -1.039062 -0.101562 -0.328125 +v 1.281250 0.054688 -0.429688 +v -1.281250 0.054688 -0.429688 +v 1.351562 0.320312 -0.421875 +v -1.351562 0.320312 -0.421875 +v 1.234375 0.507812 -0.421875 +v -1.234375 0.507812 -0.421875 +v 1.023438 0.476562 -0.312500 +v -1.023438 0.476562 -0.312500 +v 1.015625 0.414062 -0.289062 +v -1.015625 0.414062 -0.289062 +v 1.187500 0.437500 -0.390625 +v -1.187500 0.437500 -0.390625 +v 1.265625 0.289062 -0.406250 +v -1.265625 0.289062 -0.406250 +v 1.210938 0.078125 -0.406250 +v -1.210938 0.078125 -0.406250 +v 1.031250 -0.039062 -0.304688 +v -1.031250 -0.039062 -0.304688 +v 0.828125 -0.070312 -0.132812 +v -0.828125 -0.070312 -0.132812 +v 0.921875 0.359375 -0.218750 +v -0.921875 0.359375 -0.218750 +v 0.945312 0.304688 -0.289062 +v -0.945312 0.304688 -0.289062 +v 0.882812 -0.023438 -0.210938 +v -0.882812 -0.023438 -0.210938 +v 1.039062 0.000000 -0.367188 +v -1.039062 0.000000 -0.367188 +v 1.187500 0.093750 -0.445312 +v -1.187500 0.093750 -0.445312 +v 1.234375 0.250000 -0.445312 +v -1.234375 0.250000 -0.445312 +v 1.171875 0.359375 -0.437500 +v -1.171875 0.359375 -0.437500 +v 1.023438 0.343750 -0.359375 +v -1.023438 0.343750 -0.359375 +v 0.843750 0.289062 -0.210938 +v -0.843750 0.289062 -0.210938 +v 0.835938 0.171875 -0.273438 +v -0.835938 0.171875 -0.273438 +v 0.757812 0.093750 -0.273438 +v -0.757812 0.093750 -0.273438 +v 0.820312 0.085938 -0.273438 +v -0.820312 0.085938 -0.273438 +v 0.843750 0.015625 -0.273438 +v -0.843750 0.015625 -0.273438 +v 0.812500 -0.015625 -0.273438 +v -0.812500 -0.015625 -0.273438 +v 0.726562 0.000000 -0.070312 +v -0.726562 0.000000 -0.070312 +v 0.718750 -0.023438 -0.171875 +v -0.718750 -0.023438 -0.171875 +v 0.718750 0.039062 -0.187500 +v -0.718750 0.039062 -0.187500 +v 0.796875 0.203125 -0.210938 +v -0.796875 0.203125 -0.210938 +v 0.890625 0.242188 -0.265625 +v -0.890625 0.242188 -0.265625 +v 0.890625 0.234375 -0.320312 +v -0.890625 0.234375 -0.320312 +v 0.812500 -0.015625 -0.320312 +v -0.812500 -0.015625 -0.320312 +v 0.851562 0.015625 -0.320312 +v -0.851562 0.015625 -0.320312 +v 0.828125 0.078125 -0.320312 +v -0.828125 0.078125 -0.320312 +v 0.765625 0.093750 -0.320312 +v -0.765625 0.093750 -0.320312 +v 0.843750 0.171875 -0.320312 +v -0.843750 0.171875 -0.320312 +v 1.039062 0.328125 -0.414062 +v -1.039062 0.328125 -0.414062 +v 1.187500 0.343750 -0.484375 +v -1.187500 0.343750 -0.484375 +v 1.257812 0.242188 -0.492188 +v -1.257812 0.242188 -0.492188 +v 1.210938 0.085938 -0.484375 +v -1.210938 0.085938 -0.484375 +v 1.046875 0.000000 -0.421875 +v -1.046875 0.000000 -0.421875 +v 0.882812 -0.015625 -0.265625 +v -0.882812 -0.015625 -0.265625 +v 0.953125 0.289062 -0.343750 +v -0.953125 0.289062 -0.343750 +v 0.890625 0.109375 -0.328125 +v -0.890625 0.109375 -0.328125 +v 0.937500 0.062500 -0.335938 +v -0.937500 0.062500 -0.335938 +v 1.000000 0.125000 -0.367188 +v -1.000000 0.125000 -0.367188 +v 0.960938 0.171875 -0.351562 +v -0.960938 0.171875 -0.351562 +v 1.015625 0.234375 -0.375000 +v -1.015625 0.234375 -0.375000 +v 1.054688 0.187500 -0.382812 +v -1.054688 0.187500 -0.382812 +v 1.109375 0.210938 -0.390625 +v -1.109375 0.210938 -0.390625 +v 1.085938 0.273438 -0.390625 +v -1.085938 0.273438 -0.390625 +v 1.023438 0.437500 -0.484375 +v -1.023438 0.437500 -0.484375 +v 1.250000 0.468750 -0.546875 +v -1.250000 0.468750 -0.546875 +v 1.367188 0.296875 -0.500000 +v -1.367188 0.296875 -0.500000 +v 1.312500 0.054688 -0.531250 +v -1.312500 0.054688 -0.531250 +v 1.039062 -0.085938 -0.492188 +v -1.039062 -0.085938 -0.492188 +v 0.789062 -0.125000 -0.328125 +v -0.789062 -0.125000 -0.328125 +v 0.859375 0.382812 -0.382812 +v -0.859375 0.382812 -0.382812 +v -0.000000 0.851580 -0.000000 +v 0.219652 1.019377 0.159585 +v -0.083898 1.019377 0.258216 +v -0.271504 1.019378 -0.000000 +v -0.083898 1.019377 -0.258216 +v 0.219652 1.019377 -0.159585 +v 0.083898 1.290885 0.258216 +v -0.219652 1.290885 0.159585 +v -0.219652 1.290885 -0.159585 +v 0.083898 1.290885 -0.258216 +v 0.271504 1.290884 -0.000000 +v -0.000000 1.458682 -0.000000 +v -0.049314 0.896914 0.151774 +v 0.129107 0.896914 0.093801 +v 0.079794 0.995543 0.245576 +v 0.258215 0.995543 -0.000000 +v 0.129107 0.896914 -0.093801 +v -0.159586 0.896914 -0.000000 +v -0.208901 0.995543 0.151775 +v -0.049314 0.896914 -0.151774 +v -0.208901 0.995543 -0.151775 +v 0.079794 0.995543 -0.245576 +v 0.288695 1.155131 0.093801 +v 0.288695 1.155131 -0.093801 +v -0.000000 1.155131 0.303551 +v 0.178423 1.155131 0.245578 +v -0.288695 1.155131 0.093801 +v -0.178423 1.155131 0.245578 +v -0.178423 1.155131 -0.245578 +v -0.288695 1.155131 -0.093801 +v 0.178423 1.155131 -0.245578 +v -0.000000 1.155131 -0.303551 +v 0.208901 1.314718 0.151775 +v -0.079794 1.314719 0.245576 +v -0.258215 1.314718 -0.000000 +v -0.079794 1.314719 -0.245576 +v 0.208901 1.314718 -0.151775 +v 0.049314 1.413348 0.151774 +v 0.159586 1.413347 -0.000000 +v -0.129107 1.413348 0.093801 +v -0.129107 1.413348 -0.093801 +v 0.049314 1.413348 -0.151774 +vn 0.6650 -0.2008 0.7194 +vn -0.6650 -0.2008 0.7194 +vn 0.8294 -0.3036 0.4689 +vn -0.8294 -0.3036 0.4689 +vn 0.4155 -0.7933 0.4449 +vn -0.4155 -0.7933 0.4449 +vn 0.3600 -0.5089 0.7820 +vn -0.3600 -0.5089 0.7820 +vn -0.0787 -0.5394 0.8384 +vn 0.0787 -0.5394 0.8384 +vn -0.2696 -0.8413 0.4685 +vn 0.2696 -0.8413 0.4685 +vn -0.7707 -0.3352 0.5420 +vn 0.7707 -0.3352 0.5420 +vn -0.4689 -0.1940 0.8617 +vn 0.4689 -0.1940 0.8617 +vn -0.4767 0.1907 0.8581 +vn 0.4767 0.1907 0.8581 +vn -0.7672 0.3264 0.5521 +vn 0.7672 0.3264 0.5521 +vn -0.2519 0.8173 0.5182 +vn 0.2519 0.8173 0.5182 +vn -0.0949 0.5696 0.8164 +vn 0.0949 0.5696 0.8164 +vn 0.3667 0.5370 0.7597 +vn -0.3667 0.5370 0.7597 +vn 0.4141 0.7672 0.4898 +vn -0.4141 0.7672 0.4898 +vn 0.8277 0.2952 0.4771 +vn -0.8277 0.2952 0.4771 +vn 0.6713 0.1971 0.7145 +vn -0.6713 0.1971 0.7145 +vn 0.8111 0.3244 -0.4867 +vn -0.8111 0.3244 -0.4867 +vn 0.2052 0.8206 -0.5334 +vn -0.2052 0.8206 -0.5334 +vn -0.4223 0.7806 -0.4607 +vn 0.4223 0.7806 -0.4607 +vn -0.8241 0.3225 -0.4658 +vn 0.8241 0.3225 -0.4658 +vn -0.8137 -0.3487 -0.4650 +vn 0.8137 -0.3487 -0.4650 +vn -0.4223 -0.7806 -0.4607 +vn 0.4223 -0.7806 -0.4607 +vn 0.2052 -0.8206 -0.5334 +vn -0.2052 -0.8206 -0.5334 +vn 0.7995 -0.3510 -0.4875 +vn -0.7995 -0.3510 -0.4875 +vn 0.4000 -0.0623 0.9144 +vn -0.4000 -0.0623 0.9144 +vn 0.3069 -0.1754 0.9354 +vn -0.3069 -0.1754 0.9354 +vn 0.0945 -0.1835 0.9785 +vn -0.0945 -0.1835 0.9785 +vn -0.0624 -0.0283 0.9977 +vn 0.0624 -0.0283 0.9977 +vn -0.0624 0.0260 0.9977 +vn 0.0624 0.0260 0.9977 +vn 0.0996 0.1729 0.9799 +vn -0.0996 0.1729 0.9799 +vn 0.3036 0.1656 0.9383 +vn -0.3036 0.1656 0.9383 +vn 0.4002 0.0572 0.9147 +vn -0.4002 0.0572 0.9147 +vn 0.1231 -0.8616 0.4924 +vn -0.1231 -0.8616 0.4924 +vn 0.2190 -0.8647 0.4520 +vn -0.2190 -0.8647 0.4520 +vn 0.5902 -0.4550 0.6668 +vn -0.5902 -0.4550 0.6668 +vn 0.7689 -0.0506 0.6374 +vn -0.7689 -0.0506 0.6374 +vn 0.7796 0.0900 0.6197 +vn -0.7796 0.0900 0.6197 +vn 0.3241 -0.8188 0.4739 +vn -0.3241 -0.8188 0.4739 +vn 0.3857 -0.6629 0.6417 +vn -0.3857 -0.6629 0.6417 +vn 0.6895 -0.4193 0.5906 +vn -0.6895 -0.4193 0.5906 +vn 0.6588 -0.3634 0.6588 +vn -0.6588 -0.3634 0.6588 +vn 0.5465 0.3707 0.7509 +vn -0.5465 0.3707 0.7509 +vn 0.5064 0.6464 0.5706 +vn -0.5064 0.6464 0.5706 +vn 0.6092 0.5167 0.6015 +vn -0.6092 0.5167 0.6015 +vn -0.0441 0.6610 0.7491 +vn 0.0441 0.6610 0.7491 +vn -0.7246 0.3187 0.6110 +vn 0.7246 0.3187 0.6110 +vn -0.5880 0.5554 0.5880 +vn 0.5880 0.5554 0.5880 +vn 0.5361 -0.3909 0.7482 +vn -0.5361 -0.3909 0.7482 +vn 0.2207 -0.4690 0.8552 +vn -0.2207 -0.4690 0.8552 +vn -0.0794 -0.5321 0.8429 +vn 0.0794 -0.5321 0.8429 +vn -0.0825 -0.6575 0.7490 +vn 0.0825 -0.6575 0.7490 +vn 0.0457 -0.5667 0.8226 +vn -0.0457 -0.5667 0.8226 +vn 0.2784 -0.2130 0.9365 +vn -0.2784 -0.2130 0.9365 +vn 0.3813 -0.1824 0.9063 +vn -0.3813 -0.1824 0.9063 +vn 0.3357 -0.2878 0.8969 +vn -0.3357 -0.2878 0.8969 +vn 0.3762 0.0603 0.9246 +vn -0.3762 0.0603 0.9246 +vn -0.1352 0.2680 0.9539 +vn 0.1352 0.2680 0.9539 +vn 0.3961 -0.4321 0.8102 +vn -0.3961 -0.4321 0.8102 +vn 0.1856 -0.2474 0.9510 +vn -0.1856 -0.2474 0.9510 +vn 0.0099 -0.1948 0.9808 +vn -0.0099 -0.1948 0.9808 +vn 0.0721 -0.6966 0.7138 +vn -0.0721 -0.6966 0.7138 +vn 0.1863 -0.5723 0.7986 +vn -0.1863 -0.5723 0.7986 +vn 0.3157 -0.2708 0.9094 +vn -0.3157 -0.2708 0.9094 +vn 0.3063 -0.0265 0.9516 +vn -0.3063 -0.0265 0.9516 +vn 0.3266 -0.1306 0.9361 +vn -0.3266 -0.1306 0.9361 +vn -0.0137 0.0574 0.9983 +vn 0.0137 0.0574 0.9983 +vn -0.0026 -0.0656 0.9978 +vn 0.0026 -0.0656 0.9978 +vn -0.0000 -0.0000 1.0000 +vn 0.8174 -0.5744 -0.0442 +vn -0.8174 -0.5744 -0.0442 +vn 0.9494 0.2297 -0.2144 +vn -0.9494 0.2297 -0.2144 +vn 0.0825 0.9073 -0.4124 +vn -0.0825 0.9073 -0.4124 +vn -0.8836 0.3555 0.3047 +vn 0.8836 0.3555 0.3047 +vn 0.4207 -0.8797 0.2218 +vn -0.4207 -0.8797 0.2218 +vn 0.2873 -0.5747 0.7663 +vn -0.2873 -0.5747 0.7663 +vn -0.6542 0.6019 0.4580 +vn 0.6542 0.6019 0.4580 +vn 0.1052 0.7892 0.6051 +vn -0.1052 0.7892 0.6051 +vn 0.7582 0.2916 0.5832 +vn -0.7582 0.2916 0.5832 +vn 0.3889 -0.7130 0.5834 +vn -0.3889 -0.7130 0.5834 +vn 0.0463 0.2314 0.9718 +vn -0.0463 0.2314 0.9718 +vn 0.0335 -0.4018 0.9151 +vn -0.0335 -0.4018 0.9151 +vn -0.4452 -0.1610 0.8809 +vn 0.4452 -0.1610 0.8809 +vn -0.2182 -0.4364 0.8729 +vn 0.2182 -0.4364 0.8729 +vn 0.4341 -0.1290 0.8916 +vn -0.4341 -0.1290 0.8916 +vn 0.3008 0.0501 0.9524 +vn -0.3008 0.0501 0.9524 +vn 0.8123 0.3010 0.4996 +vn -0.8123 0.3010 0.4996 +vn 0.8753 0.2574 0.4093 +vn -0.8753 0.2574 0.4093 +vn 0.9385 0.1601 0.3060 +vn -0.9385 0.1601 0.3060 +vn 0.2237 -0.6539 0.7227 +vn -0.2237 -0.6539 0.7227 +vn -0.1536 -0.1997 0.9677 +vn 0.1536 -0.1997 0.9677 +vn -0.2733 -0.1025 0.9565 +vn 0.2733 -0.1025 0.9565 +vn -0.0976 0.1952 0.9759 +vn 0.0976 0.1952 0.9759 +vn -0.1582 0.9494 0.2713 +vn 0.1582 0.9494 0.2713 +vn -0.6934 0.7082 0.1328 +vn 0.6934 0.7082 0.1328 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.3051 -0.9450 0.1181 +vn -0.3051 -0.9450 0.1181 +vn 0.0298 -0.2981 0.9541 +vn -0.0298 -0.2981 0.9541 +vn 0.1353 -0.3479 0.9277 +vn -0.1353 -0.3479 0.9277 +vn -0.5085 -0.2755 0.8158 +vn 0.5085 -0.2755 0.8158 +vn -0.3843 -0.0419 0.9223 +vn 0.3843 -0.0419 0.9223 +vn -0.2083 0.0374 0.9774 +vn 0.2083 0.0374 0.9774 +vn -0.5721 -0.4767 0.6674 +vn 0.5721 -0.4767 0.6674 +vn -0.1369 -0.7531 0.6435 +vn 0.1369 -0.7531 0.6435 +vn 0.4088 -0.6071 0.6814 +vn -0.4088 -0.6071 0.6814 +vn 0.5740 -0.4130 0.7070 +vn -0.5740 -0.4130 0.7070 +vn 0.5665 -0.0968 0.8183 +vn -0.5665 -0.0968 0.8183 +vn 0.5703 0.1180 0.8129 +vn -0.5703 0.1180 0.8129 +vn 0.4823 0.5621 0.6719 +vn -0.4823 0.5621 0.6719 +vn 0.2604 0.6114 0.7473 +vn -0.2604 0.6114 0.7473 +vn 0.1640 0.3607 0.9182 +vn -0.1640 0.3607 0.9182 +vn -0.0178 0.2495 0.9682 +vn 0.0178 0.2495 0.9682 +vn 0.3273 -0.4166 0.8481 +vn -0.3273 -0.4166 0.8481 +vn 0.2811 -0.2610 0.9235 +vn -0.2811 -0.2610 0.9235 +vn -0.2542 -0.6514 0.7149 +vn 0.2542 -0.6514 0.7149 +vn -0.0260 -0.8455 0.5333 +vn 0.0260 -0.8455 0.5333 +vn -0.3518 -0.2606 0.8991 +vn 0.3518 -0.2606 0.8991 +vn -0.3523 -0.0110 0.9358 +vn 0.3523 -0.0110 0.9358 +vn -0.1317 0.4608 0.8777 +vn 0.1317 0.4608 0.8777 +vn -0.0342 0.6159 0.7870 +vn 0.0342 0.6159 0.7870 +vn 0.3603 0.5836 0.7277 +vn -0.3603 0.5836 0.7277 +vn 0.4988 0.5300 0.6858 +vn -0.4988 0.5300 0.6858 +vn 0.6667 -0.3333 0.6667 +vn -0.6667 -0.3333 0.6667 +vn 0.8165 -0.0731 0.5727 +vn -0.8165 -0.0731 0.5727 +vn 0.7840 0.1161 0.6098 +vn -0.7840 0.1161 0.6098 +vn -0.5306 0.8111 -0.2461 +vn 0.5306 0.8111 -0.2461 +vn -0.8511 0.3695 -0.3730 +vn 0.8511 0.3695 -0.3730 +vn -0.2446 0.8675 -0.4331 +vn 0.2446 0.8675 -0.4331 +vn 0.5924 0.7465 -0.3030 +vn -0.5924 0.7465 -0.3030 +vn 0.3685 0.8758 -0.3118 +vn -0.3685 0.8758 -0.3118 +vn 0.2821 0.9151 -0.2880 +vn -0.2821 0.9151 -0.2880 +vn 0.8561 0.1340 -0.4991 +vn -0.8561 0.1340 -0.4991 +vn 0.5342 -0.7233 -0.4376 +vn -0.5342 -0.7233 -0.4376 +vn 0.3849 -0.8131 -0.4368 +vn -0.3849 -0.8131 -0.4368 +vn 0.2335 -0.5806 -0.7800 +vn -0.2335 -0.5806 -0.7800 +vn 0.2449 -0.0583 -0.9678 +vn -0.2449 -0.0583 -0.9678 +vn 0.1163 -0.4535 -0.8837 +vn -0.1163 -0.4535 -0.8837 +vn 0.1152 -0.9836 -0.1388 +vn -0.1152 -0.9836 -0.1388 +vn 0.1184 -0.9669 -0.2260 +vn -0.1184 -0.9669 -0.2260 +vn 0.9597 -0.0085 -0.2808 +vn -0.9597 -0.0085 -0.2808 +vn 0.9319 0.1629 -0.3242 +vn -0.9319 0.1629 -0.3242 +vn 0.1626 0.0207 -0.9865 +vn -0.1626 0.0207 -0.9865 +vn -0.0188 -0.2177 -0.9758 +vn 0.0188 -0.2177 -0.9758 +vn 0.7538 -0.2926 -0.5884 +vn -0.7538 -0.2926 -0.5884 +vn 0.9196 0.1379 -0.3678 +vn -0.9196 0.1379 -0.3678 +vn 0.9297 0.3127 -0.1944 +vn -0.9297 0.3127 -0.1944 +vn 0.9120 0.3376 -0.2329 +vn -0.9120 0.3376 -0.2329 +vn 0.9407 0.3338 -0.0607 +vn -0.9407 0.3338 -0.0607 +vn 0.1761 -0.8805 -0.4402 +vn -0.1761 -0.8805 -0.4402 +vn 0.3708 -0.4733 -0.7991 +vn -0.3708 -0.4733 -0.7991 +vn 0.3107 -0.8284 -0.4660 +vn -0.3107 -0.8284 -0.4660 +vn 0.2793 -0.9515 -0.1287 +vn -0.2793 -0.9515 -0.1287 +vn 0.3139 -0.9321 -0.1807 +vn -0.3139 -0.9321 -0.1807 +vn 0.9762 -0.2083 -0.0609 +vn -0.9762 -0.2083 -0.0609 +vn 0.8267 -0.5066 0.2447 +vn -0.8267 -0.5066 0.2447 +vn 0.3449 -0.1158 -0.9315 +vn -0.3449 -0.1158 -0.9315 +vn 0.1203 0.9644 0.2355 +vn -0.1203 0.9644 0.2355 +vn 0.1275 0.9744 -0.1851 +vn -0.1275 0.9744 -0.1851 +vn 0.3492 0.5947 -0.7241 +vn -0.3492 0.5947 -0.7241 +vn 0.4153 0.8981 -0.1449 +vn -0.4153 0.8981 -0.1449 +vn 0.1845 0.7036 0.6863 +vn -0.1845 0.7036 0.6863 +vn 0.6056 0.7794 0.1608 +vn -0.6056 0.7794 0.1608 +vn 0.7033 0.6806 -0.2053 +vn -0.7033 0.6806 -0.2053 +vn 0.6679 0.2007 -0.7166 +vn -0.6679 0.2007 -0.7166 +vn 0.4948 0.4342 -0.7528 +vn -0.4948 0.4342 -0.7528 +vn 0.6423 0.7459 -0.1761 +vn -0.6423 0.7459 -0.1761 +vn 0.7182 0.6788 0.1530 +vn -0.7182 0.6788 0.1530 +vn 0.7388 0.3972 0.5444 +vn -0.7388 0.3972 0.5444 +vn 0.3428 0.9261 -0.1579 +vn -0.3428 0.9261 -0.1579 +vn 0.2270 0.5740 0.7867 +vn -0.2270 0.5740 0.7867 +vn -0.1722 0.1046 -0.9795 +vn 0.1722 0.1046 -0.9795 +vn 0.0425 0.9150 0.4013 +vn -0.0425 0.9150 0.4013 +vn -0.1616 0.1847 0.9694 +vn 0.1616 0.1847 0.9694 +vn 0.9791 0.1973 0.0483 +vn -0.9791 0.1973 0.0483 +vn 0.9470 0.0918 0.3079 +vn -0.9470 0.0918 0.3079 +vn 0.9794 0.1905 -0.0661 +vn -0.9794 0.1905 -0.0661 +vn 0.9938 0.0312 -0.1070 +vn -0.9938 0.0312 -0.1070 +vn 0.7116 -0.7008 0.0501 +vn -0.7116 -0.7008 0.0501 +vn 0.3722 -0.9243 0.0847 +vn -0.3722 -0.9243 0.0847 +vn 0.4465 -0.8644 0.2310 +vn -0.4465 -0.8644 0.2310 +vn 0.6066 -0.7578 0.2405 +vn -0.6066 -0.7578 0.2405 +vn 0.7325 -0.6368 0.2407 +vn -0.7325 -0.6368 0.2407 +vn 0.2637 -0.4499 0.8533 +vn -0.2637 -0.4499 0.8533 +vn 0.5568 -0.3181 -0.7673 +vn -0.5568 -0.3181 -0.7673 +vn 0.5004 -0.2807 -0.8190 +vn -0.5004 -0.2807 -0.8190 +vn 0.3190 -0.8494 -0.4205 +vn -0.3190 -0.8494 -0.4205 +vn 0.7198 -0.6356 -0.2793 +vn -0.7198 -0.6356 -0.2793 +vn 0.4972 -0.4408 -0.7473 +vn -0.4972 -0.4408 -0.7473 +vn 0.3506 0.3807 0.8557 +vn -0.3506 0.3807 0.8557 +vn 0.4566 0.1715 0.8730 +vn -0.4566 0.1715 0.8730 +vn 0.2583 0.1055 0.9603 +vn -0.2583 0.1055 0.9603 +vn 0.2455 -0.0802 0.9661 +vn -0.2455 -0.0802 0.9661 +vn 0.4643 -0.0599 0.8837 +vn -0.4643 -0.0599 0.8837 +vn 0.6225 -0.3045 0.7210 +vn -0.6225 -0.3045 0.7210 +vn 0.4500 0.6590 0.6027 +vn -0.4500 0.6590 0.6027 +vn -0.2667 0.8309 0.4884 +vn 0.2667 0.8309 0.4884 +vn -0.8284 0.2291 0.5111 +vn 0.8284 0.2291 0.5111 +vn -0.5251 -0.3566 0.7727 +vn 0.5251 -0.3566 0.7727 +vn 0.4546 -0.5665 0.6873 +vn -0.4546 -0.5665 0.6873 +vn 0.6996 -0.4497 0.5552 +vn -0.6996 -0.4497 0.5552 +vn 0.7220 -0.6827 -0.1126 +vn -0.7220 -0.6827 -0.1126 +vn -0.1919 0.2860 0.9388 +vn 0.1919 0.2860 0.9388 +vn 0.9048 -0.3734 -0.2047 +vn -0.9048 -0.3734 -0.2047 +vn 0.1034 0.1551 0.9825 +vn -0.1034 0.1551 0.9825 +vn 0.0841 0.9318 0.3530 +vn -0.0841 0.9318 0.3530 +vn 0.6446 -0.0883 0.7594 +vn -0.6446 -0.0883 0.7594 +vn 0.4309 0.4740 0.7678 +vn -0.4309 0.4740 0.7678 +vn 0.8032 -0.4847 0.3462 +vn -0.8032 -0.4847 0.3462 +vn 0.5811 -0.4128 0.7014 +vn -0.5811 -0.4128 0.7014 +vn 0.5910 -0.4305 0.6822 +vn -0.5910 -0.4305 0.6822 +vn 0.9818 -0.1804 -0.0591 +vn -0.9818 -0.1804 -0.0591 +vn 0.9105 -0.3965 -0.1175 +vn -0.9105 -0.3965 -0.1175 +vn 0.9972 -0.0181 -0.0725 +vn -0.9972 -0.0181 -0.0725 +vn 0.7313 -0.6543 0.1925 +vn -0.7313 -0.6543 0.1925 +vn 0.7867 -0.6079 0.1073 +vn -0.7867 -0.6079 0.1073 +vn 0.7022 -0.7022 0.1170 +vn -0.7022 -0.7022 0.1170 +vn 0.1840 0.9816 -0.0511 +vn -0.1840 0.9816 -0.0511 +vn 0.9352 0.3301 0.1284 +vn -0.9352 0.3301 0.1284 +vn 0.6633 -0.7463 0.0553 +vn -0.6633 -0.7463 0.0553 +vn -0.0085 0.9970 0.0767 +vn 0.0085 0.9970 0.0767 +vn 0.6237 -0.7061 0.3354 +vn -0.6237 -0.7061 0.3354 +vn 0.2733 -0.8925 0.3587 +vn -0.2733 -0.8925 0.3587 +vn -0.8328 -0.5080 -0.2200 +vn 0.8328 -0.5080 -0.2200 +vn -0.8339 0.2377 -0.4981 +vn 0.8339 0.2377 -0.4981 +vn -0.5655 0.7847 -0.2539 +vn 0.5655 0.7847 -0.2539 +vn -0.0560 0.9962 0.0672 +vn 0.0560 0.9962 0.0672 +vn 0.1445 0.0222 0.9893 +vn -0.1445 0.0222 0.9893 +vn 0.3275 0.0645 0.9427 +vn -0.3275 0.0645 0.9427 +vn 0.3127 0.0232 0.9496 +vn -0.3127 0.0232 0.9496 +vn 0.1710 0.0274 0.9849 +vn -0.1710 0.0274 0.9849 +vn 0.3487 0.2849 0.8929 +vn -0.3487 0.2849 0.8929 +vn 0.4006 -0.0343 0.9156 +vn -0.4006 -0.0343 0.9156 +vn 0.2572 -0.0603 0.9645 +vn -0.2572 -0.0603 0.9645 +vn 0.0637 -0.0106 0.9979 +vn -0.0637 -0.0106 0.9979 +vn -0.3637 0.7039 0.6101 +vn 0.3637 0.7039 0.6101 +vn 0.6299 0.0355 0.7759 +vn -0.6299 0.0355 0.7759 +vn 0.4472 -0.2002 0.8717 +vn -0.4472 -0.2002 0.8717 +vn 0.5072 -0.2141 0.8348 +vn -0.5072 -0.2141 0.8348 +vn 0.5258 0.2619 0.8093 +vn -0.5258 0.2619 0.8093 +vn 0.2980 0.5802 0.7580 +vn -0.2980 0.5802 0.7580 +vn 0.0930 -0.9924 -0.0805 +vn -0.0930 -0.9924 -0.0805 +vn 0.5006 -0.8657 0.0080 +vn -0.5006 -0.8657 0.0080 +vn 0.9285 -0.2497 0.2748 +vn -0.9285 -0.2497 0.2748 +vn 0.8393 0.5424 -0.0378 +vn -0.8393 0.5424 -0.0378 +vn -0.2355 0.9367 -0.2589 +vn 0.2355 0.9367 -0.2589 +vn -0.4499 0.8838 -0.1285 +vn 0.4499 0.8838 -0.1285 +vn -0.5384 -0.0098 -0.8427 +vn 0.5384 -0.0098 -0.8427 +vn -0.1910 -0.0241 -0.9813 +vn 0.1910 -0.0241 -0.9813 +vn 0.4046 0.0266 -0.9141 +vn -0.4046 0.0266 -0.9141 +vn -0.7819 0.6231 0.0197 +vn 0.7819 0.6231 0.0197 +vn 0.5428 -0.2063 -0.8142 +vn -0.5428 -0.2063 -0.8142 +vn -0.2474 -0.9231 -0.2945 +vn 0.2474 -0.9231 -0.2945 +vn 0.1024 -0.9435 0.3151 +vn 0.7002 -0.6617 0.2680 +vn -0.2680 -0.9435 0.1947 +vn -0.2680 -0.9435 -0.1947 +vn 0.1024 -0.9435 -0.3151 +vn 0.9050 -0.3304 0.2680 +vn 0.0247 -0.3304 0.9435 +vn -0.8897 -0.3304 0.3151 +vn -0.5746 -0.3304 -0.7488 +vn 0.5346 -0.3304 -0.7779 +vn 0.8026 -0.1256 0.5831 +vn -0.3066 -0.1256 0.9435 +vn -0.9921 -0.1256 -0.0000 +vn -0.3066 -0.1256 -0.9435 +vn 0.8026 -0.1256 -0.5831 +vn 0.4089 0.6617 0.6284 +vn -0.4713 0.6617 0.5831 +vn -0.7002 0.6617 -0.2680 +vn 0.0385 0.6617 -0.7488 +vn 0.7240 0.6617 -0.1947 +vn 0.2680 0.9435 -0.1947 +vn 0.4911 0.7947 -0.3568 +vn 0.4089 0.6617 -0.6284 +vn -0.1024 0.9435 -0.3151 +vn -0.1876 0.7947 -0.5773 +vn -0.4713 0.6617 -0.5831 +vn -0.3313 0.9435 -0.0000 +vn -0.6071 0.7947 -0.0000 +vn -0.7002 0.6617 0.2680 +vn -0.1024 0.9435 0.3151 +vn -0.1876 0.7947 0.5773 +vn 0.0385 0.6617 0.7488 +vn 0.2680 0.9435 0.1947 +vn 0.4911 0.7947 0.3568 +vn 0.7240 0.6617 0.1947 +vn 0.8897 0.3304 -0.3151 +vn 0.7947 0.1876 -0.5773 +vn 0.5746 0.3304 -0.7488 +vn -0.0247 0.3304 -0.9435 +vn -0.3035 0.1876 -0.9342 +vn -0.5346 0.3304 -0.7779 +vn -0.9050 0.3304 -0.2680 +vn -0.9822 0.1876 -0.0000 +vn -0.9050 0.3304 0.2680 +vn -0.5346 0.3304 0.7779 +vn -0.3035 0.1876 0.9342 +vn -0.0247 0.3304 0.9435 +vn 0.5746 0.3304 0.7488 +vn 0.7947 0.1876 0.5773 +vn 0.8897 0.3304 0.3151 +vn 0.3066 0.1256 -0.9435 +vn 0.3035 -0.1876 -0.9342 +vn 0.0247 -0.3304 -0.9435 +vn -0.8026 0.1256 -0.5831 +vn -0.7947 -0.1876 -0.5773 +vn -0.8897 -0.3304 -0.3151 +vn -0.8026 0.1256 0.5831 +vn -0.7947 -0.1876 0.5773 +vn -0.5746 -0.3304 0.7488 +vn 0.3066 0.1256 0.9435 +vn 0.3035 -0.1876 0.9342 +vn 0.5346 -0.3304 0.7779 +vn 0.9921 0.1256 -0.0000 +vn 0.9822 -0.1876 -0.0000 +vn 0.9050 -0.3304 -0.2680 +vn 0.4713 -0.6617 -0.5831 +vn 0.1876 -0.7947 -0.5773 +vn -0.0385 -0.6617 -0.7488 +vn -0.4089 -0.6617 -0.6284 +vn -0.4911 -0.7947 -0.3568 +vn -0.7240 -0.6617 -0.1947 +vn -0.7240 -0.6617 0.1947 +vn -0.4911 -0.7947 0.3568 +vn -0.4089 -0.6617 0.6284 +vn 0.7002 -0.6617 -0.2680 +vn 0.6071 -0.7947 -0.0000 +vn 0.3313 -0.9435 -0.0000 +vn -0.0385 -0.6617 0.7488 +vn 0.1876 -0.7947 0.5773 +vn 0.4713 -0.6617 0.5831 +vt 0.870622 0.589649 +vt 0.868067 0.821510 +vt 0.860081 0.560115 +vt 0.856226 0.850547 +vt 0.853018 0.521562 +vt 0.847458 0.888748 +vt 0.798481 0.569535 +vt 0.795104 0.838402 +vt 0.828900 0.590771 +vt 0.826436 0.818537 +vt 0.854402 0.604754 +vt 0.852534 0.805700 +vt 0.854107 0.625459 +vt 0.853157 0.785002 +vt 0.828171 0.633354 +vt 0.827598 0.775964 +vt 0.791018 0.645443 +vt 0.791018 0.762238 +vt 0.842358 0.702491 +vt 0.844839 0.707525 +vt 0.855181 0.668527 +vt 0.856142 0.742025 +vt 0.867508 0.642291 +vt 0.867293 0.768782 +vt 0.890474 0.641909 +vt 0.890219 0.770183 +vt 0.900375 0.666964 +vt 0.901223 0.745592 +vt 0.918898 0.699697 +vt 0.921180 0.713713 +vt 0.968392 0.645333 +vt 0.968213 0.770220 +vt 0.931889 0.636832 +vt 0.931368 0.777093 +vt 0.905882 0.627902 +vt 0.904990 0.784860 +vt 0.906232 0.605742 +vt 0.904357 0.807013 +vt 0.933717 0.593037 +vt 0.931250 0.820926 +vt 0.968392 0.573812 +vt 0.965038 0.841671 +vt 0.920166 0.524546 +vt 0.914672 0.888748 +vt 0.904571 0.559404 +vt 0.900640 0.853232 +vt 0.890955 0.590063 +vt 0.888398 0.821999 +vt 0.889591 0.593275 +vt 0.887178 0.818729 +vt 0.902359 0.607909 +vt 0.900583 0.804677 +vt 0.899781 0.626257 +vt 0.898822 0.786233 +vt 0.887842 0.636527 +vt 0.887351 0.775442 +vt 0.870908 0.635245 +vt 0.870376 0.775972 +vt 0.859881 0.623942 +vt 0.858859 0.786774 +vt 0.879400 0.616512 +vt 0.878029 0.795063 +vt 0.859664 0.608186 +vt 0.857942 0.802505 +vt 0.871664 0.593961 +vt 0.869299 0.817249 +vt 0.521923 0.386009 +vt 0.521086 0.343868 +vt 0.518925 0.093952 +vt 0.518998 0.159028 +vt 0.519132 0.185382 +vt 0.518925 0.083865 +vt 0.523031 0.433628 +vt 0.819845 0.468071 +vt 0.215894 0.503605 +vt 0.845499 0.449967 +vt 0.185281 0.484099 +vt 0.999856 0.254640 +vt 0.000144 0.259113 +vt 0.994525 0.167705 +vt 0.011829 0.155367 +vt 0.945900 0.079569 +vt 0.078961 0.060719 +vt 0.805584 0.010786 +vt 0.232648 0.003484 +vt 0.605512 0.165134 +vt 0.432024 0.165644 +vt 0.583135 0.108495 +vt 0.454527 0.108481 +vt 0.563812 0.076586 +vt 0.474014 0.076511 +vt 0.555073 0.061900 +vt 0.482805 0.061829 +vt 0.551930 0.058338 +vt 0.485955 0.058273 +vt 0.540260 0.053805 +vt 0.497626 0.053770 +vt 0.518916 0.050294 +vt 0.647395 0.200502 +vt 0.389677 0.201890 +vt 0.676379 0.233241 +vt 0.360308 0.235899 +vt 0.715342 0.265392 +vt 0.320452 0.270303 +vt 0.707254 0.310054 +vt 0.330721 0.316853 +vt 0.697446 0.332673 +vt 0.341964 0.339667 +vt 0.662817 0.372521 +vt 0.379297 0.378686 +vt 0.626842 0.395792 +vt 0.416915 0.400552 +vt 0.604826 0.397804 +vt 0.439252 0.401540 +vt 0.553095 0.390512 +vt 0.490934 0.391862 +vt 0.577279 0.340156 +vt 0.464579 0.342230 +vt 0.558527 0.316594 +vt 0.482619 0.317843 +vt 0.572941 0.258564 +vt 0.466409 0.259709 +vt 0.613992 0.242662 +vt 0.424464 0.244473 +vt 0.639236 0.253047 +vt 0.398938 0.255633 +vt 0.664101 0.277872 +vt 0.374100 0.281778 +vt 0.668440 0.297958 +vt 0.370304 0.302644 +vt 0.662406 0.312804 +vt 0.377061 0.317685 +vt 0.634472 0.332311 +vt 0.406362 0.336480 +vt 0.599845 0.344815 +vt 0.441977 0.347815 +vt 0.518927 0.085180 +vt 0.531019 0.087431 +vt 0.506827 0.087416 +vt 0.531231 0.073829 +vt 0.506626 0.073811 +vt 0.525483 0.068967 +vt 0.512375 0.068956 +vt 0.518928 0.067899 +vt 0.517577 0.190607 +vt 0.519841 0.200843 +vt 0.544281 0.193366 +vt 0.493996 0.193428 +vt 0.548362 0.173560 +vt 0.489683 0.173693 +vt 0.538112 0.158382 +vt 0.499851 0.158434 +vt 0.621513 0.227818 +vt 0.416514 0.229490 +vt 0.664761 0.253225 +vt 0.372747 0.256357 +vt 0.683908 0.279995 +vt 0.353696 0.284606 +vt 0.687515 0.311539 +vt 0.351187 0.317440 +vt 0.676824 0.323937 +vt 0.362723 0.329722 +vt 0.639050 0.357330 +vt 0.402772 0.362131 +vt 0.618316 0.375151 +vt 0.424583 0.379267 +vt 0.600808 0.377857 +vt 0.442396 0.381222 +vt 0.559674 0.357011 +vt 0.482938 0.358497 +vt 0.553118 0.209599 +vt 0.485339 0.210053 +vt 0.555621 0.121749 +vt 0.482177 0.121781 +vt 0.548333 0.084893 +vt 0.489507 0.084858 +vt 0.546290 0.072669 +vt 0.491565 0.072625 +vt 0.542788 0.064089 +vt 0.495083 0.064047 +vt 0.536419 0.062072 +vt 0.501452 0.062043 +vt 0.518925 0.059681 +vt 0.519760 0.248864 +vt 0.520277 0.294764 +vt 0.615546 0.342005 +vt 0.425972 0.345582 +vt 0.563905 0.272007 +vt 0.475886 0.273078 +vt 0.556923 0.291214 +vt 0.483433 0.292249 +vt 0.532669 0.090920 +vt 0.505177 0.090908 +vt 0.532042 0.127713 +vt 0.505828 0.127728 +vt 0.518941 0.128358 +vt 0.518981 0.151749 +vt 0.535214 0.166808 +vt 0.502799 0.166857 +vt 0.537959 0.175966 +vt 0.500100 0.176033 +vt 0.537248 0.187577 +vt 0.500890 0.187571 +vt 0.528757 0.191785 +vt 0.509219 0.191626 +vt 0.519099 0.179457 +vt 0.528222 0.186316 +vt 0.509787 0.186260 +vt 0.533528 0.184215 +vt 0.504547 0.184206 +vt 0.533449 0.176739 +vt 0.504604 0.176791 +vt 0.531131 0.171631 +vt 0.506910 0.171667 +vt 0.519016 0.165599 +vt 0.596138 0.133426 +vt 0.441395 0.133592 +vt 0.561572 0.167779 +vt 0.476363 0.167996 +vt 0.559475 0.149319 +vt 0.478371 0.149447 +vt 0.601169 0.147885 +vt 0.436337 0.148194 +vt 0.518929 0.069468 +vt 0.523751 0.070508 +vt 0.514106 0.070501 +vt 0.529036 0.075429 +vt 0.508820 0.075415 +vt 0.528933 0.084957 +vt 0.508915 0.084945 +vt 0.518926 0.079331 +vt 0.524601 0.079886 +vt 0.513252 0.079879 +vt 0.524236 0.076691 +vt 0.513619 0.076684 +vt 0.521560 0.074970 +vt 0.516297 0.074966 +vt 0.518928 0.074259 +vt 0.568351 0.292904 +vt 0.471978 0.294282 +vt 0.571787 0.277295 +vt 0.468070 0.278617 +vt 0.614408 0.331972 +vt 0.426727 0.335361 +vt 0.601033 0.333624 +vt 0.440344 0.336537 +vt 0.629040 0.323864 +vt 0.411556 0.327673 +vt 0.652752 0.310186 +vt 0.386858 0.314615 +vt 0.656064 0.297636 +vt 0.383015 0.301864 +vt 0.653658 0.279971 +vt 0.384904 0.283634 +vt 0.632494 0.262853 +vt 0.406068 0.265508 +vt 0.611720 0.255725 +vt 0.427062 0.257728 +vt 0.580734 0.266620 +vt 0.458737 0.268049 +vt 0.573085 0.311386 +vt 0.467790 0.313081 +vt 0.584855 0.327708 +vt 0.456477 0.329961 +vt 0.590644 0.321516 +vt 0.450408 0.323919 +vt 0.579548 0.309340 +vt 0.461204 0.311233 +vt 0.585166 0.270991 +vt 0.454369 0.272583 +vt 0.612641 0.261560 +vt 0.426254 0.263693 +vt 0.629829 0.267263 +vt 0.408893 0.269959 +vt 0.647785 0.283486 +vt 0.391040 0.287071 +vt 0.649541 0.296225 +vt 0.389662 0.300183 +vt 0.646248 0.306421 +vt 0.393381 0.310510 +vt 0.626851 0.320513 +vt 0.413648 0.324175 +vt 0.601799 0.328453 +vt 0.439372 0.331331 +vt 0.613335 0.327083 +vt 0.427623 0.330358 +vt 0.578124 0.281900 +vt 0.461798 0.283441 +vt 0.577524 0.293776 +vt 0.462754 0.295432 +vt 0.553209 0.433063 +vt 0.815858 0.445381 +vt 0.492809 0.434538 +vt 0.219260 0.477186 +vt 0.609819 0.431516 +vt 0.770572 0.444261 +vt 0.435860 0.435740 +vt 0.271364 0.473316 +vt 0.648174 0.419316 +vt 0.755700 0.418603 +vt 0.396518 0.425416 +vt 0.287033 0.442912 +vt 0.692106 0.388274 +vt 0.770185 0.379538 +vt 0.350292 0.396229 +vt 0.268122 0.398737 +vt 0.726332 0.341754 +vt 0.749542 0.334683 +vt 0.312756 0.350588 +vt 0.288183 0.346496 +vt 0.735879 0.312112 +vt 0.301067 0.320593 +vt 0.729900 0.256393 +vt 0.304876 0.261087 +vt 0.698172 0.216906 +vt 0.337414 0.219179 +vt 0.663103 0.190671 +vt 0.373474 0.191872 +vt 0.911671 0.402429 +vt 0.106400 0.432652 +vt 0.962901 0.344752 +vt 0.043968 0.367038 +vt 0.891780 0.036916 +vt 0.142277 0.021467 +vt 0.672384 0.022201 +vt 0.365979 0.020991 +vt 0.518922 0.024886 +vt 0.567460 0.000144 +vt 0.470636 0.000144 +vt 0.626908 0.015608 +vt 0.411318 0.015131 +vt 0.649444 0.022378 +vt 0.388827 0.021586 +vt 0.789046 0.233323 +vt 0.241255 0.236977 +vt 0.809631 0.233887 +vt 0.219168 0.237388 +vt 0.842355 0.195160 +vt 0.620420 0.647706 +vt 0.176788 0.196179 +vt 0.145041 0.644626 +vt 0.909112 0.183261 +vt 0.107928 0.179083 +vt 0.760215 0.193244 +vt 0.271553 0.193871 +vt 0.785486 0.152330 +vt 0.391039 0.693922 +vt 0.245969 0.151002 +vt 0.369913 0.692227 +vt 0.837382 0.156361 +vt 0.498072 0.634346 +vt 0.196622 0.155241 +vt 0.264218 0.632171 +vt 0.886245 0.121777 +vt 0.141314 0.112482 +vt 0.626663 0.111357 +vt 0.410618 0.111244 +vt 0.660451 0.076084 +vt 0.376796 0.075296 +vt 0.576951 0.057998 +vt 0.460920 0.057845 +vt 0.611687 0.078268 +vt 0.425932 0.077985 +vt 0.558059 0.053871 +vt 0.479842 0.053785 +vt 0.577206 0.032801 +vt 0.460782 0.032656 +vt 0.621440 0.048089 +vt 0.416419 0.047631 +vt 0.547413 0.041724 +vt 0.490511 0.041669 +vt 0.629482 0.130456 +vt 0.407648 0.130594 +vt 0.623495 0.146796 +vt 0.413741 0.147158 +vt 0.619303 0.159841 +vt 0.418035 0.160361 +vt 0.687018 0.077204 +vt 0.349875 0.075955 +vt 0.788458 0.080826 +vt 0.246353 0.076510 +vt 0.849114 0.099732 +vt 0.183115 0.092127 +vt 0.915360 0.259804 +vt 0.098965 0.266968 +vt 0.894128 0.301884 +vt 0.123776 0.315519 +vt 0.862868 0.338556 +vt 0.160557 0.356821 +vt 0.794286 0.364062 +vt 0.239776 0.382592 +vt 0.766337 0.300809 +vt 0.267408 0.310142 +vt 0.789162 0.313727 +vt 0.242992 0.325552 +vt 0.846174 0.293397 +vt 0.178537 0.304983 +vt 0.815314 0.276388 +vt 0.213065 0.285164 +vt 0.845007 0.256352 +vt 0.179662 0.263312 +vt 0.873517 0.265922 +vt 0.147089 0.274284 +vt 0.886999 0.233769 +vt 0.131514 0.237587 +vt 0.859075 0.228168 +vt 0.162803 0.231720 +vt 0.875030 0.184705 +vt 0.145224 0.182749 +vt 0.858171 0.137775 +vt 0.171653 0.132294 +vt 0.391747 0.944128 +vt 0.829287 0.219562 +vt 0.363377 0.943339 +vt 0.199067 0.222464 +vt 0.051216 0.604690 +vt 0.715482 0.139727 +vt 0.319538 0.139409 +vt 0.786480 0.117591 +vt 0.246666 0.114850 +vt 0.432388 0.976974 +vt 0.740843 0.654459 +vt 0.834578 0.206879 +vt 0.321637 0.975256 +vt 0.033664 0.646434 +vt 0.434803 0.740913 +vt 0.325318 0.738255 +vt 0.508270 0.779724 +vt 0.250811 0.775280 +vt 0.563786 0.821242 +vt 0.194086 0.815272 +vt 0.619962 0.873646 +vt 0.136063 0.866124 +vt 0.604825 0.961977 +vt 0.707492 0.841915 +vt 0.148729 0.955380 +vt 0.049526 0.830855 +vt 0.506166 0.986882 +vt 0.745511 0.734131 +vt 0.247207 0.983190 +vt 0.019409 0.721780 +vt 0.491058 0.963745 +vt 0.263032 0.960352 +vt 0.572792 0.942515 +vt 0.181486 0.936724 +vt 0.586396 0.876008 +vt 0.169745 0.869505 +vt 0.549027 0.828443 +vt 0.208656 0.822910 +vt 0.500314 0.793760 +vt 0.258399 0.789528 +vt 0.438641 0.762714 +vt 0.320962 0.759990 +vt 0.438797 0.952260 +vt 0.315867 0.950240 +vt 0.457832 0.922071 +vt 0.297562 0.919389 +vt 0.452955 0.782054 +vt 0.306136 0.779007 +vt 0.505666 0.812975 +vt 0.252524 0.808623 +vt 0.542850 0.837784 +vt 0.214575 0.832445 +vt 0.568148 0.869398 +vt 0.188269 0.863406 +vt 0.555495 0.908383 +vt 0.199850 0.902920 +vt 0.501231 0.926387 +vt 0.253846 0.922533 +vt 0.401605 0.923491 +vt 0.825107 0.209762 +vt 0.354026 0.922328 +vt 0.199767 0.214827 +vt 0.418086 0.866977 +vt 0.338952 0.865104 +vt 0.410995 0.829693 +vt 0.347028 0.827847 +vt 0.427812 0.824859 +vt 0.330270 0.822567 +vt 0.433669 0.811692 +vt 0.324726 0.809208 +vt 0.435018 0.800311 +vt 0.323658 0.797762 +vt 0.783193 0.187449 +vt 0.246955 0.187075 +vt 0.394766 0.768156 +vt 0.796021 0.176969 +vt 0.364838 0.766476 +vt 0.233625 0.175620 +vt 0.384658 0.792330 +vt 0.802192 0.184609 +vt 0.374400 0.791000 +vt 0.226485 0.183086 +vt 0.384657 0.877454 +vt 0.816266 0.203086 +vt 0.372270 0.876503 +vt 0.209828 0.206161 +vt 0.431333 0.899566 +vt 0.324790 0.897491 +vt 0.448505 0.886652 +vt 0.307886 0.884062 +vt 0.440995 0.806414 +vt 0.317510 0.803728 +vt 0.445392 0.814028 +vt 0.312907 0.811253 +vt 0.437950 0.831808 +vt 0.319919 0.829281 +vt 0.423718 0.836222 +vt 0.334089 0.834076 +vt 0.435868 0.861600 +vt 0.321237 0.859239 +vt 0.512485 0.910842 +vt 0.242975 0.906605 +vt 0.550942 0.893845 +vt 0.204839 0.888448 +vt 0.552139 0.869713 +vt 0.204331 0.864187 +vt 0.539407 0.846570 +vt 0.217774 0.841350 +vt 0.508439 0.825166 +vt 0.249419 0.820763 +vt 0.455277 0.795762 +vt 0.303460 0.792688 +vt 0.473386 0.906731 +vt 0.282357 0.903556 +vt 0.454776 0.843696 +vt 0.302729 0.840773 +vt 0.470841 0.830439 +vt 0.286960 0.827051 +vt 0.488870 0.852495 +vt 0.268291 0.848692 +vt 0.475403 0.865935 +vt 0.281439 0.862542 +vt 0.494476 0.884501 +vt 0.261790 0.880657 +vt 0.503673 0.869593 +vt 0.252972 0.865441 +vt 0.518562 0.873633 +vt 0.237920 0.869076 +vt 0.516802 0.889370 +vt 0.239243 0.884922 +vt 0.677256 0.752467 +vt 0.083564 0.744069 +vt 0.660647 0.823198 +vt 0.097038 0.814083 +vt 0.616701 0.841996 +vt 0.140379 0.834408 +vt 0.581052 0.808964 +vt 0.177176 0.802457 +vt 0.543385 0.765569 +vt 0.216123 0.760151 +vt 0.484068 0.710807 +vt 0.276936 0.707098 +vt 0.834705 0.206959 +vt 0.671403 0.674687 +vt 0.092820 0.671893 +vt 0.369145 0.462438 +vt 0.595273 0.462438 +vt 0.538741 0.462438 +vt 0.482209 0.462438 +vt 0.425677 0.462438 +vt 0.397411 0.511397 +vt 0.623539 0.511397 +vt 0.340879 0.511397 +vt 0.567007 0.511397 +vt 0.510475 0.511397 +vt 0.453943 0.511397 +vt 0.369145 0.560355 +vt 0.312613 0.560355 +vt 0.595273 0.560355 +vt 0.538741 0.560355 +vt 0.482209 0.560355 +vt 0.425677 0.560355 +vt 0.453943 0.609314 +vt 0.510475 0.609314 +vt 0.567007 0.609314 +vt 0.340879 0.609314 +vt 0.397411 0.609314 +vt 0.609406 0.486917 +vt 0.355012 0.486917 +vt 0.411544 0.486917 +vt 0.383278 0.486917 +vt 0.369145 0.511397 +vt 0.425677 0.511397 +vt 0.468076 0.486917 +vt 0.439810 0.486917 +vt 0.552874 0.486917 +vt 0.581140 0.486917 +vt 0.595273 0.511397 +vt 0.496342 0.486917 +vt 0.524608 0.486917 +vt 0.538741 0.511397 +vt 0.482209 0.511397 +vt 0.411544 0.535876 +vt 0.439810 0.535876 +vt 0.355012 0.535876 +vt 0.383278 0.535876 +vt 0.581140 0.535876 +vt 0.326746 0.535876 +vt 0.609406 0.535876 +vt 0.524608 0.535876 +vt 0.552874 0.535876 +vt 0.468076 0.535876 +vt 0.496342 0.535876 +vt 0.397411 0.560355 +vt 0.340879 0.560355 +vt 0.567007 0.560355 +vt 0.510475 0.560355 +vt 0.453943 0.560355 +vt 0.355012 0.584834 +vt 0.383278 0.584834 +vt 0.439810 0.584834 +vt 0.411544 0.584834 +vt 0.581140 0.584834 +vt 0.326746 0.584834 +vt 0.524608 0.584834 +vt 0.552874 0.584834 +vt 0.468076 0.584834 +vt 0.496342 0.584834 +s 0 +f 47/47/1 1/1/1 3/3/1 45/45/1 +f 4/4/2 2/2/2 48/48/2 46/46/2 +f 45/45/3 3/3/3 5/5/3 43/43/3 +f 6/6/4 4/4/4 46/46/4 44/44/4 +f 3/3/5 9/9/5 7/7/5 5/5/5 +f 8/8/6 10/10/6 4/4/6 6/6/6 +f 1/1/7 11/11/7 9/9/7 3/3/7 +f 10/10/8 12/12/8 2/2/8 4/4/8 +f 11/11/9 13/13/9 15/15/9 9/9/9 +f 16/16/10 14/14/10 12/12/10 10/10/10 +f 9/9/11 15/15/11 17/17/11 7/7/11 +f 18/18/12 16/16/12 10/10/12 8/8/12 +f 15/15/13 21/21/13 19/19/13 17/17/13 +f 20/20/14 22/22/14 16/16/14 18/18/14 +f 13/13/15 23/23/15 21/21/15 15/15/15 +f 22/22/16 24/24/16 14/14/16 16/16/16 +f 23/23/17 25/25/17 27/27/17 21/21/17 +f 28/28/18 26/26/18 24/24/18 22/22/18 +f 21/21/19 27/27/19 29/29/19 19/19/19 +f 30/30/20 28/28/20 22/22/20 20/20/20 +f 27/27/21 33/33/21 31/31/21 29/29/21 +f 32/32/22 34/34/22 28/28/22 30/30/22 +f 25/25/23 35/35/23 33/33/23 27/27/23 +f 34/34/24 36/36/24 26/26/24 28/28/24 +f 35/35/25 37/37/25 39/39/25 33/33/25 +f 40/40/26 38/38/26 36/36/26 34/34/26 +f 33/33/27 39/39/27 41/41/27 31/31/27 +f 42/42/28 40/40/28 34/34/28 32/32/28 +f 39/39/29 45/45/29 43/43/29 41/41/29 +f 44/44/30 46/46/30 40/40/30 42/42/30 +f 37/37/31 47/47/31 45/45/31 39/39/31 +f 46/46/32 48/48/32 38/38/32 40/40/32 +f 47/47/33 37/37/33 51/51/33 49/49/33 +f 52/52/34 38/38/34 48/48/34 50/50/34 +f 37/37/35 35/35/35 53/53/35 51/51/35 +f 54/54/36 36/36/36 38/38/36 52/52/36 +f 35/35/37 25/25/37 55/55/37 53/53/37 +f 56/56/38 26/26/38 36/36/38 54/54/38 +f 25/25/39 23/23/39 57/57/39 55/55/39 +f 58/58/40 24/24/40 26/26/40 56/56/40 +f 23/23/41 13/13/41 59/59/41 57/57/41 +f 60/60/42 14/14/42 24/24/42 58/58/42 +f 13/13/43 11/11/43 63/63/43 59/59/43 +f 64/64/44 12/12/44 14/14/44 60/60/44 +f 11/11/45 1/1/45 65/65/45 63/63/45 +f 66/66/46 2/2/46 12/12/46 64/64/46 +f 1/1/47 47/47/47 49/49/47 65/65/47 +f 50/50/48 48/48/48 2/2/48 66/66/48 +f 61/61/49 65/65/49 49/49/49 +f 50/50/50 66/66/50 62/62/50 +f 63/63/51 65/65/51 61/61/51 +f 62/62/52 66/66/52 64/64/52 +f 61/61/53 59/59/53 63/63/53 +f 64/64/54 60/60/54 62/62/54 +f 61/61/55 57/57/55 59/59/55 +f 60/60/56 58/58/56 62/62/56 +f 61/61/57 55/55/57 57/57/57 +f 58/58/58 56/56/58 62/62/58 +f 61/61/59 53/53/59 55/55/59 +f 56/56/60 54/54/60 62/62/60 +f 61/61/61 51/51/61 53/53/61 +f 54/54/62 52/52/62 62/62/62 +f 61/61/63 49/49/63 51/51/63 +f 52/52/64 50/50/64 62/62/64 +f 89/96/65 174/181/65 176/183/65 91/98/65 +f 176/183/66 175/182/66 90/97/66 91/98/66 +f 87/94/67 172/179/67 174/181/67 89/96/67 +f 175/182/68 173/180/68 88/95/68 90/97/68 +f 85/92/69 170/177/69 172/179/69 87/94/69 +f 173/180/70 171/178/70 86/93/70 88/95/70 +f 83/90/71 168/175/71 170/177/71 85/92/71 +f 171/178/72 169/176/72 84/91/72 86/93/72 +f 81/88/73 166/173/73 168/175/73 83/90/73 +f 169/176/74 167/174/74 82/89/74 84/91/74 +f 79/86/75 92/99/75 146/153/75 164/171/75 +f 147/154/76 93/100/76 80/87/76 165/172/76 +f 92/99/77 94/101/77 148/155/77 146/153/77 +f 149/156/78 95/102/78 93/100/78 147/154/78 +f 94/101/79 96/103/79 150/157/79 148/155/79 +f 151/158/80 97/104/80 95/102/80 149/156/80 +f 96/103/81 98/105/81 152/159/81 150/157/81 +f 153/160/82 99/106/82 97/104/82 151/158/82 +f 98/105/83 100/107/83 154/161/83 152/159/83 +f 155/162/84 101/108/84 99/106/84 153/160/84 +f 100/107/85 102/109/85 156/163/85 154/161/85 +f 157/164/86 103/110/86 101/108/86 155/162/86 +f 102/109/87 104/111/87 158/165/87 156/163/87 +f 159/166/88 105/112/88 103/110/88 157/164/88 +f 104/111/89 106/113/89 160/167/89 158/165/89 +f 161/168/90 107/114/90 105/112/90 159/166/90 +f 106/113/91 108/115/91 162/169/91 160/167/91 +f 163/170/92 109/116/92 107/114/92 161/168/92 +f 108/115/93 67/67/93 68/68/93 162/169/93 +f 68/68/94 67/67/94 109/116/94 163/170/94 +f 110/117/95 128/135/95 160/167/95 162/169/95 +f 161/168/96 129/136/96 111/118/96 163/170/96 +f 128/135/97 179/186/97 158/165/97 160/167/97 +f 159/166/98 180/187/98 129/136/98 161/168/98 +f 126/133/99 156/163/99 158/165/99 179/186/99 +f 159/166/100 157/164/100 127/134/100 180/187/100 +f 124/131/101 154/161/101 156/163/101 126/133/101 +f 157/164/102 155/162/102 125/132/102 127/134/102 +f 122/129/103 152/159/103 154/161/103 124/131/103 +f 155/162/104 153/160/104 123/130/104 125/132/104 +f 120/127/105 150/157/105 152/159/105 122/129/105 +f 153/160/106 151/158/106 121/128/106 123/130/106 +f 118/125/107 148/155/107 150/157/107 120/127/107 +f 151/158/108 149/156/108 119/126/108 121/128/108 +f 116/123/109 146/153/109 148/155/109 118/125/109 +f 149/156/110 147/154/110 117/124/110 119/126/110 +f 114/121/111 164/171/111 146/153/111 116/123/111 +f 147/154/112 165/172/112 115/122/112 117/124/112 +f 114/121/113 181/188/113 177/184/113 164/171/113 +f 177/184/114 182/189/114 115/122/114 165/172/114 +f 110/117/115 162/169/115 68/68/115 112/119/115 +f 68/68/116 163/170/116 111/118/116 113/120/116 +f 112/119/117 68/68/117 178/185/117 183/190/117 +f 178/185/118 68/68/118 113/120/118 184/191/118 +f 177/184/119 181/188/119 183/190/119 178/185/119 +f 184/191/120 182/189/120 177/184/120 178/185/120 +f 135/142/121 137/144/121 176/183/121 174/181/121 +f 176/183/122 137/144/122 136/143/122 175/182/122 +f 133/140/123 135/142/123 174/181/123 172/179/123 +f 175/182/124 136/143/124 134/141/124 173/180/124 +f 131/138/125 133/140/125 172/179/125 170/177/125 +f 173/180/126 134/141/126 132/139/126 171/178/126 +f 166/173/127 187/194/127 185/192/127 168/175/127 +f 186/193/128 188/195/128 167/174/128 169/176/128 +f 131/138/129 170/177/129 168/175/129 185/192/129 +f 169/176/130 171/178/130 132/139/130 186/193/130 +f 144/151/131 190/197/131 189/196/131 187/194/131 +f 189/196/132 190/197/132 145/152/132 188/195/132 +f 185/192/133 187/194/133 189/196/133 69/69/133 +f 189/196/134 188/195/134 186/193/134 69/69/134 +f 130/137/135 131/138/135 185/192/135 69/69/135 +f 186/193/135 132/139/135 130/137/135 69/69/135 +f 142/149/136 193/200/136 191/198/136 144/151/136 +f 192/199/137 194/201/137 143/150/137 145/152/137 +f 140/147/138 195/202/138 193/200/138 142/149/138 +f 194/201/139 196/203/139 141/148/139 143/150/139 +f 139/146/140 197/204/140 195/202/140 140/147/140 +f 196/203/141 198/205/141 139/146/141 141/148/141 +f 138/145/142 71/71/142 197/204/142 139/146/142 +f 198/205/143 71/71/143 138/145/143 139/146/143 +f 190/197/144 144/151/144 191/198/144 70/70/144 +f 192/199/145 145/152/145 190/197/145 70/70/145 +f 70/70/146 191/198/146 206/213/146 208/215/146 +f 207/214/147 192/199/147 70/70/147 208/215/147 +f 71/71/148 199/206/148 200/207/148 197/204/148 +f 201/208/149 199/206/149 71/71/149 198/205/149 +f 197/204/150 200/207/150 202/209/150 195/202/150 +f 203/210/151 201/208/151 198/205/151 196/203/151 +f 195/202/152 202/209/152 204/211/152 193/200/152 +f 205/212/153 203/210/153 196/203/153 194/201/153 +f 193/200/154 204/211/154 206/213/154 191/198/154 +f 207/214/155 205/212/155 194/201/155 192/199/155 +f 199/206/156 204/211/156 202/209/156 200/207/156 +f 203/210/157 205/212/157 199/206/157 201/208/157 +f 199/206/158 208/215/158 206/213/158 204/211/158 +f 207/214/159 208/215/159 199/206/159 205/212/159 +f 139/146/160 140/147/160 164/171/160 177/184/160 +f 165/172/161 141/148/161 139/146/161 177/184/161 +f 140/147/162 142/149/162 211/218/162 164/171/162 +f 212/219/163 143/150/163 141/148/163 165/172/163 +f 142/149/164 144/151/164 213/220/164 211/218/164 +f 214/221/165 145/152/165 143/150/165 212/219/165 +f 144/151/166 187/194/166 166/173/166 213/220/166 +f 167/174/167 188/195/167 145/152/167 214/221/167 +f 81/88/168 209/216/168 213/220/168 166/173/168 +f 214/221/169 210/217/169 82/89/169 167/174/169 +f 209/216/170 215/222/170 211/218/170 213/220/170 +f 212/219/171 216/223/171 210/217/171 214/221/171 +f 79/86/172 164/171/172 211/218/172 215/222/172 +f 212/219/173 165/172/173 80/87/173 216/223/173 +f 131/138/174 130/137/174 72/72/174 222/229/174 +f 72/72/175 130/137/175 132/139/175 223/230/175 +f 133/140/176 131/138/176 222/229/176 220/227/176 +f 223/230/177 132/139/177 134/141/177 221/228/177 +f 135/142/178 133/140/178 220/227/178 218/225/178 +f 221/228/179 134/141/179 136/143/179 219/226/179 +f 137/144/180 135/142/180 218/225/180 217/224/180 +f 219/226/181 136/143/181 137/144/181 217/224/181 +f 217/224/182 218/225/182 229/236/182 231/238/182 +f 230/237/183 219/226/183 217/224/183 231/238/183 +f 218/225/184 220/227/184 227/234/184 229/236/184 +f 228/235/185 221/228/185 219/226/185 230/237/185 +f 220/227/186 222/229/186 225/232/186 227/234/186 +f 226/233/187 223/230/187 221/228/187 228/235/187 +f 222/229/188 72/72/188 224/231/188 225/232/188 +f 224/231/189 72/72/189 223/230/189 226/233/189 +f 224/231/190 231/238/190 229/236/190 225/232/190 +f 230/237/191 231/238/191 224/231/191 226/233/191 +f 225/232/192 229/236/192 227/234/192 +f 228/235/193 230/237/193 226/233/193 +f 183/190/194 181/188/194 234/241/194 232/239/194 +f 235/242/195 182/189/195 184/191/195 233/240/195 +f 112/119/196 183/190/196 232/239/196 254/261/196 +f 233/240/197 184/191/197 113/120/197 255/262/197 +f 110/117/198 112/119/198 254/261/198 256/263/198 +f 255/262/199 113/120/199 111/118/199 257/264/199 +f 181/188/200 114/121/200 252/259/200 234/241/200 +f 253/260/201 115/122/201 182/189/201 235/242/201 +f 114/121/202 116/123/202 250/257/202 252/259/202 +f 251/258/203 117/124/203 115/122/203 253/260/203 +f 116/123/204 118/125/204 248/255/204 250/257/204 +f 249/256/205 119/126/205 117/124/205 251/258/205 +f 118/125/206 120/127/206 246/253/206 248/255/206 +f 247/254/207 121/128/207 119/126/207 249/256/207 +f 120/127/208 122/129/208 244/251/208 246/253/208 +f 245/252/209 123/130/209 121/128/209 247/254/209 +f 122/129/210 124/131/210 242/249/210 244/251/210 +f 243/250/211 125/132/211 123/130/211 245/252/211 +f 124/131/212 126/133/212 240/247/212 242/249/212 +f 241/248/213 127/134/213 125/132/213 243/250/213 +f 126/133/214 179/186/214 236/243/214 240/247/214 +f 237/244/215 180/187/215 127/134/215 241/248/215 +f 179/186/216 128/135/216 238/245/216 236/243/216 +f 239/246/217 129/136/217 180/187/217 237/244/217 +f 128/135/218 110/117/218 256/263/218 238/245/218 +f 257/264/219 111/118/219 129/136/219 239/246/219 +f 238/245/220 256/263/220 258/265/220 276/283/220 +f 259/266/221 257/264/221 239/246/221 277/284/221 +f 236/243/222 238/245/222 276/283/222 278/285/222 +f 277/284/223 239/246/223 237/244/223 279/286/223 +f 240/247/224 236/243/224 278/285/224 274/281/224 +f 279/286/225 237/244/225 241/248/225 275/282/225 +f 242/249/226 240/247/226 274/281/226 272/279/226 +f 275/282/227 241/248/227 243/250/227 273/280/227 +f 244/251/228 242/249/228 272/279/228 270/277/228 +f 273/280/229 243/250/229 245/252/229 271/278/229 +f 246/253/230 244/251/230 270/277/230 268/275/230 +f 271/278/231 245/252/231 247/254/231 269/276/231 +f 248/255/232 246/253/232 268/275/232 266/273/232 +f 269/276/233 247/254/233 249/256/233 267/274/233 +f 250/257/234 248/255/234 266/273/234 264/271/234 +f 267/274/235 249/256/235 251/258/235 265/272/235 +f 252/259/236 250/257/236 264/271/236 262/269/236 +f 265/272/237 251/258/237 253/260/237 263/270/237 +f 234/241/238 252/259/238 262/269/238 280/287/238 +f 263/270/239 253/260/239 235/242/239 281/288/239 +f 256/263/240 254/261/240 260/267/240 258/265/240 +f 261/268/241 255/262/241 257/264/241 259/266/241 +f 254/261/242 232/239/242 282/289/242 260/267/242 +f 283/290/243 233/240/243 255/262/243 261/268/243 +f 232/239/244 234/241/244 280/287/244 282/289/244 +f 281/288/245 235/242/245 233/240/245 283/290/245 +f 67/67/246 108/115/246 284/291/246 73/73/246 +f 285/293/247 109/116/247 67/67/247 73/73/247 +f 108/115/248 106/113/248 286/295/248 284/291/248 +f 287/297/249 107/114/249 109/116/249 285/293/249 +f 106/113/250 104/111/250 288/299/250 286/295/250 +f 289/301/251 105/112/251 107/114/251 287/297/251 +f 104/111/252 102/109/252 290/303/252 288/299/252 +f 291/305/253 103/110/253 105/112/253 289/301/253 +f 102/109/254 100/107/254 292/307/254 290/303/254 +f 293/309/255 101/108/255 103/110/255 291/305/255 +f 100/107/256 98/105/256 294/311/256 292/307/256 +f 295/312/257 99/106/257 101/108/257 293/309/257 +f 98/105/258 96/103/258 296/313/258 294/311/258 +f 297/314/259 97/104/259 99/106/259 295/312/259 +f 96/103/260 94/101/260 298/315/260 296/313/260 +f 299/316/261 95/102/261 97/104/261 297/314/261 +f 94/101/262 92/99/262 300/317/262 298/315/262 +f 301/318/263 93/100/263 95/102/263 299/316/263 +f 308/330/264 309/332/264 328/358/264 338/368/264 +f 329/359/265 309/333/265 308/331/265 339/369/265 +f 307/328/266 308/330/266 338/368/266 336/366/266 +f 339/369/267 308/331/267 307/329/267 337/367/267 +f 306/327/268 307/328/268 336/366/268 340/370/268 +f 337/367/269 307/329/269 306/327/269 341/371/269 +f 89/96/270 91/98/270 306/327/270 340/370/270 +f 306/327/271 91/98/271 90/97/271 341/371/271 +f 87/94/272 89/96/272 340/370/272 334/364/272 +f 341/371/273 90/97/273 88/95/273 335/365/273 +f 85/92/274 87/94/274 334/364/274 330/360/274 +f 335/365/275 88/95/275 86/93/275 331/361/275 +f 83/90/276 85/92/276 330/360/276 332/362/276 +f 331/361/277 86/93/277 84/91/277 333/363/277 +f 330/360/278 336/366/278 338/368/278 332/362/278 +f 339/369/279 337/367/279 331/361/279 333/363/279 +f 330/360/280 334/364/280 340/370/280 336/366/280 +f 341/371/281 335/365/281 331/361/281 337/367/281 +f 326/356/282 332/362/282 338/368/282 328/358/282 +f 339/369/283 333/363/283 327/357/283 329/359/283 +f 81/88/284 83/90/284 332/362/284 326/356/284 +f 333/363/285 84/91/285 82/89/285 327/357/285 +f 209/216/286 342/372/286 344/374/286 215/222/286 +f 345/375/287 343/373/287 210/217/287 216/223/287 +f 81/88/288 326/356/288 342/372/288 209/216/288 +f 343/373/289 327/357/289 82/89/289 210/217/289 +f 79/86/290 215/222/290 344/374/290 346/376/290 +f 345/375/291 216/223/291 80/87/291 347/377/291 +f 79/86/292 346/376/292 300/317/292 92/99/292 +f 301/318/293 347/377/293 80/87/293 93/100/293 +f 77/82/294 324/354/294 352/382/294 304/323/294 +f 353/383/295 325/355/295 77/83/295 304/324/295 +f 304/323/296 352/382/296 350/380/296 78/84/296 +f 351/381/297 353/383/297 304/324/297 78/85/297 +f 78/84/298 350/380/298 348/378/298 305/325/298 +f 349/379/299 351/381/299 78/85/299 305/326/299 +f 305/325/300 348/378/300 328/358/300 309/332/300 +f 329/359/301 349/379/301 305/326/301 309/333/301 +f 326/356/302 328/358/302 348/378/302 342/372/302 +f 349/379/303 329/359/303 327/357/303 343/373/303 +f 296/313/304 298/315/304 318/344/304 310/334/304 +f 319/345/305 299/316/305 297/314/305 311/335/305 +f 76/80/306 316/342/306 324/354/306 77/82/306 +f 325/355/307 317/343/307 76/81/307 77/83/307 +f 302/319/308 358/388/308 356/386/308 303/321/308 +f 357/387/309 359/389/309 302/320/309 303/322/309 +f 303/321/310 356/386/310 354/384/310 75/78/310 +f 355/385/311 357/387/311 303/322/311 75/79/311 +f 75/78/312 354/384/312 316/342/312 76/80/312 +f 317/343/313 355/385/313 75/79/313 76/81/313 +f 292/308/314 294/311/314 362/392/314 364/394/314 +f 363/393/315 295/312/315 293/310/315 365/395/315 +f 364/394/316 362/392/316 368/398/316 366/396/316 +f 369/399/317 363/393/317 365/395/317 367/397/317 +f 366/396/318 368/398/318 370/400/318 372/402/318 +f 371/401/319 369/399/319 367/397/319 373/403/319 +f 372/402/320 370/400/320 376/406/320 374/404/320 +f 377/407/321 371/401/321 373/403/321 375/405/321 +f 314/338/322 378/408/322 374/404/322 376/406/322 +f 375/405/323 379/409/323 315/340/323 377/407/323 +f 316/342/324 354/384/324 374/404/324 378/408/324 +f 375/405/325 355/385/325 317/343/325 379/409/325 +f 354/384/326 356/386/326 372/402/326 374/404/326 +f 373/403/327 357/387/327 355/385/327 375/405/327 +f 356/386/328 358/388/328 366/396/328 372/402/328 +f 367/397/329 359/389/329 357/387/329 373/403/329 +f 358/388/330 360/390/330 364/394/330 366/396/330 +f 365/395/331 361/391/331 359/389/331 367/397/331 +f 290/304/332 292/308/332 364/394/332 360/390/332 +f 365/395/333 293/310/333 291/306/333 361/391/333 +f 74/76/334 360/390/334 358/388/334 302/319/334 +f 359/389/335 361/391/335 74/77/335 302/320/335 +f 284/292/336 286/296/336 288/300/336 290/304/336 +f 289/302/337 287/298/337 285/294/337 291/306/337 +f 284/292/338 290/304/338 360/390/338 74/76/338 +f 361/391/339 291/306/339 285/294/339 74/77/339 +f 73/74/340 284/292/340 74/76/340 +f 74/77/341 285/294/341 73/75/341 +f 294/311/342 296/313/342 310/334/342 362/392/342 +f 311/335/343 297/314/343 295/312/343 363/393/343 +f 310/334/344 312/336/344 368/398/344 362/392/344 +f 369/399/345 313/337/345 311/335/345 363/393/345 +f 312/336/346 382/413/346 370/400/346 368/398/346 +f 371/401/347 383/415/347 313/337/347 369/399/347 +f 314/338/348 376/406/348 370/400/348 382/413/348 +f 371/401/349 377/407/349 315/340/349 383/415/349 +f 348/378/350 350/380/350 386/419/350 384/417/350 +f 387/420/351 351/381/351 349/379/351 385/418/351 +f 318/344/352 384/417/352 386/419/352 320/346/352 +f 387/420/353 385/418/353 319/345/353 321/348/353 +f 298/315/354 300/317/354 384/417/354 318/344/354 +f 385/418/355 301/318/355 299/316/355 319/345/355 +f 300/317/356 344/374/356 342/372/356 384/417/356 +f 343/373/357 345/375/357 301/318/357 385/418/357 +f 342/372/358 348/378/358 384/417/358 +f 385/418/359 349/379/359 343/373/359 +f 300/317/360 346/376/360 344/374/360 +f 345/375/361 347/377/361 301/318/361 +f 314/338/362 322/350/362 380/410/362 378/408/362 +f 381/411/363 323/352/363 315/340/363 379/409/363 +f 316/342/364 378/408/364 380/410/364 324/354/364 +f 381/411/365 379/409/365 317/343/365 325/355/365 +f 320/346/366 386/419/366 380/410/366 322/350/366 +f 381/411/367 387/420/367 321/348/367 323/352/367 +f 350/380/368 352/382/368 380/410/368 386/419/368 +f 381/411/369 353/383/369 351/381/369 387/420/369 +f 324/354/370 380/410/370 352/382/370 +f 353/383/371 381/411/371 325/355/371 +f 400/438/372 388/421/372 414/454/372 402/442/372 +f 415/455/373 389/424/373 401/440/373 403/443/373 +f 400/438/374 402/442/374 404/444/374 398/434/374 +f 405/445/375 403/443/375 401/440/375 399/436/375 +f 398/434/376 404/444/376 406/446/376 396/432/376 +f 407/447/377 405/445/377 399/436/377 397/433/377 +f 396/432/378 406/446/378 408/448/378 394/430/378 +f 409/449/379 407/447/379 397/433/379 395/431/379 +f 394/430/380 408/448/380 410/450/380 392/428/380 +f 411/451/381 409/449/381 395/431/381 393/429/381 +f 392/428/382 410/450/382 412/452/382 390/426/382 +f 413/453/383 411/451/383 393/429/383 391/427/383 +f 410/450/384 420/460/384 418/458/384 412/452/384 +f 419/459/385 421/461/385 411/451/385 413/453/385 +f 408/448/386 422/462/386 420/460/386 410/450/386 +f 421/461/387 423/463/387 409/449/387 411/451/387 +f 406/446/388 424/464/388 422/462/388 408/448/388 +f 423/463/389 425/465/389 407/447/389 409/449/389 +f 404/444/390 426/466/390 424/464/390 406/446/390 +f 425/465/391 427/467/391 405/445/391 407/447/391 +f 402/442/392 428/468/392 426/466/392 404/444/392 +f 427/467/393 429/469/393 403/443/393 405/445/393 +f 402/442/394 414/454/394 416/456/394 428/468/394 +f 417/457/395 415/455/395 403/443/395 429/469/395 +f 318/344/396 320/346/396 444/487/396 442/484/396 +f 445/489/397 321/348/397 319/345/397 443/485/397 +f 320/347/398 390/426/398 412/452/398 444/486/398 +f 413/453/399 391/427/399 321/349/399 445/488/399 +f 310/334/400 318/344/400 442/484/400 312/336/400 +f 443/485/401 319/345/401 311/335/401 313/337/401 +f 382/412/402 430/470/402 414/454/402 388/421/402 +f 415/455/403 431/472/403 383/414/403 389/424/403 +f 412/452/404 418/458/404 440/482/404 444/486/404 +f 441/483/405 419/459/405 413/453/405 445/488/405 +f 438/480/406 446/490/406 444/486/406 440/482/406 +f 445/488/407 447/492/407 439/481/407 441/483/407 +f 434/476/408 446/490/408 438/480/408 436/478/408 +f 439/481/409 447/492/409 435/477/409 437/479/409 +f 432/474/410 448/494/410 446/490/410 434/476/410 +f 447/492/411 449/496/411 433/475/411 435/477/411 +f 430/470/412 448/494/412 432/474/412 450/498/412 +f 433/475/413 449/496/413 431/472/413 451/499/413 +f 414/454/414 430/470/414 450/498/414 416/456/414 +f 451/499/415 431/472/415 415/455/415 417/457/415 +f 312/336/416 448/495/416 430/471/416 382/413/416 +f 431/473/417 449/497/417 313/337/417 383/415/417 +f 312/336/418 442/484/418 446/491/418 448/495/418 +f 447/493/419 443/485/419 313/337/419 449/497/419 +f 442/484/420 444/487/420 446/491/420 +f 447/493/421 445/489/421 443/485/421 +f 416/456/422 450/498/422 452/500/422 476/524/422 +f 453/501/423 451/499/423 417/457/423 477/525/423 +f 450/498/424 432/474/424 462/510/424 452/500/424 +f 463/511/425 433/475/425 451/499/425 453/501/425 +f 432/474/426 434/476/426 460/508/426 462/510/426 +f 461/509/427 435/477/427 433/475/427 463/511/427 +f 434/476/428 436/478/428 458/506/428 460/508/428 +f 459/507/429 437/479/429 435/477/429 461/509/429 +f 436/478/430 438/480/430 456/504/430 458/506/430 +f 457/505/431 439/481/431 437/479/431 459/507/431 +f 438/480/432 440/482/432 454/502/432 456/504/432 +f 455/503/433 441/483/433 439/481/433 457/505/433 +f 440/482/434 418/458/434 474/522/434 454/502/434 +f 475/523/435 419/459/435 441/483/435 455/503/435 +f 428/468/436 416/456/436 476/524/436 464/512/436 +f 477/525/437 417/457/437 429/469/437 465/513/437 +f 426/466/438 428/468/438 464/512/438 466/514/438 +f 465/513/439 429/469/439 427/467/439 467/515/439 +f 424/464/440 426/466/440 466/514/440 468/516/440 +f 467/515/441 427/467/441 425/465/441 469/517/441 +f 422/462/442 424/464/442 468/516/442 470/518/442 +f 469/517/443 425/465/443 423/463/443 471/519/443 +f 420/460/444 422/462/444 470/518/444 472/520/444 +f 471/519/445 423/463/445 421/461/445 473/521/445 +f 418/458/446 420/460/446 472/520/446 474/522/446 +f 473/521/447 421/461/447 419/459/447 475/523/447 +f 458/506/448 456/504/448 480/528/448 478/526/448 +f 481/529/449 457/505/449 459/507/449 479/527/449 +f 478/526/450 480/528/450 482/530/450 484/532/450 +f 483/531/451 481/529/451 479/527/451 485/533/451 +f 484/532/452 482/530/452 488/536/452 486/534/452 +f 489/537/453 483/531/453 485/533/453 487/535/453 +f 486/534/454 488/536/454 490/538/454 492/540/454 +f 491/539/455 489/537/455 487/535/455 493/541/455 +f 464/512/456 476/524/456 486/534/456 492/540/456 +f 487/535/457 477/525/457 465/513/457 493/541/457 +f 452/500/458 484/532/458 486/534/458 476/524/458 +f 487/535/459 485/533/459 453/501/459 477/525/459 +f 452/500/460 462/510/460 478/526/460 484/532/460 +f 479/527/461 463/511/461 453/501/461 485/533/461 +f 458/506/462 478/526/462 462/510/462 460/508/462 +f 463/511/463 479/527/463 459/507/463 461/509/463 +f 454/502/464 474/522/464 480/528/464 456/504/464 +f 481/529/465 475/523/465 455/503/465 457/505/465 +f 472/520/466 482/530/466 480/528/466 474/522/466 +f 481/529/467 483/531/467 473/521/467 475/523/467 +f 470/518/468 488/536/468 482/530/468 472/520/468 +f 483/531/469 489/537/469 471/519/469 473/521/469 +f 468/516/470 490/538/470 488/536/470 470/518/470 +f 489/537/471 491/539/471 469/517/471 471/519/471 +f 466/514/472 492/540/472 490/538/472 468/516/472 +f 491/539/473 493/541/473 467/515/473 469/517/473 +f 464/512/474 492/540/474 466/514/474 +f 467/515/475 493/541/475 465/513/475 +f 392/428/476 390/426/476 504/552/476 502/550/476 +f 505/553/477 391/427/477 393/429/477 503/551/477 +f 394/430/478 392/428/478 502/550/478 500/548/478 +f 503/551/479 393/429/479 395/431/479 501/549/479 +f 396/432/480 394/430/480 500/548/480 498/546/480 +f 501/549/481 395/431/481 397/433/481 499/547/481 +f 398/435/482 396/432/482 498/546/482 496/544/482 +f 499/547/483 397/433/483 399/437/483 497/545/483 +f 400/439/484 398/435/484 496/544/484 494/542/484 +f 497/545/485 399/437/485 401/441/485 495/543/485 +f 388/422/486 400/439/486 494/542/486 506/555/486 +f 495/543/487 401/441/487 389/425/487 507/556/487 +f 494/542/488 502/550/488 504/552/488 506/555/488 +f 505/553/489 503/551/489 495/543/489 507/556/489 +f 494/542/490 496/544/490 500/548/490 502/550/490 +f 501/549/491 497/545/491 495/543/491 503/551/491 +f 496/544/492 498/546/492 500/548/492 +f 501/549/493 499/547/493 497/545/493 +f 314/338/494 382/413/494 388/423/494 506/554/494 +f 389/425/495 383/416/495 315/341/495 507/556/495 +f 314/339/496 506/555/496 504/552/496 322/351/496 +f 505/553/497 507/556/497 315/341/497 323/353/497 +f 320/347/498 322/351/498 504/552/498 390/426/498 +f 505/553/499 323/353/499 321/349/499 391/427/499 +f 508/557/500 521/582/500 520/580/500 +f 509/562/501 521/581/501 523/584/501 +f 508/558/502 520/579/502 525/588/502 +f 508/559/503 525/587/503 527/591/503 +f 508/560/504 527/590/504 524/585/504 +f 509/562/505 523/584/505 530/594/505 +f 510/564/506 522/583/506 532/596/506 +f 511/565/507 526/589/507 534/598/507 +f 512/566/508 528/592/508 536/601/508 +f 513/567/509 529/593/509 538/603/509 +f 509/562/510 530/594/510 533/597/510 +f 510/564/511 532/596/511 535/599/511 +f 511/565/512 534/598/512 537/602/512 +f 512/566/513 536/601/513 539/604/513 +f 513/567/514 538/603/514 531/595/514 +f 514/568/515 540/605/515 545/611/515 +f 515/569/516 541/606/516 547/615/516 +f 516/571/517 542/607/517 548/617/517 +f 517/572/518 543/608/518 549/619/518 +f 518/573/519 544/609/519 546/612/519 +f 546/612/520 549/618/520 519/574/520 +f 546/612/521 544/609/521 549/618/521 +f 544/609/522 517/572/522 549/618/522 +f 549/619/523 548/616/523 519/575/523 +f 549/619/524 543/608/524 548/616/524 +f 543/608/525 516/571/525 548/616/525 +f 548/617/526 547/614/526 519/576/526 +f 548/617/527 542/607/527 547/614/527 +f 542/607/528 515/570/528 547/614/528 +f 547/615/529 545/610/529 519/577/529 +f 547/615/530 541/606/530 545/610/530 +f 541/606/531 514/568/531 545/610/531 +f 545/611/532 546/613/532 519/578/532 +f 545/611/533 540/605/533 546/613/533 +f 540/605/534 518/573/534 546/613/534 +f 531/595/535 544/609/535 518/573/535 +f 531/595/536 538/603/536 544/609/536 +f 538/603/537 517/572/537 544/609/537 +f 539/604/538 543/608/538 517/572/538 +f 539/604/539 536/601/539 543/608/539 +f 536/601/540 516/571/540 543/608/540 +f 537/602/541 542/607/541 516/571/541 +f 537/602/542 534/598/542 542/607/542 +f 534/598/543 515/570/543 542/607/543 +f 535/599/544 541/606/544 515/569/544 +f 535/599/545 532/596/545 541/606/545 +f 532/596/546 514/568/546 541/606/546 +f 533/597/547 540/605/547 514/568/547 +f 533/597/548 530/594/548 540/605/548 +f 530/594/549 518/573/549 540/605/549 +f 538/603/550 539/604/550 517/572/550 +f 538/603/551 529/593/551 539/604/551 +f 529/593/552 512/566/552 539/604/552 +f 536/601/553 537/602/553 516/571/553 +f 536/601/554 528/592/554 537/602/554 +f 528/592/555 511/565/555 537/602/555 +f 534/598/556 535/600/556 515/570/556 +f 534/598/557 526/589/557 535/600/557 +f 526/589/558 510/563/558 535/600/558 +f 532/596/559 533/597/559 514/568/559 +f 532/596/560 522/583/560 533/597/560 +f 522/583/561 509/562/561 533/597/561 +f 530/594/562 531/595/562 518/573/562 +f 530/594/563 523/584/563 531/595/563 +f 523/584/564 513/567/564 531/595/564 +f 524/585/565 529/593/565 513/567/565 +f 524/585/566 527/590/566 529/593/566 +f 527/590/567 512/566/567 529/593/567 +f 527/591/568 528/592/568 512/566/568 +f 527/591/569 525/587/569 528/592/569 +f 525/587/570 511/565/570 528/592/570 +f 525/588/571 526/589/571 511/565/571 +f 525/588/572 520/579/572 526/589/572 +f 520/579/573 510/563/573 526/589/573 +f 523/584/574 524/586/574 513/567/574 +f 523/584/575 521/581/575 524/586/575 +f 521/581/576 508/561/576 524/586/576 +f 520/580/577 522/583/577 510/564/577 +f 520/580/578 521/582/578 522/583/578 +f 521/582/579 509/562/579 522/583/579 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj.import new file mode 100644 index 0000000..e5c53c1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj.import @@ -0,0 +1,21 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://bcv4ug57hcmnt" +path="res://.godot/imported/suzanne.obj-a521563b47542f88d4c329be498f8ff1.mesh" + +[deps] + +files=["res://.godot/imported/suzanne.obj-a521563b47542f88d4c329be498f8ff1.mesh"] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj" +dest_files=["res://.godot/imported/suzanne.obj-a521563b47542f88d4c329be498f8ff1.mesh", "res://.godot/imported/suzanne.obj-a521563b47542f88d4c329be498f8ff1.mesh"] + +[params] + +generate_tangents=true +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +optimize_mesh=true diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj new file mode 100644 index 0000000..0d706bd --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj @@ -0,0 +1,8107 @@ +# Blender 3.3.0 +# www.blender.org +o Suzanne +v 0.439019 0.159939 0.756944 +v -0.439019 0.159939 0.756944 +v 0.483073 0.112847 0.684896 +v -0.483073 0.112847 0.684896 +v 0.527344 0.072917 0.582031 +v -0.527344 0.072917 0.582031 +v 0.351563 0.002604 0.615885 +v -0.351563 0.002604 0.615885 +v 0.351780 0.059028 0.711155 +v -0.351780 0.059028 0.711155 +v 0.352648 0.125868 0.774306 +v -0.352648 0.125868 0.774306 +v 0.269314 0.159939 0.788846 +v -0.269314 0.159939 0.788846 +v 0.221137 0.112847 0.731988 +v -0.221137 0.112847 0.731988 +v 0.175781 0.072917 0.644531 +v -0.175781 0.072917 0.644531 +v 0.104167 0.243490 0.653646 +v -0.104167 0.243490 0.653646 +v 0.167101 0.242622 0.736545 +v -0.167101 0.242622 0.736545 +v 0.235243 0.243273 0.791667 +v -0.235243 0.243273 0.791667 +v 0.269314 0.329861 0.788846 +v -0.269314 0.329861 0.788846 +v 0.221137 0.373698 0.731988 +v -0.221137 0.373698 0.731988 +v 0.175781 0.417969 0.644531 +v -0.175781 0.417969 0.644531 +v 0.351563 0.489583 0.615885 +v -0.351563 0.489583 0.615885 +v 0.351780 0.427951 0.711155 +v -0.351780 0.427951 0.711155 +v 0.352648 0.365017 0.774306 +v -0.352648 0.365017 0.774306 +v 0.439019 0.329861 0.756944 +v -0.439019 0.329861 0.756945 +v 0.483073 0.373698 0.684896 +v -0.483073 0.373698 0.684896 +v 0.527344 0.417969 0.582031 +v -0.527344 0.417969 0.582031 +v 0.598958 0.243490 0.567708 +v -0.598958 0.243490 0.567708 +v 0.537326 0.242622 0.672743 +v -0.537326 0.242622 0.672743 +v 0.473524 0.243273 0.749132 +v -0.473524 0.243273 0.749132 +v 0.449797 0.243345 0.780237 +v -0.449797 0.243345 0.780237 +v 0.422815 0.314381 0.786820 +v -0.422815 0.314381 0.786820 +v 0.352720 0.344039 0.802879 +v -0.352720 0.344039 0.802879 +v 0.285012 0.314381 0.815104 +v -0.285012 0.314381 0.815104 +v 0.256510 0.243345 0.817419 +v -0.256510 0.243345 0.817419 +v 0.285012 0.175637 0.815104 +v -0.285012 0.175637 0.815104 +v 0.352264 0.243239 0.818309 +v -0.352264 0.243239 0.818309 +v 0.352720 0.147135 0.802879 +v -0.352720 0.147135 0.802879 +v 0.422815 0.175637 0.786820 +v -0.422815 0.175637 0.786820 +v 0.000000 0.434028 0.735243 +v 0.000000 0.353456 0.803030 +v 0.000000 -0.654080 0.736979 +v 0.000000 -0.301649 0.778646 +v -0.000000 -0.171441 0.789497 +v 0.000000 -0.762153 0.713108 +v 0.000000 0.448061 0.623264 +v 0.000000 0.566604 0.532907 +v 0.000000 0.839844 -0.474392 +v 0.000000 0.506076 -0.745660 +v 0.000000 0.100260 -0.753906 +v 0.000000 -0.342448 -0.289931 +v 0.235026 -0.174045 0.580946 +v -0.235026 -0.174045 0.580946 +v 0.281033 -0.444878 0.564236 +v -0.281033 -0.444879 0.564236 +v 0.315104 -0.654948 0.555773 +v -0.315104 -0.654948 0.555773 +v 0.329861 -0.832465 0.532552 +v -0.329861 -0.832465 0.532552 +v 0.293620 -0.924479 0.526693 +v -0.293620 -0.924479 0.526693 +v 0.168403 -0.957465 0.547092 +v -0.168403 -0.957465 0.547092 +v 0.000000 -0.970486 0.562066 +v 0.423177 -0.109375 0.550564 +v -0.423177 -0.109375 0.550564 +v 0.622179 -0.004123 0.522352 +v -0.622179 -0.004123 0.522352 +v 0.777127 0.173394 0.492188 +v -0.777127 0.173394 0.492188 +v 0.803603 0.382378 0.567925 +v -0.803603 0.382378 0.567925 +v 0.686415 0.478516 0.624132 +v -0.686415 0.478516 0.624132 +v 0.491753 0.588759 0.680339 +v -0.491754 0.588759 0.680339 +v 0.323134 0.697266 0.724175 +v -0.323134 0.697266 0.724175 +v 0.180122 0.662326 0.745009 +v -0.180122 0.662326 0.745009 +v 0.079644 0.501953 0.741754 +v -0.079644 0.501953 0.741754 +v 0.167535 0.406250 0.783203 +v -0.167535 0.406250 0.783203 +v 0.121962 0.311198 0.776476 +v -0.121962 0.311198 0.776476 +v 0.215929 0.065972 0.749349 +v -0.215929 0.065972 0.749349 +v 0.370009 0.030599 0.708333 +v -0.370009 0.030599 0.708333 +v 0.509115 0.079210 0.672960 +v -0.509115 0.079210 0.672960 +v 0.615885 0.190321 0.651910 +v -0.615885 0.190321 0.651910 +v 0.639540 0.300564 0.658420 +v -0.639540 0.300564 0.658420 +v 0.585938 0.378038 0.685981 +v -0.585938 0.378038 0.685981 +v 0.442491 0.445096 0.733941 +v -0.442491 0.445096 0.733941 +v 0.245443 0.474826 0.775174 +v -0.245443 0.474826 0.775174 +v 0.000000 -0.740885 0.732205 +v 0.113750 -0.745313 0.722500 +v -0.113750 -0.745313 0.722500 +v 0.123481 -0.835504 0.699436 +v -0.123481 -0.835503 0.699436 +v 0.073351 -0.882596 0.685330 +v -0.073351 -0.882596 0.685330 +v 0.000000 -0.894097 0.680990 +v 0.000000 -0.167411 0.765625 +v -0.000000 -0.131629 0.751421 +v 0.094401 -0.148003 0.756511 +v -0.094401 -0.148003 0.756510 +v 0.123481 -0.224175 0.751519 +v -0.123481 -0.224175 0.751519 +v 0.091250 -0.305000 0.744844 +v -0.091250 -0.305000 0.744844 +v 0.392361 -0.041884 0.665365 +v -0.392361 -0.041884 0.665365 +v 0.587240 0.050130 0.618490 +v -0.587240 0.050130 0.618490 +v 0.708333 0.196181 0.599392 +v -0.708333 0.196181 0.599392 +v 0.730469 0.349175 0.643446 +v -0.730469 0.349175 0.643446 +v 0.649740 0.430990 0.701172 +v -0.649740 0.430990 0.701172 +v 0.462457 0.533854 0.760851 +v -0.462457 0.533854 0.760851 +v 0.319010 0.613064 0.799913 +v -0.319010 0.613064 0.799913 +v 0.205729 0.584635 0.816840 +v -0.205729 0.584635 0.816840 +v 0.107639 0.452691 0.814019 +v -0.107639 0.452691 0.814019 +v 0.153291 -0.093868 0.756155 +v -0.153291 -0.093868 0.756155 +v 0.207465 -0.463976 0.690321 +v -0.207465 -0.463976 0.690321 +v 0.240234 -0.675998 0.675130 +v -0.240234 -0.675998 0.675130 +v 0.250217 -0.810981 0.652995 +v -0.250217 -0.810981 0.652995 +v 0.221354 -0.894748 0.632379 +v -0.221354 -0.894748 0.632378 +v 0.138238 -0.927083 0.631076 +v -0.138238 -0.927083 0.631076 +v 0.000000 -0.937934 0.635417 +v 0.000000 0.039299 0.745028 +v 0.000000 0.209635 0.764757 +v 0.330512 0.486545 0.759766 +v -0.330512 0.486545 0.759766 +v 0.145616 0.131076 0.753906 +v -0.145616 0.131076 0.753906 +v 0.120443 0.214627 0.763238 +v -0.120443 0.214627 0.763238 +v 0.113932 -0.657335 0.728733 +v -0.113932 -0.657335 0.728733 +v 0.092665 -0.461589 0.739583 +v -0.092665 -0.461589 0.739583 +v 0.000000 -0.463108 0.746094 +v 0.000000 -0.335070 0.750000 +v 0.081163 -0.271918 0.781250 +v -0.081163 -0.271918 0.781250 +v 0.117622 -0.219618 0.789280 +v -0.117622 -0.219618 0.789280 +v 0.097222 -0.152561 0.782335 +v -0.097222 -0.152561 0.782335 +v 0.040148 -0.142795 0.782335 +v -0.040148 -0.142795 0.782335 +v 0.000000 -0.201231 0.820313 +v 0.048828 -0.159180 0.808594 +v -0.048828 -0.159180 0.808594 +v 0.086589 -0.166341 0.808594 +v -0.086589 -0.166341 0.808594 +v 0.089410 -0.217014 0.816623 +v -0.089410 -0.217014 0.816623 +v 0.068685 -0.256510 0.804362 +v -0.068685 -0.256510 0.804362 +v 0.000000 -0.269965 0.804688 +v 0.242405 -0.316406 0.562066 +v -0.242405 -0.316406 0.562066 +v 0.164714 -0.232639 0.702474 +v -0.164714 -0.232639 0.702474 +v 0.180556 -0.319879 0.690972 +v -0.180556 -0.319879 0.690972 +v 0.217231 -0.242839 0.569878 +v -0.217231 -0.242839 0.569879 +v 0.000000 -0.872396 0.678819 +v 0.049262 -0.860894 0.682726 +v -0.049262 -0.860894 0.682726 +v 0.089410 -0.815538 0.699002 +v -0.089410 -0.815538 0.699002 +v 0.080512 -0.758898 0.713325 +v -0.080512 -0.758898 0.713325 +v 0.000000 -0.783854 0.664931 +v 0.072483 -0.777995 0.665509 +v -0.072483 -0.777995 0.665509 +v 0.083333 -0.808919 0.660699 +v -0.083333 -0.808919 0.660699 +v 0.051649 -0.835069 0.647931 +v -0.051649 -0.835069 0.647931 +v 0.000000 -0.845052 0.646267 +v 0.172743 0.221571 0.771484 +v -0.172743 0.221571 0.771484 +v 0.189887 0.158854 0.767578 +v -0.189887 0.158854 0.767578 +v 0.338542 0.427300 0.757595 +v -0.338542 0.427300 0.757596 +v 0.270833 0.419271 0.768012 +v -0.270833 0.419271 0.768012 +v 0.430990 0.400174 0.747179 +v -0.430990 0.400174 0.747179 +v 0.544488 0.350694 0.698134 +v -0.544488 0.350695 0.698134 +v 0.583984 0.284288 0.679036 +v -0.583984 0.284288 0.679036 +v 0.564887 0.195530 0.679905 +v -0.564887 0.195530 0.679905 +v 0.476997 0.107639 0.706597 +v -0.476997 0.107639 0.706597 +v 0.366971 0.073568 0.735243 +v -0.366971 0.073568 0.735243 +v 0.243707 0.108724 0.763672 +v -0.243707 0.108724 0.763672 +v 0.178168 0.298394 0.774523 +v -0.178168 0.298394 0.774523 +v 0.212023 0.373264 0.774740 +v -0.212023 0.373264 0.774740 +v 0.235677 0.355469 0.759115 +v -0.235677 0.355469 0.759115 +v 0.201823 0.295573 0.756510 +v -0.201823 0.295573 0.756510 +v 0.257813 0.126302 0.751302 +v -0.257813 0.126302 0.751302 +v 0.367188 0.097656 0.727865 +v -0.367188 0.097656 0.727865 +v 0.460938 0.127604 0.701823 +v -0.460938 0.127604 0.701823 +v 0.533854 0.207031 0.677083 +v -0.533854 0.207031 0.677083 +v 0.549479 0.278646 0.673177 +v -0.549479 0.278646 0.673177 +v 0.515625 0.335938 0.690104 +v -0.515625 0.335938 0.690104 +v 0.420573 0.384115 0.738281 +v -0.420573 0.384115 0.738281 +v 0.282552 0.393229 0.761719 +v -0.282552 0.393229 0.761719 +v 0.339844 0.402344 0.752604 +v -0.339844 0.402344 0.752604 +v 0.208333 0.173177 0.751302 +v -0.208333 0.173177 0.751302 +v 0.196615 0.229167 0.751302 +v -0.196615 0.229167 0.751302 +v 0.133854 0.502240 0.614531 +v -0.133854 0.502240 0.614531 +v 0.209635 0.635417 0.643229 +v -0.209635 0.635417 0.643229 +v 0.324219 0.661458 0.625977 +v -0.324219 0.661458 0.625977 +v 0.445625 0.554063 0.558906 +v -0.445625 0.554063 0.558906 +v 0.664279 0.466797 0.489149 +v -0.664280 0.466797 0.489149 +v 0.775825 0.378689 0.443576 +v -0.775825 0.378689 0.443576 +v 0.767795 0.181424 0.362196 +v -0.767795 0.181424 0.362196 +v 0.623915 0.000217 0.378255 +v -0.623915 0.000217 0.378255 +v 0.408958 -0.118125 0.440990 +v -0.408958 -0.118125 0.440990 +v 0.000000 0.842014 0.255208 +v 0.000000 0.939236 -0.087240 +v 0.000000 -0.168837 -0.601128 +v 0.000000 -0.428385 0.111545 +v 0.000000 -0.938802 0.455729 +v 0.000000 -0.780382 0.365451 +v 0.000000 -0.581597 0.326389 +v 0.000000 -0.473524 0.267795 +v 0.803385 0.224826 0.131727 +v -0.803385 0.224826 0.131727 +v 0.825469 0.292500 -0.050000 +v -0.825469 0.292500 -0.050000 +v 0.757500 0.290469 -0.409063 +v -0.757500 0.290469 -0.409063 +v 0.392361 0.442274 -0.654297 +v -0.392361 0.442274 -0.654297 +v 0.685938 -0.025000 0.074063 +v -0.685938 -0.025000 0.074063 +v 0.625313 -0.102500 -0.170000 +v -0.625313 -0.102500 -0.170000 +v 0.652561 0.011285 -0.391276 +v -0.652561 0.011285 -0.391276 +v 0.320457 0.085503 -0.660735 +v -0.320457 0.085503 -0.660735 +v 0.237196 -0.391493 0.409505 +v -0.237196 -0.391493 0.409505 +v 0.156250 -0.430556 0.286024 +v -0.156250 -0.430556 0.286024 +v 0.276042 -0.743056 0.410156 +v -0.276042 -0.743056 0.410156 +v 0.250000 -0.546875 0.412543 +v -0.250000 -0.546875 0.412543 +v 0.281901 -0.885417 0.433919 +v -0.281901 -0.885417 0.433919 +v 0.142795 -0.752387 0.376085 +v -0.142795 -0.752387 0.376085 +v 0.133464 -0.554036 0.347439 +v -0.133464 -0.554036 0.347439 +v 0.162109 -0.917752 0.443142 +v -0.162109 -0.917752 0.443142 +v 0.243854 -0.286406 0.396198 +v -0.243854 -0.286406 0.396198 +v 0.247251 -0.212457 0.473814 +v -0.247251 -0.212457 0.473814 +v 0.257921 -0.172201 0.502713 +v -0.257921 -0.172201 0.502713 +v 0.212448 -0.360469 0.150104 +v -0.212448 -0.360469 0.150104 +v 0.266059 -0.285373 -0.246745 +v -0.266059 -0.285373 -0.246745 +v 0.299624 -0.128472 -0.533131 +v -0.299624 -0.128472 -0.533131 +v 0.409071 0.785590 -0.413845 +v -0.409071 0.785590 -0.413846 +v 0.408854 0.885200 -0.096137 +v -0.408854 0.885200 -0.096137 +v 0.409505 0.794488 0.198351 +v -0.409505 0.794488 0.198351 +v 0.419054 0.572483 0.413411 +v -0.419054 0.572483 0.413411 +v 0.746962 0.410156 0.276042 +v -0.746962 0.410156 0.276042 +v 0.630208 0.499132 0.309028 +v -0.630208 0.499132 0.309028 +v 0.632813 0.672092 0.089844 +v -0.632813 0.672092 0.089844 +v 0.771918 0.526476 0.078993 +v -0.771918 0.526476 0.078993 +v 0.774523 0.571181 -0.146701 +v -0.774523 0.571181 -0.146701 +v 0.635417 0.737196 -0.161675 +v -0.635417 0.737196 -0.161675 +v 0.632378 0.640625 -0.404080 +v -0.632378 0.640625 -0.404080 +v 0.753906 0.521159 -0.342448 +v -0.753906 0.521159 -0.342448 +v 0.598307 0.342448 -0.548394 +v -0.598307 0.342448 -0.548394 +v 0.481823 0.019062 -0.510885 +v -0.481823 0.019063 -0.510885 +v 0.826719 0.356875 -0.206250 +v -0.826719 0.356875 -0.206250 +v 0.405260 -0.185469 0.161979 +v -0.405260 -0.185469 0.161979 +v 0.442491 -0.168403 -0.206163 +v -0.442491 -0.168403 -0.206163 +v 0.900174 0.391493 -0.267795 +v -0.900174 0.391493 -0.267795 +v 0.800130 -0.113715 -0.200304 +v -0.800130 -0.113715 -0.200304 +v 1.035156 -0.070313 -0.334852 +v -1.035156 -0.070313 -0.334852 +v 1.246094 0.076172 -0.425781 +v -1.246094 0.076172 -0.425781 +v 1.310547 0.298828 -0.434896 +v -1.310547 0.298828 -0.434896 +v 1.213108 0.454861 -0.419922 +v -1.213108 0.454861 -0.419922 +v 1.034722 0.453776 -0.340495 +v -1.034722 0.453776 -0.340495 +v 1.031033 0.407552 -0.309245 +v -1.031033 0.407552 -0.309245 +v 1.177300 0.407552 -0.389106 +v -1.177300 0.407552 -0.389106 +v 1.251736 0.277344 -0.413628 +v -1.251736 0.277344 -0.413628 +v 1.197266 0.092014 -0.400174 +v -1.197266 0.092014 -0.400174 +v 1.030382 -0.028212 -0.306207 +v -1.030382 -0.028212 -0.306207 +v 0.843316 -0.063151 -0.180773 +v -0.843316 -0.063151 -0.180773 +v 0.924696 0.355469 -0.242622 +v -0.924696 0.355469 -0.242622 +v 0.946398 0.307726 -0.294705 +v -0.946398 0.307726 -0.294705 +v 0.888455 -0.023872 -0.243056 +v -0.888455 -0.023872 -0.243056 +v 1.037543 0.005642 -0.352648 +v -1.037543 0.005642 -0.352648 +v 1.177300 0.101345 -0.432292 +v -1.177300 0.101345 -0.432292 +v 1.224392 0.246745 -0.444879 +v -1.224393 0.246745 -0.444878 +v 1.162760 0.347873 -0.425564 +v -1.162760 0.347873 -0.425564 +v 1.036458 0.348741 -0.358507 +v -1.036458 0.348741 -0.358507 +v 0.854167 0.287760 -0.217014 +v -0.854167 0.287760 -0.217014 +v 0.826389 0.173611 -0.269314 +v -0.826389 0.173611 -0.269314 +v 0.777778 0.098090 -0.269965 +v -0.777778 0.098090 -0.269965 +v 0.809896 0.069661 -0.281576 +v -0.809896 0.069661 -0.281576 +v 0.817491 0.024523 -0.268880 +v -0.817491 0.024523 -0.268880 +v 0.814236 -0.013021 -0.255208 +v -0.814236 -0.013021 -0.255208 +v 0.742043 0.040943 -0.081453 +v -0.742043 0.040943 -0.081453 +v 0.732865 -0.029271 -0.165833 +v -0.732865 -0.029271 -0.165833 +v 0.747865 0.054010 -0.193958 +v -0.747865 0.054010 -0.193958 +v 0.804905 0.199870 -0.196181 +v -0.804905 0.199870 -0.196181 +v 0.884115 0.247179 -0.269965 +v -0.884115 0.247179 -0.269965 +v 0.903646 0.224175 -0.319878 +v -0.903646 0.224175 -0.319878 +v 0.840169 -0.006185 -0.297526 +v -0.840169 -0.006185 -0.297526 +v 0.853299 0.027127 -0.312934 +v -0.853299 0.027127 -0.312934 +v 0.831814 0.078125 -0.313802 +v -0.831814 0.078125 -0.313802 +v 0.798177 0.107747 -0.308919 +v -0.798177 0.107747 -0.308919 +v 0.846354 0.160373 -0.314019 +v -0.846354 0.160373 -0.314019 +v 1.051722 0.318432 -0.401910 +v -1.051722 0.318432 -0.401910 +v 1.158059 0.317564 -0.453125 +v -1.158059 0.317564 -0.453125 +v 1.210938 0.231988 -0.465278 +v -1.210938 0.231988 -0.465278 +v 1.165148 0.112630 -0.452474 +v -1.165148 0.112630 -0.452474 +v 1.037326 0.030599 -0.390625 +v -1.037326 0.030599 -0.390625 +v 0.904080 -0.000868 -0.298177 +v -0.904080 -0.000868 -0.298177 +v 0.965929 0.279514 -0.346137 +v -0.965929 0.279514 -0.346137 +v 0.889974 0.115451 -0.330295 +v -0.889974 0.115451 -0.330295 +v 0.920790 0.060330 -0.330946 +v -0.920790 0.060330 -0.330946 +v 1.000000 0.113932 -0.369358 +v -1.000000 0.113932 -0.369358 +v 0.954210 0.174262 -0.349175 +v -0.954210 0.174262 -0.349175 +v 1.014106 0.231554 -0.371311 +v -1.014106 0.231554 -0.371311 +v 1.071398 0.175347 -0.395833 +v -1.071398 0.175347 -0.395833 +v 1.124674 0.223958 -0.413411 +v -1.124675 0.223958 -0.413411 +v 1.087529 0.274378 -0.404297 +v -1.087529 0.274378 -0.404297 +v 1.035807 0.355903 -0.450087 +v -1.035807 0.355903 -0.450087 +v 1.235388 0.379774 -0.507017 +v -1.235388 0.379774 -0.507017 +v 1.324436 0.286784 -0.494900 +v -1.324436 0.286784 -0.494900 +v 1.263166 0.131727 -0.503762 +v -1.263166 0.131727 -0.503762 +v 1.040148 0.012587 -0.445747 +v -1.040148 0.012587 -0.445747 +v 0.814019 -0.025825 -0.343967 +v -0.814019 -0.025825 -0.343967 +v 0.866103 0.299262 -0.375000 +v -0.866102 0.299262 -0.375000 +v 0.501356 0.242866 0.716797 +v 0.464654 0.197862 0.751248 +v 0.458035 0.139079 0.726617 +v 0.523058 0.172363 0.676053 +v -0.523058 0.172363 0.676053 +v -0.458035 0.139079 0.726617 +v -0.464654 0.197862 0.751248 +v -0.501356 0.242866 0.716797 +v 0.569770 0.242893 0.621853 +v 0.506185 0.091092 0.635417 +v 0.580241 0.150879 0.571452 +v -0.580241 0.150879 0.571452 +v -0.506185 0.091092 0.635417 +v -0.569770 0.242893 0.621853 +v 0.422716 0.073242 0.697456 +v 0.351590 0.028212 0.665880 +v 0.446777 0.021159 0.597982 +v -0.446777 0.021159 0.597982 +v -0.351590 0.028212 0.665880 +v -0.422716 0.073242 0.697456 +v 0.399251 0.134847 0.765137 +v 0.352214 0.096354 0.747694 +v -0.352214 0.096354 0.747694 +v -0.399251 0.134847 0.765137 +v 0.307237 0.134847 0.782796 +v 0.248318 0.139079 0.764811 +v 0.281087 0.073242 0.723362 +v -0.281087 0.073242 0.723362 +v -0.248318 0.139079 0.764811 +v -0.307237 0.134847 0.782796 +v 0.197076 0.091092 0.690620 +v 0.256348 0.021159 0.632161 +v -0.256348 0.021159 0.632161 +v -0.197076 0.091092 0.690620 +v 0.181342 0.172363 0.735813 +v 0.133518 0.242893 0.697211 +v 0.122884 0.150879 0.651530 +v -0.122884 0.150879 0.651530 +v -0.133518 0.242893 0.697211 +v -0.181342 0.172363 0.735813 +v 0.244222 0.197862 0.791314 +v 0.205566 0.242866 0.768175 +v -0.205566 0.242866 0.768175 +v -0.244222 0.197862 0.791314 +v 0.244222 0.289903 0.791314 +v 0.248318 0.348687 0.764811 +v 0.181342 0.313368 0.735813 +v -0.181342 0.313368 0.735813 +v -0.248318 0.348687 0.764811 +v -0.244222 0.289903 0.791314 +v 0.197076 0.396810 0.690620 +v 0.122884 0.337565 0.651530 +v -0.122884 0.337565 0.651530 +v -0.197076 0.396810 0.690620 +v 0.281087 0.413683 0.723362 +v 0.351590 0.460395 0.665880 +v 0.256348 0.470866 0.632161 +v -0.256348 0.470866 0.632161 +v -0.351590 0.460395 0.665880 +v -0.281087 0.413683 0.723362 +v 0.307237 0.355903 0.782796 +v 0.352214 0.392090 0.747694 +v -0.352214 0.392090 0.747694 +v -0.307237 0.355903 0.782796 +v 0.399251 0.355903 0.765137 +v 0.458035 0.348687 0.726617 +v 0.422716 0.413683 0.697456 +v -0.422716 0.413683 0.697456 +v -0.458035 0.348687 0.726617 +v -0.399251 0.355903 0.765137 +v 0.506185 0.396810 0.635417 +v 0.446777 0.470866 0.597982 +v -0.446777 0.470866 0.597982 +v -0.506185 0.396810 0.635417 +v 0.523058 0.313368 0.676053 +v 0.580241 0.337565 0.571452 +v -0.580241 0.337565 0.571452 +v -0.523058 0.313368 0.676053 +v 0.464654 0.289903 0.751248 +v -0.464654 0.289903 0.751248 +v 0.462095 0.243444 0.767343 +v 0.431460 0.322718 0.774514 +v 0.444182 0.281901 0.781404 +v -0.444182 0.281901 0.781404 +v -0.431460 0.322718 0.774513 +v -0.462095 0.243444 0.767343 +v 0.352819 0.355234 0.791386 +v 0.391158 0.337475 0.794090 +v -0.391159 0.337475 0.794090 +v -0.352819 0.355234 0.791386 +v 0.277299 0.322718 0.804986 +v 0.315430 0.337475 0.810068 +v -0.315430 0.337475 0.810068 +v -0.277299 0.322718 0.804986 +v 0.246040 0.243444 0.807581 +v 0.263003 0.281901 0.817057 +v -0.263003 0.281901 0.817057 +v -0.246040 0.243444 0.807581 +v 0.277299 0.167924 0.804986 +v 0.263003 0.206055 0.817057 +v -0.263003 0.206055 0.817057 +v -0.277299 0.167924 0.804986 +v 0.352819 0.136665 0.791386 +v 0.315430 0.153628 0.810068 +v -0.315430 0.153628 0.810068 +v -0.352819 0.136665 0.791386 +v 0.431460 0.167924 0.774514 +v 0.391159 0.153628 0.794090 +v -0.391159 0.153628 0.794090 +v -0.431460 0.167924 0.774514 +v 0.444182 0.206055 0.781404 +v -0.444182 0.206055 0.781404 +v 0.417707 0.243141 0.796767 +v 0.399450 0.197315 0.801297 +v -0.417707 0.243141 0.796767 +v -0.399450 0.197315 0.801297 +v 0.352476 0.178001 0.812292 +v -0.352476 0.178001 0.812292 +v 0.306668 0.197315 0.820566 +v -0.306668 0.197315 0.820566 +v 0.287354 0.243141 0.822320 +v -0.287354 0.243141 0.822320 +v 0.306668 0.290939 0.820566 +v -0.306668 0.290939 0.820566 +v 0.352476 0.311085 0.812292 +v -0.352476 0.311085 0.812292 +v 0.399450 0.290939 0.801297 +v -0.399450 0.290939 0.801297 +v 0.086480 -0.966580 0.557590 +v 0.159424 -0.946994 0.592584 +v 0.073432 -0.934788 0.633898 +v -0.000000 -0.958279 0.602810 +v -0.073432 -0.934787 0.633898 +v -0.159424 -0.946994 0.592584 +v -0.086480 -0.966580 0.557590 +v 0.240370 -0.945204 0.535102 +v 0.266032 -0.917833 0.582872 +v 0.187527 -0.915717 0.629612 +v -0.187527 -0.915717 0.629612 +v -0.266032 -0.917833 0.582872 +v -0.240370 -0.945204 0.535102 +v 0.321587 -0.888563 0.525960 +v 0.303467 -0.836779 0.597900 +v 0.241564 -0.858724 0.641141 +v -0.241564 -0.858724 0.641140 +v -0.303467 -0.836779 0.597901 +v -0.321588 -0.888563 0.525960 +v 0.326226 -0.753310 0.544244 +v 0.292074 -0.678087 0.623101 +v 0.249295 -0.753744 0.664551 +v -0.249295 -0.753744 0.664551 +v -0.292074 -0.678087 0.623101 +v -0.326226 -0.753310 0.544244 +v 0.299615 -0.545682 0.562364 +v 0.256863 -0.460775 0.634847 +v 0.224908 -0.571208 0.684353 +v -0.224908 -0.571208 0.684353 +v -0.256863 -0.460775 0.634847 +v -0.299615 -0.545682 0.562364 +v 0.208736 -0.149290 0.665062 +v 0.315186 -0.143338 0.568197 +v 0.409559 -0.082872 0.611464 +v 0.276213 -0.067246 0.707379 +v -0.276213 -0.067246 0.707379 +v -0.409559 -0.082872 0.611464 +v -0.315186 -0.143338 0.568197 +v -0.208736 -0.149291 0.665062 +v 0.526666 -0.064480 0.537923 +v 0.613091 0.019911 0.574246 +v 0.497450 -0.003364 0.637533 +v -0.497450 -0.003364 0.637533 +v -0.613091 0.019911 0.574246 +v -0.526666 -0.064480 0.537923 +v 0.710070 0.074870 0.498888 +v 0.752577 0.185357 0.549045 +v 0.659017 0.117703 0.602919 +v -0.659017 0.117703 0.602919 +v -0.752577 0.185357 0.549045 +v -0.710070 0.074870 0.498888 +v 0.809408 0.285780 0.523139 +v 0.776720 0.370741 0.613824 +v 0.731608 0.279107 0.615804 +v -0.731608 0.279107 0.615804 +v -0.776720 0.370741 0.613824 +v -0.809408 0.285780 0.523139 +v 0.760471 0.439155 0.599691 +v 0.674832 0.460368 0.674452 +v 0.705729 0.393907 0.671983 +v -0.705729 0.393907 0.671983 +v -0.674832 0.460368 0.674452 +v -0.760471 0.439155 0.599691 +v 0.591119 0.527941 0.651828 +v 0.478651 0.570991 0.733860 +v 0.559923 0.479492 0.732069 +v -0.559923 0.479492 0.732069 +v -0.478651 0.570991 0.733860 +v -0.591119 0.527941 0.651828 +v 0.403130 0.652452 0.704861 +v 0.319038 0.668674 0.776449 +v 0.383328 0.582330 0.783474 +v -0.383328 0.582330 0.783474 +v -0.319038 0.668674 0.776449 +v -0.403130 0.652452 0.704861 +v 0.247477 0.702176 0.737847 +v 0.187880 0.634874 0.795329 +v 0.260417 0.615533 0.810981 +v -0.260417 0.615533 0.810981 +v -0.187880 0.634874 0.795329 +v -0.247477 0.702176 0.737847 +v 0.125244 0.584012 0.745416 +v 0.086887 0.482124 0.791151 +v 0.154894 0.522244 0.817627 +v -0.154894 0.522244 0.817627 +v -0.086887 0.482123 0.791151 +v -0.125244 0.584012 0.745416 +v 0.038764 0.450494 0.737359 +v -0.000000 0.410198 0.782401 +v 0.061944 0.399104 0.807711 +v -0.061944 0.399104 0.807711 +v -0.038764 0.450494 0.737359 +v 0.136936 0.427192 0.803657 +v 0.204454 0.446072 0.780735 +v 0.226318 0.526476 0.801053 +v -0.226318 0.526476 0.801053 +v -0.204454 0.446072 0.780735 +v -0.136936 0.427192 0.803657 +v 0.286838 0.488336 0.768039 +v 0.323866 0.546143 0.784804 +v -0.323866 0.546143 0.784804 +v -0.286838 0.488336 0.768039 +v 0.380317 0.470947 0.749702 +v 0.450521 0.487603 0.751302 +v -0.450521 0.487603 0.751302 +v -0.380317 0.470947 0.749702 +v 0.518202 0.412950 0.710205 +v 0.617350 0.401910 0.697320 +v -0.617350 0.401910 0.697320 +v -0.518202 0.412950 0.710205 +v 0.624864 0.342150 0.669027 +v 0.681993 0.322917 0.653944 +v -0.681993 0.322917 0.653944 +v -0.624864 0.342150 0.669027 +v 0.637885 0.248861 0.652073 +v 0.659180 0.195285 0.631510 +v -0.659180 0.195285 0.631510 +v -0.637885 0.248861 0.652072 +v 0.569824 0.130859 0.659749 +v 0.547201 0.067925 0.649713 +v -0.547201 0.067925 0.649713 +v -0.569824 0.130859 0.659749 +v 0.443387 0.044000 0.688775 +v 0.378499 -0.002387 0.693685 +v -0.378499 -0.002387 0.693685 +v -0.443386 0.044000 0.688775 +v 0.288086 0.040880 0.731527 +v 0.186885 0.005590 0.755652 +v -0.186885 0.005590 0.755651 +v -0.288086 0.040880 0.731527 +v 0.170681 0.096408 0.754313 +v 0.089274 0.094936 0.748690 +v 0.080060 -0.023837 0.759618 +v -0.080060 -0.023837 0.759618 +v -0.089274 0.094936 0.748690 +v -0.170681 0.096408 0.754313 +v 0.139214 0.360189 0.781386 +v 0.072361 0.325644 0.790241 +v -0.072361 0.325644 0.790241 +v -0.139214 0.360189 0.781386 +v 0.116726 0.262017 0.770101 +v 0.000000 0.274511 0.782998 +v 0.066325 0.211236 0.763265 +v -0.066325 0.211236 0.763265 +v -0.116726 0.262017 0.770101 +v 0.000000 0.141309 0.750060 +v 0.129937 0.170654 0.757026 +v -0.129937 0.170654 0.757026 +v 0.105062 -0.903456 0.663574 +v 0.037977 -0.891520 0.682021 +v 0.000000 -0.914551 0.662598 +v -0.037977 -0.891520 0.682020 +v -0.105062 -0.903456 0.663574 +v 0.168593 -0.863254 0.672825 +v 0.103217 -0.865153 0.691162 +v -0.103217 -0.865153 0.691162 +v -0.168593 -0.863254 0.672824 +v 0.184592 -0.775513 0.694359 +v 0.129647 -0.792508 0.709889 +v -0.129647 -0.792508 0.709889 +v -0.184592 -0.775513 0.694359 +v 0.149333 -0.462864 0.723660 +v 0.103461 -0.565158 0.734809 +v 0.177572 -0.666178 0.709663 +v -0.177572 -0.666179 0.709663 +v -0.103461 -0.565158 0.734809 +v -0.149333 -0.462864 0.723660 +v 0.117386 -0.712159 0.724877 +v -0.117386 -0.712159 0.724877 +v 0.088290 -0.375465 0.740570 +v 0.043300 -0.327329 0.749467 +v 0.000000 -0.384928 0.746582 +v 0.043810 -0.462267 0.745280 +v -0.043810 -0.462267 0.745280 +v -0.043300 -0.327329 0.749467 +v -0.088290 -0.375465 0.740570 +v 0.055257 -0.654161 0.735948 +v -0.000000 -0.562500 0.742025 +v -0.055257 -0.654161 0.735948 +v 0.000000 -0.711480 0.734429 +v 0.054262 -0.736464 0.731414 +v -0.054262 -0.736464 0.731414 +v 0.115566 -0.260462 0.747582 +v 0.119005 -0.221490 0.769748 +v 0.106391 -0.248454 0.786160 +v 0.082254 -0.281105 0.763627 +v -0.082254 -0.281105 0.763627 +v -0.106391 -0.248454 0.786160 +v -0.119005 -0.221490 0.769748 +v -0.115566 -0.260462 0.747582 +v 0.117079 -0.184218 0.755398 +v 0.095242 -0.152805 0.765110 +v 0.114258 -0.183729 0.786784 +v -0.114258 -0.183729 0.786784 +v -0.095242 -0.152805 0.765110 +v -0.117079 -0.184218 0.755398 +v 0.054782 -0.126551 0.753359 +v 0.028795 -0.142542 0.764481 +v 0.069417 -0.138482 0.780545 +v -0.069417 -0.138482 0.780545 +v -0.028795 -0.142542 0.764481 +v -0.054782 -0.126551 0.753359 +v 0.000000 -0.160093 0.760589 +v 0.000000 -0.170247 0.772135 +v 0.017714 -0.160373 0.786811 +v -0.017714 -0.160373 0.786811 +v 0.000000 -0.312012 0.762370 +v 0.043837 -0.292399 0.778971 +v -0.043837 -0.292399 0.778971 +v 0.000000 -0.289225 0.792643 +v 0.076622 -0.263310 0.795454 +v 0.040992 -0.264544 0.804636 +v -0.040992 -0.264544 0.804636 +v -0.076622 -0.263310 0.795454 +v -0.000000 -0.177786 0.806707 +v 0.033856 -0.176123 0.814812 +v 0.045371 -0.148837 0.798524 +v -0.045371 -0.148837 0.798524 +v -0.033856 -0.176123 0.814812 +v 0.068127 -0.160174 0.809450 +v 0.094073 -0.157740 0.798524 +v -0.094073 -0.157740 0.798524 +v -0.068127 -0.160174 0.809450 +v 0.090722 -0.187960 0.814366 +v 0.109863 -0.218642 0.805718 +v -0.109863 -0.218642 0.805718 +v -0.090722 -0.187960 0.814366 +v 0.080556 -0.240619 0.811432 +v -0.080556 -0.240619 0.811432 +v 0.052775 -0.212738 0.820894 +v -0.052775 -0.212738 0.820894 +v 0.000000 -0.241940 0.815605 +v -0.000000 -0.067368 0.748360 +v 0.103999 -0.128335 0.761687 +v -0.103999 -0.128335 0.761687 +v 0.139052 -0.227512 0.734972 +v 0.153017 -0.179116 0.726314 +v -0.153017 -0.179116 0.726314 +v -0.139052 -0.227512 0.734972 +v 0.136833 -0.313467 0.725257 +v 0.173041 -0.275119 0.692247 +v -0.173041 -0.275119 0.692247 +v -0.136833 -0.313467 0.725257 +v 0.192057 -0.380208 0.691705 +v -0.192057 -0.380208 0.691705 +v 0.260742 -0.369575 0.563151 +v 0.219862 -0.321723 0.632216 +v -0.219862 -0.321723 0.632216 +v -0.260742 -0.369575 0.563151 +v 0.228841 -0.276937 0.563856 +v 0.195204 -0.239610 0.640490 +v -0.195204 -0.239610 0.640490 +v -0.228841 -0.276937 0.563856 +v 0.209852 -0.207872 0.578912 +v -0.209852 -0.207872 0.578912 +v 0.087736 -0.753012 0.724524 +v 0.000000 -0.755263 0.726563 +v 0.046197 -0.757514 0.713949 +v -0.046197 -0.757514 0.713949 +v -0.087736 -0.753012 0.724524 +v 0.098877 -0.821126 0.708008 +v 0.093994 -0.782254 0.707791 +v -0.093994 -0.782254 0.707791 +v -0.098877 -0.821126 0.708008 +v 0.055854 -0.869303 0.691515 +v 0.072510 -0.842855 0.689806 +v -0.072510 -0.842855 0.689806 +v -0.055854 -0.869303 0.691515 +v 0.000000 -0.880968 0.686578 +v 0.024712 -0.869982 0.679471 +v -0.024712 -0.869982 0.679471 +v 0.000000 -0.863119 0.660753 +v 0.047770 -0.852132 0.663402 +v 0.026964 -0.842340 0.646638 +v -0.026964 -0.842339 0.646638 +v -0.047770 -0.852132 0.663402 +v 0.085907 -0.811881 0.677369 +v 0.071639 -0.823545 0.651694 +v -0.071639 -0.823545 0.651694 +v -0.085907 -0.811881 0.677369 +v 0.077718 -0.764377 0.690421 +v 0.085473 -0.790654 0.661853 +v -0.085473 -0.790654 0.661853 +v -0.077718 -0.764377 0.690421 +v 0.000000 -0.768446 0.689833 +v 0.041287 -0.779704 0.665817 +v -0.041287 -0.779704 0.665817 +v 0.000000 -0.813965 0.648275 +v 0.061523 -0.805691 0.649333 +v -0.061523 -0.805691 0.649333 +v 0.153836 0.218099 0.768501 +v 0.175727 0.150011 0.762451 +v 0.178630 0.188178 0.769043 +v -0.178630 0.188178 0.769043 +v -0.175727 0.150011 0.762451 +v -0.153836 0.218099 0.768501 +v 0.156169 0.302762 0.773953 +v 0.172282 0.258843 0.773329 +v -0.172282 0.258843 0.773329 +v -0.156169 0.302762 0.773953 +v 0.192952 0.387967 0.775798 +v 0.191352 0.337864 0.775201 +v -0.191352 0.337864 0.775201 +v -0.192952 0.387967 0.775798 +v 0.233724 0.096056 0.755534 +v 0.208496 0.133057 0.767578 +v -0.208496 0.133057 0.767578 +v -0.233724 0.096056 0.755534 +v 0.367025 0.055501 0.723904 +v 0.301432 0.085775 0.751329 +v -0.301432 0.085775 0.751329 +v -0.367025 0.055501 0.723904 +v 0.487522 0.093180 0.693441 +v 0.424832 0.081245 0.720758 +v -0.424832 0.081245 0.720757 +v -0.487522 0.093180 0.693441 +v 0.585585 0.190809 0.668918 +v 0.526720 0.148248 0.691379 +v -0.526720 0.148248 0.691379 +v -0.585585 0.190809 0.668918 +v 0.607530 0.288927 0.669135 +v 0.582574 0.242106 0.676704 +v -0.582574 0.242106 0.676704 +v -0.607530 0.288927 0.669135 +v 0.562202 0.361599 0.689616 +v 0.573676 0.320096 0.684353 +v -0.573676 0.320095 0.684353 +v -0.562202 0.361599 0.689616 +v 0.436334 0.416694 0.736898 +v 0.491564 0.377550 0.723633 +v -0.491564 0.377550 0.723633 +v -0.436334 0.416694 0.736898 +v 0.335585 0.448703 0.753635 +v 0.379883 0.417399 0.755968 +v -0.379883 0.417399 0.755968 +v -0.335585 0.448703 0.753635 +v 0.260335 0.440375 0.766629 +v 0.303223 0.428087 0.761990 +v -0.303223 0.428087 0.761990 +v -0.260335 0.440375 0.766629 +v 0.239556 0.400825 0.772434 +v -0.239556 0.400825 0.772434 +v 0.277669 0.404785 0.766412 +v 0.225396 0.363064 0.768880 +v 0.258138 0.377767 0.761393 +v -0.258138 0.377767 0.761393 +v -0.225396 0.363064 0.768880 +v -0.277669 0.404785 0.766412 +v 0.339681 0.413276 0.757134 +v 0.309245 0.401204 0.757650 +v -0.309245 0.401204 0.757650 +v -0.339681 0.413276 0.757134 +v 0.425781 0.390517 0.746718 +v 0.376302 0.397135 0.748861 +v -0.376302 0.397135 0.748861 +v -0.425781 0.390517 0.746718 +v 0.529487 0.342665 0.697456 +v 0.471517 0.362467 0.714681 +v -0.471517 0.362467 0.714681 +v -0.529487 0.342665 0.697456 +v 0.565511 0.281304 0.679281 +v 0.540365 0.308268 0.677246 +v -0.540365 0.308268 0.677246 +v -0.565511 0.281304 0.679281 +v 0.548476 0.201199 0.681342 +v 0.548503 0.245280 0.672689 +v -0.548503 0.245280 0.672689 +v -0.548476 0.201199 0.681342 +v 0.468804 0.118761 0.707791 +v 0.502279 0.164876 0.687988 +v -0.502279 0.164876 0.687988 +v -0.468804 0.118761 0.707791 +v 0.367160 0.086833 0.735135 +v 0.416992 0.104329 0.714844 +v -0.416992 0.104329 0.714844 +v -0.367160 0.086833 0.735135 +v 0.251166 0.117757 0.761149 +v 0.309570 0.107096 0.741537 +v -0.309570 0.107096 0.741537 +v -0.251166 0.117757 0.761149 +v 0.199680 0.166016 0.762614 +v 0.225260 0.148763 0.753255 +v -0.225260 0.148763 0.753255 +v -0.199680 0.166016 0.762614 +v 0.192030 0.296414 0.768039 +v 0.215820 0.327474 0.757813 +v -0.215820 0.327474 0.757813 +v -0.192030 0.296414 0.768039 +v 0.185818 0.225288 0.764567 +v 0.196289 0.261882 0.753906 +v -0.196289 0.261882 0.753906 +v -0.185818 0.225288 0.764567 +v 0.200033 0.199707 0.750326 +v -0.200033 0.199707 0.750326 +v -0.000000 0.438386 0.675673 +v 0.090738 0.502255 0.679807 +v 0.048995 0.458757 0.623451 +v -0.048995 0.458757 0.623451 +v -0.090738 0.502255 0.679807 +v 0.188874 0.657249 0.685140 +v 0.185040 0.577115 0.630477 +v -0.185040 0.577115 0.630477 +v -0.188874 0.657249 0.685140 +v 0.327697 0.689205 0.664414 +v 0.266490 0.654885 0.628294 +v -0.266490 0.654885 0.628295 +v -0.327697 0.689205 0.664414 +v 0.490532 0.581079 0.618404 +v 0.369838 0.618360 0.602181 +v -0.369838 0.618360 0.602181 +v -0.490532 0.581079 0.618404 +v 0.681044 0.477051 0.562012 +v 0.574476 0.508257 0.518944 +v -0.574476 0.508257 0.518944 +v -0.681044 0.477051 0.562012 +v 0.798503 0.382243 0.511203 +v 0.732259 0.431369 0.469618 +v -0.732259 0.431369 0.469618 +v -0.798503 0.382243 0.511203 +v 0.774170 0.172282 0.437364 +v 0.789632 0.288764 0.399061 +v -0.789632 0.288764 0.399061 +v -0.774170 0.172282 0.437364 +v 0.619141 -0.005371 0.464627 +v 0.708143 0.082275 0.359158 +v -0.708143 0.082275 0.359158 +v -0.619141 -0.005371 0.464627 +v 0.426048 -0.111362 0.500414 +v 0.528040 -0.062711 0.403472 +v -0.528040 -0.062711 0.403472 +v -0.426048 -0.111362 0.500414 +v 0.067952 -0.573107 0.332275 +v 0.000000 -0.514703 0.301812 +v 0.085449 -0.460178 0.268446 +v 0.142660 -0.480496 0.320882 +v -0.142660 -0.480496 0.320882 +v -0.085449 -0.460178 0.268446 +v -0.067952 -0.573107 0.332275 +v 0.071072 -0.771674 0.369059 +v 0.000000 -0.676107 0.343316 +v 0.134630 -0.649143 0.361925 +v -0.134630 -0.649143 0.361925 +v -0.071072 -0.771674 0.369059 +v 0.081299 -0.932265 0.452203 +v 0.000000 -0.873101 0.404405 +v 0.152859 -0.847439 0.402696 +v -0.152859 -0.847439 0.402696 +v -0.081299 -0.932265 0.452203 +v 0.168267 -0.951687 0.494385 +v 0.000000 -0.968153 0.511014 +v -0.168267 -0.951687 0.494385 +v 0.297704 -0.910123 0.469745 +v 0.237021 -0.901212 0.433368 +v -0.237021 -0.901212 0.433368 +v -0.297704 -0.910123 0.469745 +v 0.318414 -0.788249 0.464030 +v 0.285877 -0.831089 0.417661 +v -0.285877 -0.831089 0.417661 +v -0.318414 -0.788249 0.464030 +v 0.296224 -0.598470 0.479438 +v 0.262044 -0.644152 0.410455 +v -0.262044 -0.644152 0.410455 +v -0.296224 -0.598470 0.479438 +v 0.213976 -0.735270 0.384901 +v 0.194417 -0.537028 0.370877 +v -0.194417 -0.537028 0.370877 +v -0.213976 -0.735270 0.384901 +v 0.202989 -0.401096 0.336941 +v 0.242540 -0.460558 0.411838 +v -0.242540 -0.460558 0.411838 +v -0.202989 -0.401096 0.336941 +v 0.268880 -0.413629 0.487440 +v -0.268880 -0.413629 0.487440 +v 0.241671 -0.302922 0.492069 +v 0.252513 -0.240557 0.441998 +v 0.224564 -0.235623 0.514251 +v -0.224564 -0.235623 0.514251 +v -0.252513 -0.240557 0.441998 +v -0.241671 -0.302922 0.492069 +v 0.232932 -0.340750 0.406656 +v -0.232932 -0.340750 0.406656 +v 0.246408 -0.177480 0.527377 +v 0.241118 -0.190473 0.493333 +v -0.241118 -0.190473 0.493333 +v -0.246408 -0.177480 0.527377 +v 0.313356 -0.148515 0.489019 +v -0.313357 -0.148515 0.489019 +v 0.000000 -0.051541 -0.694770 +v 0.174335 0.095486 -0.722729 +v 0.302626 -0.036296 -0.614149 +v 0.162941 -0.158746 -0.576353 +v -0.162941 -0.158746 -0.576353 +v -0.302626 -0.036296 -0.614149 +v -0.174334 0.095486 -0.722729 +v 0.000000 -0.266059 -0.467828 +v 0.287996 -0.213840 -0.409985 +v 0.142144 -0.327013 -0.275092 +v -0.142144 -0.327013 -0.275092 +v -0.287996 -0.213840 -0.409984 +v 0.000000 -0.395182 -0.076009 +v 0.238980 -0.332279 -0.052839 +v 0.108573 -0.411733 0.114971 +v -0.108573 -0.411733 0.114971 +v -0.238980 -0.332279 -0.052839 +v 0.000000 -0.449653 0.217339 +v 0.171163 -0.399404 0.242788 +v -0.171163 -0.399404 0.242788 +v 0.234653 -0.324261 0.283142 +v -0.234653 -0.324261 0.283142 +v 0.781359 0.198242 0.249240 +v 0.652072 -0.006337 0.244161 +v 0.768825 0.102902 0.099752 +v -0.768825 0.102902 0.099752 +v -0.652072 -0.006337 0.244161 +v -0.781359 0.198242 0.249240 +v 0.000000 0.295519 -0.778266 +v 0.213596 0.486708 -0.715034 +v 0.357169 0.250543 -0.681957 +v -0.357169 0.250543 -0.681957 +v -0.213596 0.486708 -0.715034 +v 0.000000 0.916016 0.094238 +v 0.221598 0.830051 0.240777 +v 0.408936 0.863770 0.058187 +v 0.221029 0.926297 -0.085422 +v -0.221029 0.926297 -0.085422 +v -0.408936 0.863770 0.058187 +v -0.221598 0.830051 0.240777 +v 0.000000 0.917698 -0.283095 +v 0.408881 0.865099 -0.256131 +v 0.221544 0.826715 -0.449897 +v -0.221544 0.826715 -0.449897 +v -0.408881 0.865099 -0.256131 +v 0.000000 0.696560 -0.637858 +v 0.407308 0.633952 -0.556858 +v -0.407308 0.633952 -0.556858 +v 0.644233 0.465468 0.404460 +v 0.754801 0.383274 0.364366 +v 0.694119 0.461317 0.298231 +v -0.694119 0.461317 0.298231 +v -0.754801 0.383274 0.364366 +v -0.644233 0.465468 0.404460 +v 0.628581 0.581950 0.204156 +v 0.757243 0.466200 0.181098 +v 0.709771 0.605387 0.085069 +v -0.709771 0.605387 0.085069 +v -0.757243 0.466200 0.181098 +v -0.628581 0.581950 0.204156 +v 0.635091 0.724501 -0.033393 +v 0.776801 0.563477 -0.030924 +v 0.715305 0.660617 -0.155735 +v -0.715305 0.660617 -0.155735 +v -0.776801 0.563477 -0.030924 +v -0.635091 0.724501 -0.033393 +v 0.635037 0.714220 -0.288981 +v 0.768467 0.551491 -0.260986 +v 0.709331 0.571782 -0.377374 +v -0.709331 0.571782 -0.377374 +v -0.768467 0.551491 -0.260986 +v -0.635037 0.714220 -0.288981 +v 0.760505 0.426538 -0.377108 +v 0.676744 0.304273 -0.487514 +v 0.623562 0.506673 -0.494548 +v -0.623562 0.506673 -0.494548 +v -0.676744 0.304273 -0.487514 +v -0.760505 0.426538 -0.377108 +v 0.512994 0.391059 -0.600044 +v 0.539361 0.717828 -0.406440 +v -0.539361 0.717828 -0.406440 +v -0.512994 0.391059 -0.600043 +v 0.540690 0.816569 -0.132324 +v -0.540690 0.816569 -0.132324 +v 0.540446 0.738010 0.136122 +v -0.540446 0.738010 0.136122 +v 0.411675 0.678684 0.317193 +v 0.545708 0.538249 0.351535 +v -0.545709 0.538249 0.351535 +v -0.411675 0.678684 0.317193 +v 0.433566 0.530826 0.489118 +v -0.433566 0.530826 0.489118 +v -0.000000 0.716542 0.395399 +v 0.235130 0.589742 0.473158 +v -0.235130 0.589742 0.473158 +v 0.282537 0.539374 0.575229 +v -0.282537 0.539374 0.575229 +v 0.108633 0.512475 0.575030 +v -0.108633 0.512475 0.575030 +v 0.000000 0.486417 0.590088 +v 0.789985 0.330349 0.205756 +v -0.789985 0.330349 0.205756 +v 0.817860 0.261058 0.041852 +v 0.813818 0.423303 0.028153 +v -0.813818 0.423303 0.028153 +v -0.817860 0.261058 0.041852 +v 0.828772 0.349030 -0.119958 +v 0.805806 0.457859 -0.169039 +v -0.805806 0.457859 -0.169039 +v -0.828772 0.349030 -0.119958 +v 0.806308 0.352328 -0.305045 +v -0.806308 0.352328 -0.305045 +v 0.307366 -0.276005 0.129492 +v 0.360541 -0.226644 -0.224094 +v 0.430293 -0.190620 -0.034945 +v -0.430293 -0.190620 -0.034945 +v -0.360541 -0.226644 -0.224094 +v -0.307366 -0.276005 0.129492 +v 0.637655 -0.084141 -0.054912 +v 0.550699 -0.107208 0.115755 +v 0.530138 -0.126753 -0.188287 +v -0.530138 -0.126753 -0.188287 +v -0.550699 -0.107208 0.115755 +v -0.637655 -0.084141 -0.054912 +v 0.424266 -0.138150 0.316964 +v -0.424266 -0.138150 0.316964 +v 0.312364 -0.171068 0.445935 +v 0.306987 -0.234928 0.298853 +v -0.306987 -0.234928 0.298853 +v -0.312364 -0.171068 0.445935 +v 0.701375 0.139193 -0.432962 +v 0.574620 0.025146 -0.443816 +v 0.549279 0.181247 -0.556103 +v -0.549279 0.181247 -0.556103 +v -0.574620 0.025146 -0.443816 +v -0.701375 0.139193 -0.432962 +v 0.417832 0.069567 -0.600803 +v -0.417832 0.069567 -0.600803 +v 0.622559 -0.072351 -0.294881 +v 0.461334 -0.100016 -0.365700 +v -0.461334 -0.100016 -0.365700 +v -0.622559 -0.072351 -0.294881 +v 0.394028 -0.075033 -0.510376 +v -0.394028 -0.075033 -0.510376 +v 1.032634 0.437256 -0.310710 +v 0.959147 0.425971 -0.298692 +v 0.912679 0.379015 -0.240560 +v 0.971517 0.384440 -0.270643 +v -0.971517 0.384440 -0.270643 +v -0.912679 0.379015 -0.240560 +v -0.959147 0.425971 -0.298692 +v -1.032634 0.437256 -0.310710 +v 1.125217 0.469537 -0.385579 +v 1.105143 0.420247 -0.352919 +v 1.195285 0.437880 -0.393609 +v -1.195285 0.437880 -0.393609 +v -1.105143 0.420247 -0.352919 +v -1.125217 0.469537 -0.385579 +v 1.278836 0.394504 -0.433024 +v 1.228923 0.357096 -0.407471 +v 1.281711 0.291748 -0.416124 +v -1.281711 0.291748 -0.416124 +v -1.228923 0.357096 -0.407471 +v -1.278836 0.394504 -0.433024 +v 1.300049 0.185547 -0.435710 +v 1.241184 0.182888 -0.413737 +v 1.221436 0.083523 -0.403537 +v -1.221436 0.083523 -0.403537 +v -1.241184 0.182888 -0.413737 +v -1.300049 0.185547 -0.435710 +v 1.152344 -0.010498 -0.392931 +v 1.123183 0.020671 -0.364176 +v 1.031630 -0.052355 -0.306695 +v -1.031630 -0.052355 -0.306695 +v -1.123183 0.020671 -0.364176 +v -1.152344 -0.010498 -0.392931 +v 0.913005 -0.103570 -0.258789 +v 0.932455 -0.055366 -0.234701 +v 0.817247 -0.092909 -0.172635 +v -0.817247 -0.092909 -0.172635 +v -0.932454 -0.055366 -0.234701 +v -0.913005 -0.103570 -0.258789 +v 1.032905 -0.007704 -0.325033 +v 0.958035 -0.015951 -0.289307 +v 0.869303 -0.039198 -0.208740 +v -0.869303 -0.039198 -0.208740 +v -0.958035 -0.015951 -0.289307 +v -1.032905 -0.007704 -0.325033 +v 1.182075 0.098389 -0.412164 +v 1.114746 0.044623 -0.402317 +v -1.114746 0.044623 -0.402317 +v -1.182075 0.098389 -0.412164 +v 1.231879 0.260824 -0.425184 +v 1.214762 0.172906 -0.444119 +v -1.214762 0.172906 -0.444119 +v -1.231879 0.260824 -0.425184 +v 1.166043 0.374702 -0.402615 +v 1.206109 0.308702 -0.440348 +v -1.206109 0.308702 -0.440348 +v -1.166043 0.374702 -0.402615 +v 1.032362 0.375298 -0.329074 +v 1.100586 0.358073 -0.395861 +v -1.100586 0.358073 -0.395861 +v -1.032362 0.375298 -0.329074 +v 0.936524 0.329481 -0.264431 +v 0.985650 0.331082 -0.322862 +v -0.985650 0.331082 -0.322862 +v -0.936524 0.329481 -0.264431 +v 0.733787 0.016047 -0.022830 +v 0.689592 -0.070129 -0.140469 +v 0.718188 -0.012106 -0.118053 +v -0.718188 -0.012106 -0.118053 +v -0.689592 -0.070129 -0.140469 +v -0.733787 0.016047 -0.022830 +v 0.706517 -0.107399 -0.185872 +v 0.775267 -0.054265 -0.167971 +v -0.775267 -0.054265 -0.167971 +v -0.706517 -0.107399 -0.185872 +v 0.786348 0.147524 -0.062690 +v -0.786348 0.147524 -0.062690 +v 0.856045 0.357476 -0.247761 +v 0.843119 0.314860 -0.200343 +v 0.885444 0.322591 -0.226888 +v -0.885444 0.322591 -0.226888 +v -0.843119 0.314860 -0.200343 +v -0.856045 0.357476 -0.247761 +v 0.839301 -0.022190 -0.239041 +v 0.781104 -0.017350 -0.214796 +v -0.781104 -0.017350 -0.214796 +v -0.839301 -0.022190 -0.239041 +v 0.811876 0.002414 -0.264730 +v 0.780430 0.031715 -0.235542 +v 0.738369 0.007248 -0.181629 +v -0.738369 0.007248 -0.181629 +v -0.780430 0.031715 -0.235542 +v -0.811876 0.002414 -0.264730 +v 0.790377 0.079754 -0.274723 +v 0.766075 0.082378 -0.238019 +v 0.816527 0.051298 -0.274587 +v -0.816527 0.051298 -0.274587 +v -0.766076 0.082378 -0.238019 +v -0.790377 0.079754 -0.274723 +v 0.794271 0.132107 -0.269070 +v 0.812799 0.181939 -0.237874 +v 0.771546 0.129289 -0.189643 +v -0.771546 0.129289 -0.189643 +v -0.812798 0.181939 -0.237874 +v -0.794271 0.132107 -0.269070 +v 0.869629 0.264621 -0.242025 +v 0.830431 0.250407 -0.206435 +v 0.856391 0.212267 -0.268582 +v -0.856391 0.212267 -0.268582 +v -0.830431 0.250407 -0.206434 +v -0.869629 0.264621 -0.242025 +v 0.913384 0.279324 -0.277615 +v -0.913384 0.279324 -0.277615 +v 0.812340 0.232860 -0.138324 +v -0.812340 0.232860 -0.138324 +v 0.740802 0.053018 -0.134472 +v -0.740803 0.053018 -0.134472 +v 0.953885 0.293620 -0.323269 +v 0.892415 0.236654 -0.296875 +v 0.932916 0.253391 -0.329346 +v -0.932916 0.253391 -0.329346 +v -0.892415 0.236654 -0.296875 +v -0.953885 0.293620 -0.323269 +v 0.835558 0.169189 -0.295085 +v 0.875977 0.193088 -0.315565 +v -0.875977 0.193088 -0.315565 +v -0.835558 0.169189 -0.295085 +v 0.786380 0.104518 -0.295009 +v 0.815189 0.128240 -0.312547 +v -0.815189 0.128240 -0.312547 +v -0.786380 0.104518 -0.295009 +v 0.818263 0.072932 -0.296981 +v 0.809519 0.095322 -0.312520 +v -0.809519 0.095322 -0.312520 +v -0.818263 0.072932 -0.296981 +v 0.837267 0.022569 -0.295383 +v 0.848823 0.053684 -0.314182 +v -0.848823 0.053684 -0.314182 +v -0.837267 0.022569 -0.295383 +v 0.829805 -0.010515 -0.284293 +v 0.845268 0.005531 -0.307812 +v -0.845268 0.005531 -0.307812 +v -0.829805 -0.010515 -0.284293 +v 0.897407 -0.014811 -0.273221 +v 0.859794 -0.006147 -0.292010 +v -0.859794 -0.006147 -0.292010 +v -0.897407 -0.014811 -0.273221 +v 1.042761 0.332420 -0.385579 +v 1.004648 0.301306 -0.371338 +v -1.004648 0.301306 -0.371338 +v -1.042761 0.332420 -0.385579 +v 1.164614 0.331715 -0.447239 +v 1.106825 0.327908 -0.432292 +v -1.106825 0.327908 -0.432292 +v -1.164614 0.331715 -0.447239 +v 1.224826 0.238064 -0.463867 +v 1.195050 0.283538 -0.462945 +v -1.195050 0.283538 -0.462945 +v -1.224826 0.238064 -0.463867 +v 1.178548 0.102431 -0.450928 +v 1.200819 0.171495 -0.462864 +v -1.200819 0.171495 -0.462864 +v -1.178548 0.102431 -0.450928 +v 1.041097 0.013319 -0.378065 +v 1.107341 0.064779 -0.429606 +v -1.107341 0.064779 -0.429606 +v -1.041097 0.013319 -0.378065 +v 0.966309 0.010064 -0.338053 +v -0.966309 0.010064 -0.338053 +v 0.857313 0.092556 -0.323676 +v 0.882406 0.040229 -0.321696 +v 0.910916 0.089355 -0.333632 +v -0.910916 0.089355 -0.333632 +v -0.882406 0.040229 -0.321696 +v -0.857314 0.092556 -0.323676 +v 0.922906 0.143636 -0.338840 +v 0.960802 0.085259 -0.348769 +v 0.978163 0.147352 -0.358371 +v -0.978163 0.147352 -0.358371 +v -0.960802 0.085259 -0.348769 +v -0.922906 0.143636 -0.338840 +v 0.983833 0.204536 -0.360080 +v 1.037245 0.145047 -0.385200 +v 1.038032 0.205160 -0.379096 +v -1.038032 0.205160 -0.379096 +v -1.037245 0.145047 -0.385200 +v -0.983833 0.204536 -0.360080 +v 1.047861 0.253671 -0.384060 +v 1.101570 0.202231 -0.403783 +v 1.107968 0.246240 -0.406292 +v -1.107967 0.246240 -0.406292 +v -1.101570 0.202231 -0.403783 +v -1.047861 0.253671 -0.384060 +v 1.065511 0.298584 -0.404378 +v 0.988227 0.257731 -0.361654 +v -0.988227 0.257731 -0.361654 +v -1.065511 0.298584 -0.404378 +v 0.926568 0.201660 -0.337050 +v -0.926568 0.201660 -0.337050 +v 0.865967 0.140923 -0.324680 +v -0.865967 0.140923 -0.324680 +v 0.915120 0.026964 -0.318386 +v -0.915121 0.026964 -0.318387 +v 1.021756 0.069336 -0.384060 +v -1.021756 0.069336 -0.384060 +v 1.121853 0.140489 -0.427327 +v -1.121853 0.140489 -0.427328 +v 1.167190 0.226116 -0.439428 +v -1.167190 0.226116 -0.439428 +v 1.130507 0.296902 -0.433729 +v -1.130507 0.296902 -0.433729 +v 1.038710 -0.063856 -0.391032 +v 0.799425 -0.103868 -0.269694 +v 0.919759 -0.018256 -0.386312 +v -0.919759 -0.018256 -0.386312 +v -0.799425 -0.103868 -0.269694 +v -1.038710 -0.063856 -0.391032 +v 1.261900 0.080187 -0.465314 +v 1.162914 0.063938 -0.486364 +v -1.162914 0.063938 -0.486364 +v -1.261900 0.080187 -0.465314 +v 1.325935 0.295174 -0.467527 +v 1.316929 0.212057 -0.502927 +v -1.316929 0.212057 -0.502927 +v -1.325935 0.295174 -0.467527 +v 1.225007 0.444173 -0.465477 +v 1.299432 0.344639 -0.505653 +v -1.299432 0.344639 -0.505654 +v -1.225007 0.444173 -0.465477 +v 1.035183 0.440077 -0.397163 +v 1.140345 0.378092 -0.487314 +v -1.140345 0.378092 -0.487314 +v -1.035184 0.440077 -0.397163 +v 0.885824 0.377848 -0.324490 +v 0.942329 0.328966 -0.405382 +v -0.942329 0.328966 -0.405382 +v -0.885824 0.377848 -0.324490 +v 1.038303 0.182780 -0.467936 +v 0.839410 0.136719 -0.382840 +v -0.839410 0.136719 -0.382840 +v -1.038303 0.182780 -0.467936 +v 1.249566 0.252577 -0.520861 +v -1.249566 0.252577 -0.520860 +v 0.807793 0.272250 -0.377447 +v -0.807793 0.272250 -0.377447 +v 0.728244 -0.011095 -0.350694 +v -0.728244 -0.011095 -0.350694 +v 0.490041 0.186537 0.719489 +v -0.490041 0.186537 0.719489 +v 0.553073 0.160645 0.625482 +v -0.553074 0.160645 0.625482 +v 0.435225 0.044820 0.649906 +v -0.435225 0.044820 0.649906 +v 0.409326 0.107615 0.736657 +v -0.409326 0.107615 0.736657 +v 0.295831 0.107615 0.757728 +v -0.295831 0.107615 0.757728 +v 0.267985 0.044820 0.680183 +v -0.267985 0.044820 0.680183 +v 0.150211 0.160645 0.695879 +v -0.150211 0.160645 0.695879 +v 0.216831 0.186537 0.767734 +v -0.216831 0.186537 0.767734 +v 0.216831 0.299957 0.767734 +v -0.216831 0.299957 0.767734 +v 0.150211 0.325935 0.695879 +v -0.150211 0.325935 0.695879 +v 0.267985 0.443698 0.680183 +v -0.267985 0.443699 0.680183 +v 0.295831 0.380744 0.757728 +v -0.295831 0.380744 0.757728 +v 0.409326 0.380744 0.736657 +v -0.409326 0.380744 0.736657 +v 0.435225 0.443698 0.649906 +v -0.435225 0.443699 0.649906 +v 0.553073 0.325935 0.625482 +v -0.553073 0.325935 0.625481 +v 0.490041 0.299957 0.719489 +v -0.490041 0.299957 0.719489 +v 0.454486 0.286075 0.769157 +v -0.454486 0.286075 0.769157 +v 0.395371 0.346926 0.782428 +v -0.395371 0.346926 0.782428 +v 0.311598 0.346926 0.799389 +v -0.311598 0.346926 0.799389 +v 0.254199 0.286075 0.807248 +v -0.254199 0.286075 0.807248 +v 0.254199 0.202223 0.807248 +v -0.254199 0.202223 0.807248 +v 0.311598 0.144824 0.799389 +v -0.311598 0.144824 0.799389 +v 0.395371 0.144824 0.782428 +v -0.395371 0.144824 0.782428 +v 0.454486 0.202223 0.769157 +v -0.454486 0.202223 0.769157 +v 0.422494 0.214486 0.793859 +v -0.422494 0.214486 0.793859 +v 0.381936 0.174040 0.803802 +v -0.381936 0.174040 0.803802 +v 0.323853 0.174040 0.816225 +v -0.323853 0.174040 0.816225 +v 0.283407 0.214486 0.821614 +v -0.283407 0.214486 0.821615 +v 0.283407 0.272710 0.821615 +v -0.283407 0.272710 0.821615 +v 0.323853 0.315489 0.816225 +v -0.323853 0.315489 0.816225 +v 0.381936 0.315489 0.803802 +v -0.381936 0.315489 0.803803 +v 0.422494 0.272710 0.793859 +v -0.422494 0.272710 0.793859 +v 0.083466 -0.954895 0.599620 +v -0.083466 -0.954895 0.599620 +v 0.221273 -0.936290 0.585592 +v -0.221273 -0.936290 0.585592 +v 0.292562 -0.885708 0.587538 +v -0.292562 -0.885708 0.587538 +v 0.302226 -0.768521 0.610938 +v -0.302226 -0.768521 0.610938 +v 0.276076 -0.567773 0.631304 +v -0.276076 -0.567773 0.631304 +v 0.295484 -0.115736 0.642072 +v -0.295484 -0.115736 0.642072 +v 0.517541 -0.038876 0.591207 +v -0.517541 -0.038876 0.591207 +v 0.694146 0.094872 0.554169 +v -0.694146 0.094872 0.554169 +v 0.780457 0.285516 0.574741 +v -0.780457 0.285516 0.574741 +v 0.741747 0.421882 0.646203 +v -0.741747 0.421882 0.646203 +v 0.579671 0.510939 0.704603 +v -0.579671 0.510939 0.704603 +v 0.392802 0.629445 0.758063 +v -0.392802 0.629446 0.758064 +v 0.250315 0.672221 0.789002 +v -0.250315 0.672221 0.789001 +v 0.134016 0.561011 0.795417 +v -0.134016 0.561011 0.795417 +v 0.043345 0.429640 0.785332 +v -0.043345 0.429640 0.785332 +v 0.180050 0.481635 0.804287 +v -0.180050 0.481635 0.804287 +v 0.273790 0.548140 0.794607 +v -0.273790 0.548140 0.794607 +v 0.380001 0.523933 0.770993 +v -0.380001 0.523933 0.770993 +v 0.538025 0.444197 0.725023 +v -0.538025 0.444197 0.725023 +v 0.663761 0.365262 0.673547 +v -0.663761 0.365261 0.673547 +v 0.681257 0.263994 0.638526 +v -0.681257 0.263994 0.638526 +v 0.612651 0.127323 0.636410 +v -0.612651 0.127323 0.636410 +v 0.469045 0.023512 0.667803 +v -0.469045 0.023512 0.667803 +v 0.278078 -0.008243 0.728331 +v -0.278078 -0.008243 0.728331 +v 0.126433 0.044161 0.756531 +v -0.126433 0.044161 0.756531 +v 0.099575 0.376184 0.798777 +v -0.099575 0.376184 0.798777 +v 0.064185 0.269098 0.777106 +v -0.064185 0.269098 0.777106 +v 0.073018 0.153129 0.751911 +v -0.073018 0.153129 0.751911 +v 0.055613 -0.911699 0.662659 +v -0.055613 -0.911699 0.662659 +v 0.143155 -0.889113 0.666501 +v -0.143155 -0.889113 0.666501 +v 0.181429 -0.822323 0.683162 +v -0.181429 -0.822323 0.683162 +v 0.163971 -0.568682 0.717679 +v -0.163971 -0.568682 0.717678 +v 0.184159 -0.730225 0.702409 +v -0.184159 -0.730225 0.702409 +v 0.042190 -0.381135 0.745845 +v -0.042190 -0.381135 0.745845 +v 0.049554 -0.563076 0.741123 +v -0.049554 -0.563076 0.741123 +v 0.056704 -0.709154 0.733286 +v -0.056704 -0.709154 0.733286 +v 0.107932 -0.253500 0.767214 +v -0.107932 -0.253500 0.767214 +v 0.114855 -0.184421 0.768273 +v -0.114855 -0.184421 0.768273 +v 0.062276 -0.138042 0.763376 +v -0.062276 -0.138042 0.763376 +v 0.010488 -0.160480 0.768974 +v -0.010488 -0.160480 0.768974 +v 0.043889 -0.302908 0.762474 +v -0.043889 -0.302908 0.762474 +v 0.041939 -0.280865 0.792963 +v -0.041939 -0.280865 0.792963 +v 0.022556 -0.165962 0.803512 +v -0.022556 -0.165962 0.803512 +v 0.071031 -0.144960 0.796838 +v -0.071031 -0.144960 0.796838 +v 0.107679 -0.186123 0.803347 +v -0.107679 -0.186123 0.803347 +v 0.099407 -0.243606 0.801515 +v -0.099407 -0.243606 0.801515 +v 0.061994 -0.183869 0.818119 +v -0.061994 -0.183869 0.818119 +v 0.045519 -0.241289 0.815105 +v -0.045519 -0.241289 0.815105 +v 0.057840 -0.086147 0.755838 +v -0.057840 -0.086147 0.755838 +v 0.128620 -0.179667 0.750233 +v -0.128620 -0.179667 0.750233 +v 0.139633 -0.268207 0.727148 +v -0.139633 -0.268207 0.727148 +v 0.139840 -0.376985 0.725219 +v -0.139840 -0.376985 0.725219 +v 0.237081 -0.379429 0.634213 +v -0.237081 -0.379428 0.634213 +v 0.207096 -0.278907 0.632599 +v -0.207096 -0.278907 0.632599 +v 0.185647 -0.194688 0.657297 +v -0.185647 -0.194688 0.657297 +v 0.049291 -0.750197 0.726772 +v -0.049291 -0.750197 0.726772 +v 0.103148 -0.782484 0.717433 +v -0.103148 -0.782484 0.717433 +v 0.081109 -0.850769 0.698744 +v -0.081109 -0.850769 0.698744 +v 0.028283 -0.878513 0.687642 +v -0.028283 -0.878513 0.687642 +v 0.024038 -0.860708 0.661125 +v -0.024038 -0.860708 0.661125 +v 0.069962 -0.835803 0.669020 +v -0.069962 -0.835803 0.669020 +v 0.090552 -0.783635 0.685093 +v -0.090552 -0.783635 0.685093 +v 0.044627 -0.764052 0.690842 +v -0.044627 -0.764052 0.690842 +v 0.034058 -0.810489 0.648895 +v -0.034058 -0.810489 0.648895 +v 0.075754 -0.805564 0.649704 +v -0.075754 -0.805564 0.649704 +v 0.162228 0.181695 0.765038 +v -0.162228 0.181695 0.765038 +v 0.151299 0.258894 0.771481 +v -0.151299 0.258894 0.771481 +v 0.169922 0.347449 0.775872 +v -0.169922 0.347449 0.775872 +v 0.196018 0.122494 0.761037 +v -0.196018 0.122494 0.761037 +v 0.295980 0.069970 0.741570 +v -0.295980 0.069970 0.741570 +v 0.430122 0.063751 0.708052 +v -0.430122 0.063751 0.708052 +v 0.542769 0.138343 0.679145 +v -0.542769 0.138343 0.679145 +v 0.605804 0.242401 0.666280 +v -0.605804 0.242401 0.666280 +v 0.595435 0.328142 0.675520 +v -0.595435 0.328142 0.675520 +v 0.503174 0.391232 0.713776 +v -0.503174 0.391232 0.713776 +v 0.380547 0.436727 0.748450 +v -0.380547 0.436727 0.748450 +v 0.296719 0.450124 0.759735 +v -0.296719 0.450124 0.759735 +v 0.224508 0.419461 0.772454 +v -0.224508 0.419461 0.772454 +v 0.250078 0.387851 0.768633 +v -0.250078 0.387851 0.768633 +v 0.306966 0.413171 0.761366 +v -0.306966 0.413171 0.761366 +v 0.378337 0.405589 0.755548 +v -0.378337 0.405589 0.755547 +v 0.481286 0.368808 0.723002 +v -0.481286 0.368808 0.723002 +v 0.556064 0.313897 0.683994 +v -0.556064 0.313897 0.683994 +v 0.564358 0.243479 0.677646 +v -0.564358 0.243479 0.677646 +v 0.514001 0.157060 0.692868 +v -0.514001 0.157060 0.692868 +v 0.420902 0.094181 0.721442 +v -0.420902 0.094181 0.721442 +v 0.305745 0.097168 0.750085 +v -0.305745 0.097168 0.750085 +v 0.217367 0.140940 0.763835 +v -0.217367 0.140940 0.763835 +v 0.205499 0.331702 0.768714 +v -0.205499 0.331702 0.768714 +v 0.185964 0.260098 0.766527 +v -0.185964 0.260098 0.766527 +v 0.190094 0.193932 0.762858 +v -0.190094 0.193932 0.762858 +v 0.043606 0.453352 0.677093 +v -0.043606 0.453352 0.677093 +v 0.137575 0.582376 0.684231 +v -0.137575 0.582376 0.684231 +v 0.254262 0.694391 0.677066 +v -0.254262 0.694391 0.677066 +v 0.404027 0.644248 0.644554 +v -0.404027 0.644248 0.644554 +v 0.588823 0.523528 0.588971 +v -0.588823 0.523528 0.588971 +v 0.754218 0.438955 0.540036 +v -0.754218 0.438955 0.540036 +v 0.805776 0.285197 0.468363 +v -0.805776 0.285197 0.468363 +v 0.706635 0.073476 0.441973 +v -0.706635 0.073476 0.441973 +v 0.526385 -0.065442 0.483498 +v -0.526385 -0.065442 0.483498 +v 0.075328 -0.504039 0.305132 +v -0.075328 -0.504039 0.305132 +v 0.067244 -0.667792 0.349264 +v -0.067244 -0.667792 0.349264 +v 0.076236 -0.865092 0.404232 +v -0.076236 -0.865092 0.404233 +v 0.085181 -0.963125 0.506168 +v -0.085181 -0.963125 0.506168 +v 0.244266 -0.936729 0.480406 +v -0.244266 -0.936729 0.480406 +v 0.319113 -0.860920 0.463197 +v -0.319113 -0.860920 0.463197 +v 0.308946 -0.697937 0.471083 +v -0.308946 -0.697937 0.471083 +v 0.201257 -0.632792 0.377797 +v -0.201257 -0.632792 0.377797 +v 0.227200 -0.830694 0.401816 +v -0.227200 -0.830694 0.401816 +v 0.196649 -0.458635 0.356177 +v -0.196649 -0.458635 0.356177 +v 0.282979 -0.499498 0.484751 +v -0.282979 -0.499498 0.484751 +v 0.233118 -0.266116 0.502304 +v -0.233118 -0.266116 0.502304 +v 0.253903 -0.350128 0.488991 +v -0.253903 -0.350127 0.488991 +v 0.219944 -0.206557 0.524375 +v -0.219944 -0.206557 0.524375 +v 0.322432 -0.147040 0.517925 +v -0.322432 -0.147040 0.517925 +v 0.165880 -0.047906 -0.666301 +v -0.165880 -0.047906 -0.666301 +v 0.155384 -0.252370 -0.447129 +v -0.155384 -0.252370 -0.447129 +v 0.125203 -0.378636 -0.068659 +v -0.125203 -0.378636 -0.068659 +v 0.095147 -0.434554 0.217911 +v -0.095147 -0.434554 0.217911 +v 0.210631 -0.362224 0.315757 +v -0.210631 -0.362224 0.315757 +v 0.735134 0.090335 0.232339 +v -0.735134 0.090335 0.232339 +v 0.194060 0.281515 -0.746737 +v -0.194060 0.281514 -0.746737 +v 0.221100 0.903198 0.086985 +v -0.221100 0.903198 0.086985 +v 0.221093 0.905528 -0.269185 +v -0.221093 0.905528 -0.269185 +v 0.221324 0.679193 -0.608568 +v -0.221324 0.679192 -0.608568 +v 0.707960 0.431959 0.389194 +v -0.707960 0.431959 0.389194 +v 0.698558 0.530250 0.196350 +v -0.698558 0.530250 0.196350 +v 0.714939 0.650316 -0.033369 +v -0.714939 0.650316 -0.033369 +v 0.713998 0.637622 -0.275835 +v -0.713998 0.637622 -0.275835 +v 0.701191 0.452734 -0.447765 +v -0.701191 0.452734 -0.447765 +v 0.534071 0.571838 -0.523393 +v -0.534071 0.571838 -0.523393 +v 0.540524 0.795315 -0.272485 +v -0.540524 0.795315 -0.272485 +v 0.540660 0.799425 0.006395 +v -0.540660 0.799425 0.006395 +v 0.540738 0.633409 0.250960 +v -0.540738 0.633409 0.250960 +v 0.558380 0.501942 0.440154 +v -0.558380 0.501942 0.440154 +v 0.223789 0.707947 0.371260 +v -0.223789 0.707947 0.371260 +v 0.279076 0.594031 0.600035 +v -0.279076 0.594031 0.600035 +v 0.264055 0.533733 0.535880 +v -0.264055 0.533733 0.535880 +v 0.043831 0.482234 0.594812 +v -0.043831 0.482234 0.594812 +v 0.783878 0.301693 0.305827 +v -0.783878 0.301693 0.305827 +v 0.803067 0.376510 0.115901 +v -0.803067 0.376510 0.115901 +v 0.813537 0.453482 -0.065614 +v -0.813537 0.453482 -0.065614 +v 0.792182 0.441368 -0.278844 +v -0.792182 0.441368 -0.278844 +v 0.335332 -0.263090 -0.042816 +v -0.335332 -0.263090 -0.042816 +v 0.539466 -0.131719 -0.039594 +v -0.539466 -0.131719 -0.039594 +v 0.542417 -0.078372 0.273223 +v -0.542417 -0.078372 0.273223 +v 0.320816 -0.194374 0.377783 +v -0.320816 -0.194374 0.377783 +v 0.280628 -0.279938 0.242705 +v -0.280628 -0.279938 0.242705 +v 0.286245 -0.166731 0.477754 +v -0.286245 -0.166731 0.477755 +v 0.627542 0.156363 -0.492076 +v -0.627542 0.156363 -0.492076 +v 0.468543 0.215902 -0.618937 +v -0.468543 0.215902 -0.618937 +v 0.541211 -0.073111 -0.331983 +v -0.541211 -0.073111 -0.331983 +v 0.383582 -0.156565 -0.385386 +v -0.383582 -0.156565 -0.385386 +v 0.380666 -0.019135 -0.579610 +v -0.380666 -0.019135 -0.579610 +v 0.965332 0.411116 -0.270264 +v -0.965332 0.411116 -0.270264 +v 1.114977 0.451860 -0.356411 +v -1.114977 0.451860 -0.356411 +v 1.254327 0.381304 -0.411092 +v -1.254327 0.381304 -0.411092 +v 1.270840 0.185703 -0.416484 +v -1.270840 0.185703 -0.416484 +v 1.137224 0.002981 -0.367038 +v -1.137224 0.002981 -0.367038 +v 0.920197 -0.083160 -0.230876 +v -0.920197 -0.083160 -0.230876 +v 0.946455 -0.031742 -0.258128 +v -0.946455 -0.031742 -0.258128 +v 1.115618 0.035506 -0.378893 +v -1.115618 0.035506 -0.378893 +v 1.221788 0.178141 -0.424981 +v -1.221788 0.178141 -0.424981 +v 1.212216 0.330539 -0.419515 +v -1.212216 0.330539 -0.419515 +v 1.100179 0.386047 -0.369537 +v -1.100179 0.386047 -0.369537 +v 0.978533 0.355309 -0.292145 +v -0.978533 0.355309 -0.292145 +v 0.693917 -0.044363 -0.083945 +v -0.693917 -0.044363 -0.083945 +v 0.736002 -0.086328 -0.155783 +v -0.736002 -0.086328 -0.155783 +v 0.786423 0.128939 0.006842 +v -0.786423 0.128939 0.006842 +v 0.871194 0.344740 -0.221652 +v -0.871194 0.344740 -0.221652 +v 0.812723 -0.033223 -0.201427 +v -0.812724 -0.033223 -0.201427 +v 0.775182 0.004718 -0.225624 +v -0.775182 0.004718 -0.225624 +v 0.786391 0.059641 -0.253464 +v -0.786391 0.059641 -0.253464 +v 0.780888 0.128708 -0.235181 +v -0.780888 0.128708 -0.235181 +v 0.842017 0.226902 -0.239614 +v -0.842017 0.226902 -0.239614 +v 0.900696 0.298872 -0.248793 +v -0.900696 0.298872 -0.248793 +v 0.829524 0.285890 -0.167210 +v -0.829525 0.285890 -0.167210 +v 0.776391 0.140687 -0.129827 +v -0.776391 0.140687 -0.129827 +v 0.726315 0.010103 -0.144003 +v -0.726315 0.010103 -0.144003 +v 0.921217 0.266846 -0.305545 +v -0.921217 0.266846 -0.305545 +v 0.865167 0.204173 -0.294576 +v -0.865167 0.204173 -0.294576 +v 0.803637 0.133104 -0.295256 +v -0.803637 0.133104 -0.295256 +v 0.796292 0.087965 -0.296048 +v -0.796292 0.087965 -0.296048 +v 0.833621 0.049341 -0.296281 +v -0.833621 0.049341 -0.296281 +v 0.830491 0.002020 -0.293275 +v -0.830491 0.002020 -0.293275 +v 0.851281 -0.015924 -0.269400 +v -0.851281 -0.015924 -0.269400 +v 0.992867 0.315682 -0.351240 +v -0.992867 0.315682 -0.351240 +v 1.104784 0.341302 -0.420414 +v -1.104784 0.341302 -0.420414 +v 1.206761 0.295466 -0.460324 +v -1.206761 0.295466 -0.460324 +v 1.215461 0.169271 -0.462250 +v -1.215461 0.169271 -0.462250 +v 1.116811 0.049503 -0.423876 +v -1.116811 0.049503 -0.423876 +v 0.964054 -0.006595 -0.317739 +v -0.964054 -0.006595 -0.317739 +v 0.876095 0.067440 -0.324995 +v -0.876095 0.067440 -0.324995 +v 0.945608 0.116869 -0.345351 +v -0.945608 0.116869 -0.345350 +v 1.008433 0.177975 -0.369771 +v -1.008433 0.177975 -0.369771 +v 1.069495 0.226727 -0.388269 +v -1.069495 0.226727 -0.388269 +v 1.024601 0.279867 -0.380605 +v -1.024601 0.279867 -0.380605 +v 0.956207 0.231191 -0.347409 +v -0.956207 0.231191 -0.347409 +v 0.897040 0.171058 -0.329664 +v -0.897041 0.171058 -0.329664 +v 0.834039 0.113681 -0.320677 +v -0.834039 0.113681 -0.320677 +v 0.872938 0.013695 -0.310290 +v -0.872938 0.013695 -0.310290 +v 0.966475 0.044935 -0.347510 +v -0.966475 0.044935 -0.347510 +v 1.075691 0.101729 -0.411055 +v -1.075691 0.101729 -0.411055 +v 1.154072 0.183041 -0.435866 +v -1.154072 0.183041 -0.435866 +v 1.156218 0.265839 -0.437955 +v -1.156218 0.265839 -0.437955 +v 1.102712 0.311813 -0.426885 +v -1.102712 0.311813 -0.426885 +v 0.913177 -0.096832 -0.321604 +v -0.913178 -0.096832 -0.321604 +v 1.162332 -0.004612 -0.440722 +v -1.162332 -0.004612 -0.440722 +v 1.317280 0.186125 -0.469587 +v -1.317280 0.186125 -0.469587 +v 1.293320 0.387019 -0.470767 +v -1.293320 0.387019 -0.470767 +v 1.132316 0.456662 -0.438396 +v -1.132316 0.456662 -0.438396 +v 0.951796 0.412666 -0.354672 +v -0.951796 0.412666 -0.354672 +v 0.930637 0.154439 -0.417382 +v -0.930637 0.154439 -0.417382 +v 1.152805 0.218970 -0.504459 +v -1.152805 0.218970 -0.504459 +v 1.300265 0.271792 -0.518747 +v -1.300265 0.271792 -0.518747 +v 0.837139 0.343399 -0.314129 +v -0.837139 0.343399 -0.314129 +v 0.767063 0.131054 -0.391162 +v -0.767063 0.131054 -0.391162 +v 0.705187 -0.089275 -0.267168 +v -0.705187 -0.089275 -0.267168 +vn 0.8035 -0.0013 0.5953 +vn 0.7575 -0.2569 0.6002 +vn 0.7236 -0.2425 0.6463 +vn 0.7684 -0.0008 0.6400 +vn 0.6159 -0.4966 0.6116 +vn 0.5895 -0.4598 0.6642 +vn 0.6226 -0.5110 0.5927 +vn 0.7664 -0.2694 0.5831 +vn 0.8143 -0.0010 0.5805 +vn -0.6226 -0.5110 0.5927 +vn -0.5895 -0.4598 0.6642 +vn -0.7236 -0.2425 0.6463 +vn -0.7664 -0.2694 0.5831 +vn -0.6159 -0.4966 0.6116 +vn -0.7575 -0.2569 0.6002 +vn -0.8035 -0.0013 0.5953 +vn -0.7684 -0.0008 0.6400 +vn -0.8143 -0.0010 0.5805 +vn 0.8124 -0.2988 0.5007 +vn 0.8642 -0.0013 0.5031 +vn 0.6548 -0.5685 0.4980 +vn 0.6767 -0.5727 0.4627 +vn 0.8306 -0.2988 0.4699 +vn 0.8804 -0.0001 0.4742 +vn -0.6767 -0.5727 0.4627 +vn -0.6548 -0.5685 0.4980 +vn -0.8124 -0.2988 0.5007 +vn -0.8306 -0.2988 0.4699 +vn -0.8642 -0.0013 0.5031 +vn -0.8804 -0.0001 0.4742 +vn 0.3959 -0.6874 0.6089 +vn 0.4043 -0.7678 0.4971 +vn 0.1101 -0.7677 0.6313 +vn 0.0878 -0.8575 0.5069 +vn 0.0982 -0.8843 0.4565 +vn 0.4245 -0.7835 0.4538 +vn -0.0982 -0.8843 0.4565 +vn -0.0878 -0.8575 0.5069 +vn -0.4043 -0.7678 0.4971 +vn -0.4245 -0.7835 0.4538 +vn -0.1101 -0.7677 0.6313 +vn -0.3959 -0.6874 0.6089 +vn 0.3955 -0.6713 0.6268 +vn 0.3832 -0.6136 0.6904 +vn 0.1221 -0.7533 0.6463 +vn 0.1296 -0.6828 0.7190 +vn -0.1296 -0.6828 0.7190 +vn -0.3832 -0.6136 0.6904 +vn -0.1221 -0.7533 0.6463 +vn -0.3955 -0.6713 0.6268 +vn -0.1836 -0.7220 0.6671 +vn -0.1488 -0.6518 0.7436 +vn -0.4677 -0.5583 0.6852 +vn -0.4053 -0.5023 0.7639 +vn -0.4699 -0.5598 0.6826 +vn -0.1969 -0.7282 0.6565 +vn 0.4699 -0.5598 0.6826 +vn 0.4053 -0.5023 0.7639 +vn 0.1488 -0.6518 0.7436 +vn 0.1969 -0.7282 0.6565 +vn 0.4677 -0.5583 0.6852 +vn 0.1836 -0.7220 0.6671 +vn -0.2470 -0.8112 0.5301 +vn -0.5405 -0.6252 0.5630 +vn -0.5590 -0.6503 0.5143 +vn -0.2523 -0.8413 0.4781 +vn 0.5590 -0.6503 0.5143 +vn 0.5405 -0.6252 0.5630 +vn 0.2470 -0.8112 0.5301 +vn 0.2523 -0.8413 0.4781 +vn -0.6492 -0.2967 0.7004 +vn -0.7357 -0.3344 0.5891 +vn -0.7077 -0.0011 0.7065 +vn -0.8000 -0.0014 0.6001 +vn -0.8305 0.0001 0.5571 +vn -0.7633 -0.3484 0.5440 +vn 0.8305 0.0001 0.5571 +vn 0.8000 -0.0014 0.6001 +vn 0.7357 -0.3344 0.5891 +vn 0.7633 -0.3484 0.5440 +vn 0.7077 -0.0011 0.7065 +vn 0.6492 -0.2967 0.7004 +vn -0.6598 -0.2960 0.6907 +vn -0.5750 -0.2641 0.7744 +vn -0.7248 -0.0016 0.6890 +vn -0.6302 -0.0009 0.7764 +vn 0.6302 -0.0009 0.7764 +vn 0.5750 -0.2641 0.7744 +vn 0.7248 -0.0016 0.6890 +vn 0.6598 -0.2960 0.6907 +vn -0.6714 0.2897 0.6821 +vn -0.5828 0.2612 0.7695 +vn -0.4921 0.5599 0.6666 +vn -0.4218 0.5061 0.7523 +vn -0.4739 0.5539 0.6846 +vn -0.6507 0.2916 0.7011 +vn 0.4739 0.5539 0.6846 +vn 0.4218 0.5061 0.7523 +vn 0.5828 0.2612 0.7695 +vn 0.6507 0.2916 0.7011 +vn 0.4921 0.5599 0.6666 +vn 0.6714 0.2897 0.6821 +vn -0.7327 0.3263 0.5972 +vn -0.5356 0.6101 0.5838 +vn -0.5473 0.6362 0.5438 +vn -0.7573 0.3433 0.5555 +vn 0.5473 0.6362 0.5438 +vn 0.5356 0.6101 0.5838 +vn 0.7327 0.3263 0.5972 +vn 0.7573 0.3433 0.5555 +vn -0.1990 0.7251 0.6592 +vn -0.2392 0.7924 0.5612 +vn 0.1110 0.7652 0.6341 +vn 0.0940 0.8361 0.5404 +vn 0.1058 0.8574 0.5036 +vn -0.2383 0.8189 0.5222 +vn -0.1058 0.8574 0.5036 +vn -0.0940 0.8361 0.5404 +vn 0.2392 0.7924 0.5612 +vn 0.2383 0.8189 0.5222 +vn -0.1110 0.7652 0.6341 +vn 0.1990 0.7251 0.6592 +vn -0.2045 0.7422 0.6383 +vn -0.1630 0.6688 0.7254 +vn 0.1157 0.7811 0.6136 +vn 0.1259 0.7045 0.6984 +vn -0.1259 0.7045 0.6984 +vn 0.1630 0.6688 0.7254 +vn -0.1157 0.7811 0.6136 +vn 0.2045 0.7422 0.6383 +vn 0.4045 0.6910 0.5991 +vn 0.3900 0.6292 0.6724 +vn 0.6314 0.4987 0.5938 +vn 0.6001 0.4629 0.6524 +vn 0.6261 0.5049 0.5942 +vn 0.3988 0.6835 0.6113 +vn -0.6261 0.5049 0.5942 +vn -0.6001 0.4629 0.6524 +vn -0.3900 0.6292 0.6724 +vn -0.3988 0.6835 0.6113 +vn -0.6314 0.4987 0.5938 +vn -0.4045 0.6910 0.5991 +vn 0.4064 0.7474 0.5256 +vn 0.6547 0.5526 0.5158 +vn 0.6725 0.5580 0.4863 +vn 0.4236 0.7601 0.4928 +vn -0.6725 0.5580 0.4863 +vn -0.6547 0.5526 0.5158 +vn -0.4064 0.7474 0.5256 +vn -0.4236 0.7601 0.4928 +vn 0.7677 0.2648 0.5836 +vn 0.8111 0.2910 0.5074 +vn 0.8273 0.2938 0.4788 +vn -0.8111 0.2910 0.5074 +vn -0.8273 0.2938 0.4788 +vn -0.7677 0.2648 0.5836 +vn 0.7652 0.2519 0.5924 +vn 0.7288 0.2398 0.6413 +vn -0.7288 0.2398 0.6413 +vn -0.7652 0.2519 0.5924 +vn 0.7652 0.2475 0.5943 +vn 0.8025 -0.0012 0.5967 +vn 0.6357 0.4998 0.5883 +vn 0.5167 0.3244 0.7923 +vn 0.6010 0.1604 0.7830 +vn 0.6233 -0.0013 0.7820 +vn -0.5167 0.3244 0.7923 +vn -0.6357 0.4998 0.5883 +vn -0.7652 0.2475 0.5943 +vn -0.6010 0.1604 0.7830 +vn -0.8025 -0.0012 0.5967 +vn -0.6233 -0.0013 0.7820 +vn 0.4082 0.7024 0.5831 +vn 0.1105 0.8020 0.5870 +vn 0.1630 0.5384 0.8267 +vn 0.3670 0.4690 0.8033 +vn -0.1630 0.5384 0.8267 +vn -0.1105 0.8020 0.5870 +vn -0.4082 0.7024 0.5831 +vn -0.3670 0.4690 0.8033 +vn -0.2197 0.7602 0.6115 +vn -0.5168 0.5744 0.6348 +vn -0.2915 0.3803 0.8777 +vn -0.0781 0.5138 0.8543 +vn 0.2915 0.3803 0.8777 +vn 0.5168 0.5744 0.6348 +vn 0.2197 0.7602 0.6115 +vn 0.0781 0.5138 0.8543 +vn -0.7072 0.3019 0.6393 +vn -0.7724 -0.0015 0.6352 +vn -0.4828 -0.0018 0.8757 +vn -0.4353 0.1982 0.8782 +vn 0.4828 -0.0018 0.8757 +vn 0.7724 -0.0015 0.6352 +vn 0.7072 0.3019 0.6393 +vn 0.4353 0.1982 0.8782 +vn -0.7014 -0.3119 0.6409 +vn -0.5026 -0.5846 0.6369 +vn -0.2894 -0.4006 0.8694 +vn -0.4365 -0.2107 0.8747 +vn 0.2894 -0.4006 0.8694 +vn 0.5026 -0.5846 0.6369 +vn 0.7014 -0.3119 0.6409 +vn 0.4365 -0.2107 0.8747 +vn -0.2098 -0.7597 0.6155 +vn 0.1125 -0.7973 0.5930 +vn 0.1599 -0.5603 0.8127 +vn -0.0801 -0.5340 0.8417 +vn -0.1599 -0.5603 0.8127 +vn -0.1125 -0.7973 0.5930 +vn 0.2098 -0.7597 0.6155 +vn 0.0801 -0.5340 0.8417 +vn 0.4023 -0.7004 0.5896 +vn 0.6247 -0.5074 0.5936 +vn 0.5141 -0.3431 0.7861 +vn 0.3654 -0.4888 0.7922 +vn -0.5141 -0.3431 0.7861 +vn -0.6247 -0.5074 0.5936 +vn -0.4023 -0.7004 0.5896 +vn -0.3654 -0.4888 0.7922 +vn 0.7606 -0.2557 0.5967 +vn 0.6016 -0.1709 0.7803 +vn -0.7606 -0.2557 0.5967 +vn -0.6016 -0.1709 0.7803 +vn 0.1931 -0.0015 0.9812 +vn 0.3423 -0.1196 0.9320 +vn 0.4081 -0.0753 0.9098 +vn 0.3860 -0.0006 0.9225 +vn -0.4081 -0.0753 0.9098 +vn -0.3860 -0.0006 0.9225 +vn -0.3423 -0.1196 0.9320 +vn -0.1931 -0.0015 0.9812 +vn 0.2960 -0.2052 0.9329 +vn 0.1999 -0.1878 0.9616 +vn -0.2960 -0.2052 0.9329 +vn -0.1999 -0.1878 0.9616 +vn 0.0196 -0.1215 0.9924 +vn 0.0825 -0.2136 0.9734 +vn -0.0825 -0.2136 0.9734 +vn -0.0196 -0.1215 0.9924 +vn -0.0521 -0.0004 0.9986 +vn -0.0797 -0.0697 0.9944 +vn 0.0797 -0.0696 0.9944 +vn 0.0521 -0.0004 0.9986 +vn 0.0203 0.1143 0.9932 +vn -0.0787 0.0641 0.9948 +vn 0.0787 0.0641 0.9948 +vn -0.0203 0.1143 0.9932 +vn 0.2005 0.1764 0.9637 +vn 0.0834 0.2020 0.9758 +vn -0.0834 0.2020 0.9758 +vn -0.2005 0.1764 0.9637 +vn 0.3419 0.1127 0.9329 +vn 0.2961 0.1940 0.9352 +vn -0.2961 0.1940 0.9352 +vn -0.3420 0.1127 0.9329 +vn 0.4074 0.0699 0.9106 +vn -0.4074 0.0699 0.9106 +vn 0.1547 -0.9849 0.0775 +vn 0.1708 -0.9014 0.3979 +vn 0.0946 -0.9113 0.4006 +vn 0.0889 -0.9907 0.1034 +vn 0.1631 -0.7744 0.6114 +vn 0.0869 -0.8024 0.5905 +vn -0.0000 -0.8100 0.5865 +vn -0.0000 -0.9138 0.4062 +vn -0.0000 -0.9931 0.1176 +vn -0.0869 -0.8024 0.5905 +vn -0.0946 -0.9113 0.4006 +vn -0.1631 -0.7744 0.6114 +vn -0.1708 -0.9014 0.3979 +vn -0.1547 -0.9849 0.0775 +vn -0.0889 -0.9907 0.1034 +vn 0.6233 -0.7772 0.0863 +vn 0.5078 -0.7001 0.5020 +vn 0.2925 -0.8525 0.4332 +vn 0.2914 -0.9540 0.0699 +vn 0.3988 -0.5441 0.7382 +vn 0.2670 -0.6973 0.6651 +vn -0.2670 -0.6973 0.6651 +vn -0.2925 -0.8525 0.4332 +vn -0.3988 -0.5441 0.7382 +vn -0.5078 -0.7001 0.5020 +vn -0.6233 -0.7772 0.0863 +vn -0.2914 -0.9540 0.0699 +vn 0.9907 -0.0659 0.1192 +vn 0.8093 -0.1806 0.5590 +vn 0.7180 -0.4195 0.5554 +vn 0.9178 -0.3818 0.1086 +vn 0.5585 -0.2108 0.8023 +vn 0.4987 -0.3591 0.7889 +vn -0.4987 -0.3591 0.7889 +vn -0.7180 -0.4195 0.5554 +vn -0.5585 -0.2108 0.8023 +vn -0.8093 -0.1806 0.5590 +vn -0.9907 -0.0659 0.1192 +vn -0.9178 -0.3818 0.1086 +vn 0.9867 0.1152 0.1147 +vn 0.8400 0.0486 0.5404 +vn 0.8374 -0.0352 0.5454 +vn 0.9917 0.0635 0.1117 +vn 0.6026 -0.0082 0.7980 +vn 0.5914 -0.0920 0.8011 +vn -0.5915 -0.0920 0.8011 +vn -0.8374 -0.0352 0.5454 +vn -0.6026 -0.0082 0.7980 +vn -0.8400 0.0486 0.5404 +vn -0.9867 0.1152 0.1147 +vn -0.9917 0.0635 0.1117 +vn 0.9680 0.2055 0.1440 +vn 0.8415 0.1616 0.5156 +vn 0.8389 0.1019 0.5346 +vn 0.9809 0.1493 0.1247 +vn 0.6307 0.0856 0.7713 +vn 0.6097 0.0403 0.7916 +vn -0.6097 0.0403 0.7916 +vn -0.8389 0.1019 0.5346 +vn -0.6307 0.0856 0.7713 +vn -0.8415 0.1616 0.5156 +vn -0.9680 0.2055 0.1440 +vn -0.9809 0.1493 0.1247 +vn 0.6050 -0.7431 0.2859 +vn 0.3667 -0.8918 0.2651 +vn 0.3868 -0.7592 0.5235 +vn 0.6162 -0.5796 0.5333 +vn 0.3779 -0.8914 0.2503 +vn 0.3812 -0.7537 0.5354 +vn 0.3795 -0.5644 0.7331 +vn 0.3816 -0.4921 0.7824 +vn 0.3170 -0.2083 0.9253 +vn -0.3795 -0.5644 0.7331 +vn -0.3812 -0.7537 0.5354 +vn -0.3868 -0.7592 0.5235 +vn -0.3816 -0.4921 0.7824 +vn -0.3779 -0.8914 0.2503 +vn -0.3667 -0.8918 0.2651 +vn -0.6050 -0.7431 0.2859 +vn -0.6162 -0.5796 0.5333 +vn -0.3170 -0.2083 0.9253 +vn 0.4825 -0.8437 0.2354 +vn 0.4582 -0.6985 0.5497 +vn 0.6172 -0.7570 0.2147 +vn 0.5783 -0.6068 0.5454 +vn 0.5049 -0.4603 0.7302 +vn 0.4249 -0.5417 0.7253 +vn -0.5049 -0.4603 0.7302 +vn -0.5783 -0.6068 0.5454 +vn -0.4582 -0.6985 0.5497 +vn -0.4249 -0.5417 0.7253 +vn -0.6172 -0.7570 0.2147 +vn -0.4825 -0.8437 0.2354 +vn 0.7560 -0.6275 0.1862 +vn 0.6849 -0.4987 0.5313 +vn 0.8883 -0.4262 0.1709 +vn 0.7432 -0.3952 0.5399 +vn 0.5918 -0.3291 0.7359 +vn 0.5737 -0.3793 0.7260 +vn -0.5918 -0.3291 0.7359 +vn -0.7432 -0.3952 0.5399 +vn -0.6849 -0.4987 0.5313 +vn -0.5737 -0.3793 0.7260 +vn -0.8883 -0.4262 0.1709 +vn -0.7560 -0.6275 0.1862 +vn 0.9701 -0.1578 0.1842 +vn 0.7653 -0.2840 0.5776 +vn 0.9431 0.2555 0.2128 +vn 0.7746 -0.0353 0.6315 +vn 0.5130 -0.2538 0.8200 +vn 0.5569 -0.3031 0.7733 +vn -0.5130 -0.2538 0.8200 +vn -0.7746 -0.0353 0.6315 +vn -0.7653 -0.2840 0.5776 +vn -0.5569 -0.3031 0.7733 +vn -0.9431 0.2555 0.2128 +vn -0.9701 -0.1578 0.1842 +vn 0.7060 0.6714 0.2253 +vn 0.6674 0.3231 0.6710 +vn 0.5090 0.8413 0.1818 +vn 0.5433 0.5353 0.6468 +vn 0.3714 0.0003 0.9285 +vn 0.4520 -0.1101 0.8852 +vn -0.3714 0.0003 0.9285 +vn -0.5433 0.5353 0.6468 +vn -0.6674 0.3231 0.6710 +vn -0.4520 -0.1101 0.8852 +vn -0.5090 0.8413 0.1818 +vn -0.7060 0.6714 0.2253 +vn 0.5165 0.8429 0.1508 +vn 0.5224 0.5892 0.6163 +vn 0.5722 0.8069 0.1463 +vn 0.5411 0.5660 0.6220 +vn 0.3232 0.0706 0.9437 +vn 0.3322 0.0550 0.9416 +vn -0.3232 0.0706 0.9437 +vn -0.5411 0.5660 0.6220 +vn -0.5224 0.5892 0.6163 +vn -0.3322 0.0550 0.9416 +vn -0.5722 0.8069 0.1463 +vn -0.5165 0.8429 0.1508 +vn 0.5561 0.8152 0.1619 +vn 0.5107 0.5688 0.6447 +vn 0.2984 0.9373 0.1800 +vn 0.3163 0.6479 0.6930 +vn 0.2535 0.1240 0.9594 +vn 0.3127 0.0870 0.9459 +vn -0.2535 0.1240 0.9594 +vn -0.3163 0.6479 0.6930 +vn -0.5107 0.5688 0.6447 +vn -0.3127 0.0870 0.9459 +vn -0.2983 0.9373 0.1800 +vn -0.5561 0.8152 0.1619 +vn -0.2067 0.9604 0.1870 +vn -0.0771 0.6733 0.7353 +vn -0.6563 0.7388 0.1531 +vn -0.4537 0.5352 0.7126 +vn -0.0491 0.0966 0.9941 +vn 0.1039 0.1391 0.9848 +vn 0.0491 0.0966 0.9941 +vn 0.4537 0.5352 0.7126 +vn 0.0771 0.6733 0.7353 +vn -0.1039 0.1391 0.9848 +vn 0.6563 0.7388 0.1531 +vn 0.2067 0.9604 0.1870 +vn -0.8380 0.5355 0.1052 +vn -0.6382 0.4086 0.6525 +vn -0.8197 0.5621 0.1105 +vn -0.6598 0.4196 0.6234 +vn -0.1587 0.0433 0.9864 +vn -0.1248 0.0561 0.9906 +vn 0.1587 0.0433 0.9864 +vn 0.6598 0.4196 0.6234 +vn 0.6382 0.4086 0.6525 +vn 0.1248 0.0561 0.9906 +vn 0.8197 0.5621 0.1105 +vn 0.8380 0.5355 0.1052 +vn -0.5933 0.7828 0.1877 +vn -0.4976 0.5452 0.6747 +vn -0.0000 0.9672 0.2539 +vn -0.0000 0.6400 0.7683 +vn -0.0000 -0.0443 0.9990 +vn -0.1289 0.0505 0.9904 +vn 0.4976 0.5452 0.6747 +vn 0.1289 0.0505 0.9904 +vn 0.5933 0.7828 0.1877 +vn 0.2804 -0.2166 0.9351 +vn 0.3032 -0.2294 0.9249 +vn 0.2895 -0.2441 0.9255 +vn 0.2605 -0.2463 0.9335 +vn 0.2764 -0.2470 0.9288 +vn 0.2634 -0.2497 0.9318 +vn -0.2634 -0.2497 0.9318 +vn -0.2895 -0.2441 0.9255 +vn -0.2764 -0.2470 0.9288 +vn -0.3032 -0.2294 0.9249 +vn -0.2804 -0.2166 0.9351 +vn -0.2605 -0.2463 0.9335 +vn 0.2060 -0.2672 0.9414 +vn 0.2065 -0.2649 0.9419 +vn 0.1299 -0.2630 0.9560 +vn 0.1474 -0.2820 0.9480 +vn -0.1474 -0.2820 0.9480 +vn -0.2065 -0.2649 0.9419 +vn -0.1299 -0.2630 0.9560 +vn -0.2060 -0.2672 0.9414 +vn 0.1743 -0.2092 0.9622 +vn 0.1107 -0.3212 0.9405 +vn 0.1114 -0.2967 0.9485 +vn 0.1203 -0.2244 0.9671 +vn -0.1114 -0.2967 0.9485 +vn -0.1107 -0.3212 0.9405 +vn -0.1743 -0.2092 0.9622 +vn -0.1203 -0.2244 0.9671 +vn 0.1678 -0.3127 0.9349 +vn 0.1362 -0.3764 0.9164 +vn 0.1151 -0.3637 0.9244 +vn 0.1893 -0.2724 0.9434 +vn -0.1151 -0.3637 0.9244 +vn -0.1362 -0.3764 0.9164 +vn -0.1678 -0.3127 0.9349 +vn -0.1893 -0.2724 0.9434 +vn 0.2803 -0.1719 0.9444 +vn 0.3021 -0.2814 0.9108 +vn 0.2085 -0.3405 0.9168 +vn 0.1918 -0.2551 0.9477 +vn -0.2085 -0.3405 0.9168 +vn -0.3021 -0.2814 0.9108 +vn -0.2803 -0.1719 0.9444 +vn -0.1918 -0.2551 0.9477 +vn 0.4458 -0.2062 0.8710 +vn 0.4687 -0.2509 0.8470 +vn 0.4019 -0.2415 0.8833 +vn 0.3805 -0.1588 0.9110 +vn -0.4019 -0.2415 0.8833 +vn -0.4687 -0.2509 0.8470 +vn -0.4458 -0.2062 0.8710 +vn -0.3805 -0.1588 0.9110 +vn 0.4398 -0.3701 0.8183 +vn 0.4396 -0.3626 0.8217 +vn 0.4744 -0.2939 0.8298 +vn 0.4639 -0.2835 0.8393 +vn -0.4744 -0.2939 0.8298 +vn -0.4396 -0.3626 0.8217 +vn -0.4398 -0.3701 0.8183 +vn -0.4639 -0.2835 0.8393 +vn 0.2782 -0.3740 0.8847 +vn 0.3418 -0.3644 0.8663 +vn 0.3872 -0.4155 0.8230 +vn 0.3664 -0.4229 0.8288 +vn -0.3872 -0.4155 0.8230 +vn -0.3418 -0.3644 0.8663 +vn -0.2782 -0.3740 0.8847 +vn -0.3664 -0.4229 0.8288 +vn 0.1083 -0.1293 0.9857 +vn 0.1744 -0.0597 0.9829 +vn 0.3134 -0.2118 0.9257 +vn 0.2110 -0.2489 0.9453 +vn -0.3134 -0.2118 0.9257 +vn -0.1744 -0.0597 0.9829 +vn -0.1083 -0.1293 0.9857 +vn -0.2110 -0.2489 0.9453 +vn -0.0411 -0.0565 0.9976 +vn -0.0175 0.0472 0.9987 +vn -0.1122 -0.0771 0.9907 +vn -0.0556 0.0047 0.9984 +vn -0.0000 0.0264 0.9997 +vn -0.0576 0.0335 0.9978 +vn 0.0556 0.0047 0.9984 +vn 0.0175 0.0472 0.9987 +vn 0.0576 0.0335 0.9978 +vn 0.1122 -0.0771 0.9907 +vn 0.0411 -0.0565 0.9976 +vn 0.1953 -0.2365 0.9518 +vn 0.2152 -0.1926 0.9574 +vn 0.1354 -0.2253 0.9648 +vn 0.1287 -0.1629 0.9782 +vn -0.1953 -0.2365 0.9518 +vn -0.1354 -0.2253 0.9648 +vn -0.2152 -0.1926 0.9574 +vn -0.1287 -0.1629 0.9782 +vn 0.0838 -0.2222 0.9714 +vn 0.0330 -0.1528 0.9877 +vn -0.0000 -0.2467 0.9691 +vn -0.0000 -0.2263 0.9741 +vn 0.0274 -0.2038 0.9786 +vn -0.0512 -0.1592 0.9859 +vn -0.0838 -0.2222 0.9714 +vn -0.0274 -0.2038 0.9786 +vn -0.0330 -0.1528 0.9877 +vn 0.0512 -0.1592 0.9859 +vn -0.0150 -0.1246 0.9921 +vn -0.0000 -0.1195 0.9928 +vn -0.0996 -0.1399 0.9851 +vn 0.0996 -0.1399 0.9851 +vn 0.0150 -0.1246 0.9921 +vn 0.0800 -0.5235 0.8483 +vn 0.0325 -0.5455 0.8375 +vn 0.0712 -0.7085 0.7021 +vn 0.1423 -0.6644 0.7338 +vn -0.0000 -0.5476 0.8367 +vn -0.0000 -0.7205 0.6934 +vn -0.0712 -0.7085 0.7021 +vn -0.0325 -0.5455 0.8375 +vn -0.0800 -0.5235 0.8483 +vn -0.1423 -0.6644 0.7338 +vn 0.2270 -0.3367 0.9138 +vn 0.1522 -0.4518 0.8790 +vn 0.2318 -0.5680 0.7898 +vn 0.3233 -0.4195 0.8482 +vn -0.2318 -0.5680 0.7898 +vn -0.1522 -0.4518 0.8790 +vn -0.2270 -0.3367 0.9138 +vn -0.3233 -0.4195 0.8482 +vn 0.2138 -0.1500 0.9653 +vn 0.2593 -0.2280 0.9385 +vn 0.3697 -0.2842 0.8846 +vn 0.3818 -0.1849 0.9055 +vn -0.3697 -0.2842 0.8846 +vn -0.2593 -0.2280 0.9385 +vn -0.2138 -0.1500 0.9653 +vn -0.3818 -0.1849 0.9055 +vn 0.3915 0.0195 0.9200 +vn 0.3819 -0.0084 0.9242 +vn 0.1941 -0.0120 0.9809 +vn 0.1951 -0.0344 0.9802 +vn 0.2044 -0.0503 0.9776 +vn 0.3858 -0.0400 0.9217 +vn -0.2044 -0.0503 0.9776 +vn -0.1951 -0.0344 0.9802 +vn -0.3819 -0.0084 0.9242 +vn -0.3858 -0.0400 0.9217 +vn -0.1941 -0.0120 0.9809 +vn -0.3915 0.0195 0.9200 +vn 0.3878 -0.1028 0.9160 +vn 0.2176 -0.0831 0.9725 +vn -0.3878 -0.1028 0.9160 +vn -0.2176 -0.0831 0.9725 +vn 0.3661 -0.2600 0.8935 +vn 0.1287 -0.2665 0.9552 +vn 0.0699 -0.0364 0.9969 +vn 0.2124 -0.0253 0.9768 +vn -0.0000 -0.2546 0.9670 +vn -0.0000 -0.0355 0.9994 +vn -0.0000 -0.0237 0.9997 +vn 0.0664 -0.0216 0.9976 +vn -0.0699 -0.0364 0.9969 +vn -0.0664 -0.0216 0.9976 +vn -0.1287 -0.2665 0.9552 +vn -0.3661 -0.2600 0.8935 +vn -0.2124 -0.0253 0.9768 +vn 0.0672 -0.0451 0.9967 +vn 0.0711 -0.0512 0.9962 +vn -0.0000 -0.0479 0.9989 +vn -0.0000 -0.0507 0.9987 +vn -0.0672 -0.0451 0.9967 +vn -0.0711 -0.0512 0.9962 +vn -0.0000 -0.2200 0.9755 +vn 0.0711 -0.1732 0.9823 +vn 0.0779 -0.0636 0.9949 +vn -0.0000 -0.0599 0.9982 +vn -0.0779 -0.0636 0.9949 +vn -0.0711 -0.1732 0.9823 +vn 0.8150 -0.1124 0.5685 +vn 0.9770 -0.1030 0.1865 +vn 0.7923 -0.4755 0.3823 +vn 0.6547 -0.2892 0.6984 +vn 0.9539 -0.1324 0.2694 +vn 0.7615 -0.5428 0.3543 +vn 0.4951 -0.7314 0.4689 +vn 0.5048 -0.6264 0.5940 +vn -0.4951 -0.7314 0.4689 +vn -0.7615 -0.5428 0.3543 +vn -0.7923 -0.4755 0.3823 +vn -0.5048 -0.6264 0.5940 +vn -0.9539 -0.1324 0.2694 +vn -0.9770 -0.1030 0.1865 +vn -0.8150 -0.1124 0.5685 +vn -0.6547 -0.2892 0.6984 +vn 0.2920 0.3299 0.8977 +vn 0.6895 0.7131 0.1267 +vn 0.9417 0.3225 0.0956 +vn 0.7388 0.1334 0.6605 +vn 0.6775 0.7241 0.1287 +vn 0.9311 0.3098 0.1926 +vn -0.9311 0.3098 0.1926 +vn -0.9417 0.3225 0.0956 +vn -0.6775 0.7241 0.1287 +vn -0.6895 0.7131 0.1267 +vn -0.2920 0.3299 0.8977 +vn -0.7388 0.1334 0.6605 +vn -0.0000 0.2762 0.9611 +vn -0.3029 0.7439 0.5957 +vn 0.1603 0.9174 0.3642 +vn -0.0651 0.2901 0.9548 +vn -0.3199 0.9026 0.2881 +vn 0.1854 0.9700 0.1571 +vn -0.1854 0.9700 0.1571 +vn -0.1603 0.9174 0.3642 +vn 0.3199 0.9026 0.2881 +vn 0.3029 0.7439 0.5957 +vn 0.0651 0.2901 0.9548 +vn -0.0000 0.7509 0.6604 +vn -0.0000 0.9306 0.3662 +vn -0.5394 0.6674 0.5134 +vn -0.0000 0.5499 0.8353 +vn -0.0000 0.9526 0.3042 +vn -0.5225 0.7921 0.3156 +vn 0.5225 0.7921 0.3156 +vn 0.5394 0.6674 0.5134 +vn 0.2493 -0.6578 0.7107 +vn -0.0000 -0.6613 0.7501 +vn 0.2777 -0.7801 0.5606 +vn -0.0000 -0.8048 0.5935 +vn -0.2493 -0.6578 0.7107 +vn -0.2777 -0.7801 0.5606 +vn 0.2053 -0.6682 0.7151 +vn -0.0000 -0.6694 0.7429 +vn 0.3632 -0.6629 0.6547 +vn 0.2095 -0.5400 0.8152 +vn 0.1148 -0.5011 0.8577 +vn -0.0000 -0.4783 0.8782 +vn -0.2095 -0.5400 0.8152 +vn -0.3632 -0.6629 0.6547 +vn -0.2053 -0.6682 0.7151 +vn -0.1148 -0.5011 0.8577 +vn -0.0000 0.7126 0.7016 +vn -0.3654 0.6957 0.6185 +vn -0.0000 0.1476 0.9890 +vn -0.1294 0.3885 0.9123 +vn -0.1192 0.5351 0.8363 +vn -0.2444 0.7781 0.5787 +vn 0.1192 0.5351 0.8363 +vn 0.1294 0.3885 0.9123 +vn 0.3654 0.6957 0.6185 +vn 0.2444 0.7781 0.5787 +vn 0.1615 0.8204 0.5486 +vn 0.0982 0.4994 0.8608 +vn 0.3285 0.4195 0.8462 +vn 0.5604 0.6124 0.5576 +vn -0.3285 0.4195 0.8462 +vn -0.0982 0.4994 0.8608 +vn -0.1615 0.8204 0.5486 +vn -0.5604 0.6124 0.5576 +vn 0.7407 0.2542 0.6219 +vn 0.3456 0.1885 0.9192 +vn 0.3065 -0.1133 0.9451 +vn 0.7218 -0.1403 0.6777 +vn -0.3065 -0.1133 0.9451 +vn -0.3456 0.1885 0.9192 +vn -0.7407 0.2542 0.6219 +vn -0.7218 -0.1403 0.6777 +vn 0.5598 -0.5032 0.6583 +vn 0.2440 -0.4010 0.8830 +vn -0.2440 -0.4010 0.8830 +vn -0.5598 -0.5032 0.6583 +vn 0.0480 -0.0437 0.9979 +vn 0.0660 0.2118 0.9751 +vn -0.0660 0.2118 0.9751 +vn -0.0480 -0.0437 0.9979 +vn -0.0000 -0.2707 0.9627 +vn 0.0555 -0.3042 0.9510 +vn -0.0555 -0.3042 0.9510 +vn -0.0870 -0.0004 0.9962 +vn -0.0000 0.0134 0.9999 +vn 0.0883 -0.0878 0.9922 +vn -0.0883 -0.0878 0.9922 +vn 0.0870 -0.0004 0.9962 +vn 0.4840 -0.1160 0.8673 +vn 0.6963 -0.1051 0.7100 +vn 0.8327 -0.0082 0.5537 +vn 0.7309 -0.1703 0.6609 +vn -0.8327 -0.0082 0.5537 +vn -0.6963 -0.1051 0.7100 +vn -0.4840 -0.1160 0.8673 +vn -0.7309 -0.1703 0.6609 +vn 0.6345 -0.1038 0.7659 +vn 0.5143 -0.0322 0.8570 +vn 0.7303 0.1227 0.6720 +vn 0.7974 0.0689 0.5994 +vn -0.7303 0.1227 0.6720 +vn -0.5143 -0.0322 0.8570 +vn -0.6345 -0.1038 0.7659 +vn -0.7974 0.0689 0.5994 +vn 0.4307 0.0284 0.9021 +vn 0.6706 0.1267 0.7309 +vn -0.4307 0.0284 0.9021 +vn -0.6706 0.1267 0.7309 +vn 0.9489 0.2705 0.1626 +vn 0.8484 0.2255 0.4789 +vn 0.9409 0.2880 0.1782 +vn 0.8671 0.2461 0.4331 +vn -0.8671 0.2461 0.4331 +vn -0.8484 0.2255 0.4789 +vn -0.9409 0.2880 0.1782 +vn -0.9489 0.2705 0.1626 +vn 0.9434 0.2657 0.1984 +vn 0.8956 0.2131 0.3904 +vn 0.9567 0.1921 0.2187 +vn 0.9223 0.1235 0.3662 +vn -0.9223 0.1235 0.3662 +vn -0.8956 0.2131 0.3904 +vn -0.9567 0.1921 0.2187 +vn -0.9434 0.2657 0.1984 +vn 0.8800 -0.1921 0.4344 +vn 0.9355 -0.2286 0.2695 +vn -0.8800 -0.1921 0.4344 +vn -0.9355 -0.2286 0.2695 +vn 0.0412 -0.6198 0.7837 +vn -0.0621 -0.4239 0.9036 +vn -0.0000 -0.6728 0.7398 +vn -0.0000 -0.9312 0.3646 +vn 0.0337 -0.9268 0.3740 +vn -0.3736 -0.8039 0.4627 +vn -0.0412 -0.6198 0.7837 +vn -0.0337 -0.9268 0.3740 +vn 0.0621 -0.4239 0.9036 +vn 0.3736 -0.8039 0.4627 +vn -0.2084 -0.2728 0.9392 +vn -0.2459 -0.1700 0.9543 +vn -0.8263 -0.3036 0.4744 +vn -0.8477 0.1505 0.5087 +vn 0.2084 -0.2728 0.9392 +vn 0.8263 -0.3036 0.4744 +vn 0.2459 -0.1700 0.9543 +vn 0.8477 0.1505 0.5087 +vn -0.2479 -0.1076 0.9628 +vn -0.2114 -0.0057 0.9774 +vn -0.6929 0.4401 0.5711 +vn -0.4604 0.6510 0.6035 +vn 0.2479 -0.1076 0.9628 +vn 0.6929 0.4401 0.5711 +vn 0.2114 -0.0057 0.9774 +vn 0.4604 0.6510 0.6035 +vn -0.1139 0.0957 0.9889 +vn -0.0000 0.1376 0.9905 +vn -0.2098 0.7622 0.6124 +vn -0.0000 0.7913 0.6114 +vn 0.1139 0.0957 0.9889 +vn 0.2098 0.7622 0.6124 +vn -0.1964 0.7718 0.6047 +vn -0.0000 0.7795 0.6264 +vn -0.4427 0.7322 0.5176 +vn -0.2886 0.3768 0.8802 +vn -0.1123 0.3328 0.9363 +vn -0.0000 0.3200 0.9474 +vn 0.2886 0.3768 0.8802 +vn 0.4427 0.7322 0.5176 +vn 0.1964 0.7718 0.6047 +vn 0.1123 0.3328 0.9363 +vn -0.7168 0.6035 0.3493 +vn -0.9314 0.2981 0.2087 +vn -0.8885 0.2578 0.3796 +vn -0.5804 0.3746 0.7230 +vn 0.8885 0.2578 0.3796 +vn 0.9314 0.2981 0.2087 +vn 0.7168 0.6035 0.3493 +vn 0.5804 0.3746 0.7230 +vn -0.9167 -0.2944 0.2703 +vn -0.4126 -0.8382 0.3566 +vn -0.2334 -0.7105 0.6638 +vn -0.7396 -0.3064 0.5992 +vn 0.2334 -0.7105 0.6638 +vn 0.4126 -0.8382 0.3566 +vn 0.9167 -0.2944 0.2703 +vn 0.7396 -0.3064 0.5992 +vn 0.0423 -0.9214 0.3864 +vn -0.0000 -0.9151 0.4033 +vn -0.0000 -0.6806 0.7326 +vn 0.0496 -0.7021 0.7104 +vn -0.0423 -0.9214 0.3864 +vn -0.0496 -0.7021 0.7104 +vn -0.0000 -0.2692 0.9631 +vn 0.0118 -0.2787 0.9603 +vn -0.0551 -0.2685 0.9617 +vn -0.0118 -0.2787 0.9603 +vn 0.0551 -0.2685 0.9617 +vn -0.4563 -0.1209 0.8816 +vn 0.4563 -0.1209 0.8816 +vn -0.1806 -0.1443 0.9729 +vn -0.1343 -0.1149 0.9843 +vn -0.2024 -0.1620 0.9658 +vn 0.0278 -0.0197 0.9994 +vn 0.1121 -0.0372 0.9930 +vn 0.1567 -0.0549 0.9861 +vn -0.0278 -0.0197 0.9994 +vn 0.2024 -0.1620 0.9658 +vn 0.1806 -0.1443 0.9729 +vn -0.1121 -0.0372 0.9930 +vn 0.1343 -0.1149 0.9843 +vn -0.1567 -0.0549 0.9861 +vn -0.0676 -0.0804 0.9945 +vn 0.0075 -0.0674 0.9977 +vn 0.1743 -0.0620 0.9827 +vn 0.1796 -0.0780 0.9806 +vn 0.0676 -0.0804 0.9945 +vn -0.1743 -0.0620 0.9827 +vn -0.0075 -0.0674 0.9977 +vn -0.1796 -0.0780 0.9806 +vn 0.0741 -0.0681 0.9949 +vn 0.1248 -0.0612 0.9903 +vn 0.1715 -0.0910 0.9810 +vn 0.1500 -0.0776 0.9856 +vn -0.0741 -0.0681 0.9949 +vn -0.1715 -0.0910 0.9810 +vn -0.1248 -0.0612 0.9903 +vn -0.1500 -0.0776 0.9856 +vn -0.1485 -0.2343 0.9607 +vn -0.0246 -0.3585 0.9332 +vn 0.0530 -0.2067 0.9770 +vn -0.0102 -0.0938 0.9955 +vn -0.0530 -0.2067 0.9770 +vn 0.0246 -0.3585 0.9332 +vn 0.1485 -0.2343 0.9607 +vn 0.0102 -0.0938 0.9955 +vn 0.0911 -0.4476 0.8896 +vn 0.2096 -0.4968 0.8422 +vn 0.2164 -0.2935 0.9311 +vn 0.1340 -0.2773 0.9514 +vn -0.2164 -0.2935 0.9311 +vn -0.2096 -0.4968 0.8422 +vn -0.0911 -0.4476 0.8896 +vn -0.1340 -0.2773 0.9514 +vn 0.3527 -0.4857 0.7998 +vn 0.4586 -0.3994 0.7938 +vn 0.3643 -0.1722 0.9152 +vn 0.3109 -0.2559 0.9153 +vn -0.3643 -0.1722 0.9152 +vn -0.4586 -0.3994 0.7938 +vn -0.3527 -0.4857 0.7998 +vn -0.3109 -0.2559 0.9153 +vn 0.4853 -0.2874 0.8257 +vn 0.4636 -0.1858 0.8664 +vn 0.3070 -0.0538 0.9502 +vn 0.3540 -0.0916 0.9308 +vn -0.3070 -0.0538 0.9502 +vn -0.4636 -0.1858 0.8664 +vn -0.4853 -0.2874 0.8257 +vn -0.3540 -0.0916 0.9308 +vn 0.4212 -0.1121 0.9000 +vn 0.3706 -0.0759 0.9257 +vn 0.2372 -0.0701 0.9689 +vn 0.2599 -0.0545 0.9641 +vn -0.2372 -0.0701 0.9689 +vn -0.3706 -0.0759 0.9257 +vn -0.4212 -0.1121 0.9000 +vn -0.2599 -0.0545 0.9641 +vn 0.3325 -0.0802 0.9397 +vn 0.3488 -0.0572 0.9354 +vn 0.3200 -0.1244 0.9392 +vn 0.2626 -0.1035 0.9593 +vn -0.3200 -0.1244 0.9392 +vn -0.3488 -0.0572 0.9354 +vn -0.3325 -0.0802 0.9397 +vn -0.2626 -0.1035 0.9593 +vn 0.3782 0.0661 0.9234 +vn 0.3270 0.1793 0.9279 +vn 0.3008 0.0841 0.9500 +vn 0.3645 -0.0523 0.9297 +vn -0.3008 0.0841 0.9500 +vn -0.3270 0.1793 0.9279 +vn -0.3782 0.0661 0.9234 +vn -0.3645 -0.0523 0.9297 +vn 0.2049 0.1440 0.9681 +vn 0.1467 0.0377 0.9885 +vn 0.1182 0.1135 0.9865 +vn 0.1639 0.1469 0.9755 +vn -0.1182 0.1135 0.9865 +vn -0.1467 0.0377 0.9885 +vn -0.2049 0.1440 0.9681 +vn -0.1639 0.1469 0.9755 +vn 0.1706 -0.0129 0.9852 +vn 0.1780 -0.0235 0.9838 +vn 0.1451 0.0410 0.9886 +vn 0.1497 0.0800 0.9855 +vn -0.1451 0.0410 0.9886 +vn -0.1780 -0.0235 0.9838 +vn -0.1706 -0.0129 0.9852 +vn -0.1497 0.0800 0.9855 +vn 0.1569 -0.0412 0.9868 +vn 0.1327 -0.0263 0.9908 +vn -0.1569 -0.0412 0.9868 +vn -0.1327 -0.0263 0.9908 +vn 0.2514 -0.2491 0.9353 +vn 0.2052 -0.1682 0.9642 +vn 0.3610 -0.2844 0.8882 +vn 0.4572 -0.3968 0.7959 +vn 0.3140 -0.3812 0.8695 +vn 0.2402 -0.3071 0.9209 +vn -0.4572 -0.3968 0.7959 +vn -0.3610 -0.2844 0.8882 +vn -0.2514 -0.2491 0.9353 +vn -0.3140 -0.3812 0.8695 +vn -0.2052 -0.1682 0.9642 +vn -0.2402 -0.3071 0.9209 +vn 0.1703 -0.1424 0.9751 +vn 0.0725 -0.2089 0.9753 +vn 0.1852 -0.2948 0.9374 +vn 0.0543 -0.4198 0.9060 +vn -0.1703 -0.1424 0.9751 +vn -0.1852 -0.2948 0.9374 +vn -0.0725 -0.2089 0.9753 +vn -0.0543 -0.4198 0.9060 +vn 0.0307 -0.3317 0.9429 +vn 0.0875 -0.4751 0.8756 +vn -0.0445 -0.6076 0.7930 +vn -0.0505 -0.7391 0.6717 +vn -0.0307 -0.3317 0.9429 +vn 0.0445 -0.6076 0.7930 +vn -0.0875 -0.4751 0.8756 +vn 0.0505 -0.7391 0.6717 +vn 0.1155 -0.5578 0.8219 +vn 0.0453 -0.5047 0.8621 +vn -0.0427 -0.7571 0.6519 +vn -0.1025 -0.6509 0.7523 +vn -0.1155 -0.5578 0.8219 +vn 0.0427 -0.7571 0.6519 +vn -0.0453 -0.5047 0.8621 +vn 0.1025 -0.6509 0.7523 +vn -0.0672 -0.3070 0.9493 +vn -0.1305 -0.1099 0.9853 +vn -0.2433 -0.3930 0.8867 +vn -0.3230 -0.1187 0.9389 +vn 0.0673 -0.3070 0.9493 +vn 0.2433 -0.3930 0.8867 +vn 0.1305 -0.1099 0.9853 +vn 0.3230 -0.1187 0.9389 +vn -0.0996 0.0376 0.9943 +vn -0.0221 0.1712 0.9850 +vn -0.2843 0.0889 0.9546 +vn -0.1896 0.2728 0.9432 +vn 0.0996 0.0376 0.9943 +vn 0.2843 0.0889 0.9546 +vn 0.0221 0.1712 0.9850 +vn 0.1896 0.2728 0.9432 +vn 0.0458 0.2525 0.9665 +vn 0.0960 0.2811 0.9549 +vn -0.1214 0.4045 0.9064 +vn -0.0692 0.4961 0.8655 +vn -0.0458 0.2524 0.9665 +vn 0.1214 0.4045 0.9064 +vn -0.0960 0.2811 0.9549 +vn 0.0692 0.4961 0.8655 +vn 0.1653 0.2777 0.9463 +vn 0.2387 0.2715 0.9324 +vn 0.0457 0.5515 0.8329 +vn 0.2024 0.5582 0.8046 +vn -0.1653 0.2777 0.9463 +vn -0.0457 0.5515 0.8329 +vn -0.2387 0.2715 0.9324 +vn -0.2024 0.5582 0.8046 +vn 0.2862 0.2859 0.9145 +vn 0.3075 0.3145 0.8981 +vn 0.3130 0.5501 0.7742 +vn 0.3838 0.5457 0.7449 +vn -0.2862 0.2859 0.9145 +vn -0.3130 0.5501 0.7742 +vn -0.3075 0.3145 0.8981 +vn -0.3838 0.5457 0.7449 +vn 0.3566 0.3279 0.8748 +vn 0.4829 0.2547 0.8378 +vn 0.4884 0.4865 0.7244 +vn 0.6391 0.3261 0.6966 +vn -0.3566 0.3279 0.8748 +vn -0.4884 0.4865 0.7244 +vn -0.4829 0.2547 0.8378 +vn -0.6391 0.3261 0.6966 +vn 0.4789 -0.2529 0.8407 +vn 0.5676 -0.1781 0.8038 +vn 0.7192 -0.2340 0.6542 +vn 0.6071 -0.3407 0.7179 +vn -0.7192 -0.2340 0.6542 +vn -0.5676 -0.1781 0.8038 +vn -0.4789 -0.2529 0.8407 +vn -0.6071 -0.3407 0.7179 +vn 0.6154 -0.0872 0.7834 +vn 0.6256 0.0003 0.7801 +vn 0.7735 0.0093 0.6338 +vn 0.7708 -0.1055 0.6283 +vn -0.7735 0.0093 0.6338 +vn -0.6256 0.0003 0.7801 +vn -0.6154 -0.0872 0.7834 +vn -0.7708 -0.1055 0.6283 +vn 0.5905 0.1131 0.7991 +vn 0.7394 0.1429 0.6580 +vn -0.5905 0.1131 0.7991 +vn -0.7394 0.1429 0.6580 +vn -0.5000 0.8657 -0.0249 +vn -0.0000 0.9963 0.0863 +vn -0.7257 0.6447 -0.2401 +vn -0.4802 0.8614 -0.1655 +vn -0.3460 0.8915 0.2924 +vn -0.0000 0.9037 0.4282 +vn 0.4802 0.8614 -0.1655 +vn 0.7257 0.6447 -0.2401 +vn 0.5000 0.8657 -0.0249 +vn 0.3460 0.8915 0.2924 +vn -0.7720 0.5154 -0.3719 +vn -0.6350 0.6713 -0.3823 +vn -0.4871 0.4926 -0.7212 +vn -0.5097 0.4303 -0.7450 +vn 0.4871 0.4926 -0.7212 +vn 0.6350 0.6713 -0.3823 +vn 0.7720 0.5154 -0.3719 +vn 0.5097 0.4303 -0.7450 +vn -0.2463 0.8929 -0.3768 +vn 0.2102 0.9052 -0.3695 +vn 0.0589 0.6528 -0.7552 +vn -0.2361 0.5783 -0.7809 +vn -0.0589 0.6528 -0.7552 +vn -0.2102 0.9052 -0.3695 +vn 0.2463 0.8929 -0.3768 +vn 0.2361 0.5783 -0.7809 +vn 0.4367 0.8190 -0.3721 +vn 0.4165 0.8526 -0.3156 +vn 0.1443 0.8727 -0.4665 +vn 0.1022 0.6001 -0.7934 +vn -0.1443 0.8727 -0.4665 +vn -0.4165 0.8526 -0.3156 +vn -0.4367 0.8190 -0.3721 +vn -0.1022 0.6001 -0.7934 +vn 0.3907 0.8962 -0.2104 +vn 0.4139 0.8985 -0.1461 +vn 0.3906 0.9038 -0.1751 +vn 0.3007 0.9204 -0.2498 +vn -0.3906 0.9038 -0.1751 +vn -0.4139 0.8985 -0.1461 +vn -0.3907 0.8962 -0.2104 +vn -0.3007 0.9204 -0.2498 +vn 0.5969 0.7874 -0.1541 +vn 0.8890 0.4217 -0.1784 +vn 0.8439 0.4889 -0.2210 +vn 0.5616 0.8020 -0.2036 +vn -0.8439 0.4889 -0.2210 +vn -0.8890 0.4217 -0.1784 +vn -0.5969 0.7874 -0.1541 +vn -0.5616 0.8020 -0.2036 +vn 0.9881 -0.0271 -0.1511 +vn 0.9134 -0.3968 -0.0909 +vn 0.9413 -0.3367 -0.0241 +vn 0.9894 0.0550 -0.1342 +vn -0.9413 -0.3367 -0.0241 +vn -0.9134 -0.3968 -0.0909 +vn -0.9881 -0.0271 -0.1511 +vn -0.9894 0.0550 -0.1342 +vn 0.7541 -0.6552 -0.0444 +vn 0.6054 -0.7957 -0.0192 +vn 0.6357 -0.7692 0.0656 +vn 0.7936 -0.6072 0.0392 +vn -0.6357 -0.7692 0.0656 +vn -0.6054 -0.7957 -0.0192 +vn -0.7541 -0.6552 -0.0444 +vn -0.7936 -0.6072 0.0392 +vn 0.4774 -0.8787 -0.0017 +vn 0.3718 -0.9280 0.0225 +vn 0.4415 -0.8886 0.1244 +vn 0.5072 -0.8583 0.0772 +vn -0.4415 -0.8886 0.1244 +vn -0.3718 -0.9280 0.0225 +vn -0.4774 -0.8787 -0.0017 +vn -0.5072 -0.8583 0.0772 +vn -0.0000 -0.2643 -0.9644 +vn -0.0000 -0.5021 -0.8648 +vn 0.2377 -0.5060 -0.8291 +vn 0.1926 -0.2631 -0.9453 +vn -0.0000 -0.7857 -0.6186 +vn 0.2944 -0.7672 -0.5698 +vn 0.6284 -0.6181 -0.4723 +vn 0.4963 -0.4353 -0.7511 +vn 0.3470 -0.2260 -0.9102 +vn -0.6284 -0.6181 -0.4723 +vn -0.2944 -0.7672 -0.5698 +vn -0.2377 -0.5060 -0.8291 +vn -0.4963 -0.4353 -0.7511 +vn -0.1926 -0.2631 -0.9453 +vn -0.3470 -0.2260 -0.9102 +vn -0.0000 -0.2890 -0.9573 +vn -0.0000 -0.1870 -0.9824 +vn 0.1531 -0.1695 -0.9736 +vn 0.1092 -0.2576 -0.9600 +vn 0.2325 -0.1211 -0.9650 +vn 0.1467 -0.1855 -0.9716 +vn -0.1531 -0.1695 -0.9736 +vn -0.2325 -0.1211 -0.9650 +vn -0.1092 -0.2576 -0.9601 +vn -0.1467 -0.1855 -0.9716 +vn -0.0000 -0.7609 -0.6488 +vn -0.0000 -0.4941 -0.8694 +vn 0.0649 -0.4595 -0.8858 +vn 0.0496 -0.7371 -0.6740 +vn 0.0762 -0.3784 -0.9225 +vn 0.0608 -0.6821 -0.7287 +vn -0.0649 -0.4595 -0.8858 +vn -0.0762 -0.3784 -0.9225 +vn -0.0496 -0.7371 -0.6740 +vn -0.0608 -0.6821 -0.7287 +vn 0.0686 -0.9546 -0.2900 +vn 0.1082 -0.9353 -0.3368 +vn -0.0000 -0.9635 -0.2677 +vn -0.0686 -0.9546 -0.2900 +vn -0.1082 -0.9353 -0.3368 +vn 0.2316 -0.8966 -0.3774 +vn 0.6110 -0.6766 -0.4110 +vn 0.1463 -0.6107 -0.7782 +vn 0.4377 -0.4731 -0.7646 +vn -0.2316 -0.8966 -0.3774 +vn -0.1463 -0.6107 -0.7782 +vn -0.6110 -0.6766 -0.4110 +vn -0.4377 -0.4731 -0.7646 +vn 0.8915 -0.2121 -0.4003 +vn 0.9282 0.0533 -0.3683 +vn 0.5538 -0.1552 -0.8181 +vn 0.6229 0.0304 -0.7817 +vn -0.8915 -0.2121 -0.4003 +vn -0.5538 -0.1552 -0.8181 +vn -0.9282 0.0533 -0.3683 +vn -0.6229 0.0304 -0.7817 +vn 0.9311 0.1261 -0.3422 +vn 0.9377 0.1355 -0.3199 +vn 0.6836 0.0826 -0.7251 +vn 0.7551 0.0592 -0.6529 +vn -0.9311 0.1261 -0.3422 +vn -0.6836 0.0826 -0.7251 +vn -0.9377 0.1355 -0.3199 +vn -0.7551 0.0592 -0.6529 +vn 0.2689 -0.0825 -0.9596 +vn 0.3807 -0.0301 -0.9242 +vn 0.5331 -0.1024 -0.8398 +vn -0.3807 -0.0301 -0.9242 +vn -0.5331 -0.1024 -0.8398 +vn -0.2689 -0.0825 -0.9596 +vn 0.1695 -0.2653 -0.9491 +vn -0.1695 -0.2653 -0.9491 +vn 0.9281 0.0178 -0.3719 +vn 0.8463 0.0229 -0.5322 +vn 0.7177 -0.2166 -0.6618 +vn 0.8595 -0.2937 -0.4183 +vn -0.7177 -0.2166 -0.6618 +vn -0.8463 0.0229 -0.5322 +vn -0.9281 0.0178 -0.3719 +vn -0.8595 -0.2937 -0.4183 +vn 0.9503 0.1400 -0.2782 +vn 0.9625 0.1779 -0.2049 +vn -0.9503 0.1400 -0.2782 +vn -0.9625 0.1779 -0.2049 +vn 0.9933 0.1126 0.0252 +vn 0.9797 0.0957 0.1763 +vn 0.9232 -0.3730 0.0921 +vn 0.8822 -0.3677 0.2940 +vn 0.8059 -0.3343 0.4886 +vn 0.9551 0.0714 0.2875 +vn -0.8059 -0.3343 0.4886 +vn -0.8822 -0.3677 0.2940 +vn -0.9797 0.0957 0.1763 +vn -0.9551 0.0714 0.2875 +vn -0.9232 -0.3730 0.0921 +vn -0.9933 0.1126 0.0252 +vn 0.9779 0.1805 -0.1057 +vn 0.9804 -0.0901 -0.1750 +vn -0.9804 -0.0901 -0.1750 +vn -0.9779 0.1805 -0.1057 +vn 0.9210 -0.2834 0.2673 +vn 0.5870 -0.8005 0.1205 +vn 0.7439 -0.5114 0.4303 +vn 0.5124 -0.8417 0.1705 +vn -0.9210 -0.2834 0.2673 +vn -0.7439 -0.5114 0.4303 +vn -0.5870 -0.8005 0.1205 +vn -0.5124 -0.8417 0.1705 +vn 0.3445 -0.9379 0.0414 +vn 0.4025 -0.8981 0.1770 +vn -0.4025 -0.8981 0.1770 +vn -0.3445 -0.9379 0.0414 +vn -0.0000 -0.2479 -0.9688 +vn 0.2551 -0.2597 -0.9314 +vn 0.2511 -0.4973 -0.8304 +vn -0.0000 -0.4986 -0.8668 +vn 0.3984 -0.2872 -0.8711 +vn 0.4002 -0.5020 -0.7667 +vn 0.4289 -0.6941 -0.5782 +vn 0.2495 -0.7124 -0.6560 +vn -0.0000 -0.7221 -0.6918 +vn -0.4289 -0.6941 -0.5782 +vn -0.4002 -0.5020 -0.7667 +vn -0.2511 -0.4973 -0.8304 +vn -0.2495 -0.7124 -0.6560 +vn -0.3984 -0.2872 -0.8711 +vn -0.2551 -0.2597 -0.9314 +vn 0.2496 -0.8497 -0.4645 +vn -0.0000 -0.8683 -0.4960 +vn 0.4522 -0.8002 -0.3940 +vn 0.4640 -0.8567 -0.2254 +vn 0.2514 -0.9231 -0.2910 +vn -0.0000 -0.9481 -0.3181 +vn -0.4640 -0.8567 -0.2254 +vn -0.4522 -0.8002 -0.3940 +vn -0.2496 -0.8497 -0.4645 +vn -0.2514 -0.9231 -0.2910 +vn 0.2721 -0.9468 -0.1719 +vn -0.0000 -0.9791 -0.2034 +vn 0.5011 -0.8603 -0.0942 +vn 0.5904 -0.8066 -0.0277 +vn 0.3038 -0.9408 -0.1506 +vn -0.0000 -0.9831 -0.1832 +vn -0.5904 -0.8066 -0.0277 +vn -0.5011 -0.8603 -0.0942 +vn -0.2721 -0.9468 -0.1719 +vn -0.3038 -0.9408 -0.1506 +vn 0.3199 -0.9050 -0.2806 +vn -0.0000 -0.9479 -0.3186 +vn 0.6461 -0.7417 -0.1798 +vn -0.6461 -0.7417 -0.1798 +vn -0.3199 -0.9050 -0.2806 +vn 0.8892 -0.4329 -0.1481 +vn 0.7903 -0.6097 0.0611 +vn -0.8892 -0.4329 -0.1481 +vn -0.7903 -0.6097 0.0611 +vn 0.8402 -0.5210 0.1507 +vn 0.9639 -0.2439 0.1066 +vn 0.6688 -0.7228 0.1740 +vn 0.6925 -0.7044 0.1558 +vn 0.8885 -0.4392 0.1331 +vn 0.9779 -0.1643 0.1291 +vn -0.6925 -0.7044 0.1558 +vn -0.6688 -0.7228 0.1740 +vn -0.8402 -0.5210 0.1507 +vn -0.8885 -0.4392 0.1331 +vn -0.9639 -0.2439 0.1066 +vn -0.9779 -0.1643 0.1291 +vn -0.0000 0.3250 -0.9457 +vn 0.2646 0.2940 -0.9185 +vn 0.2605 -0.0139 -0.9654 +vn -0.0000 0.0119 -0.9999 +vn 0.4123 0.2265 -0.8824 +vn 0.4080 -0.0727 -0.9101 +vn -0.4080 -0.0727 -0.9101 +vn -0.2605 -0.0139 -0.9654 +vn -0.4123 0.2265 -0.8824 +vn -0.2646 0.2940 -0.9185 +vn -0.0000 0.8304 0.5572 +vn 0.1777 0.8131 0.5543 +vn 0.1527 0.9467 0.2838 +vn -0.0000 0.9596 0.2813 +vn 0.3991 0.7549 0.5205 +vn 0.3707 0.8884 0.2707 +vn 0.3413 0.9399 0.0092 +vn 0.1387 0.9903 0.0114 +vn -0.0000 1.0000 0.0089 +vn -0.3413 0.9399 0.0092 +vn -0.3707 0.8884 0.2707 +vn -0.1527 0.9467 0.2838 +vn -0.1387 0.9903 0.0114 +vn -0.3991 0.7549 0.5205 +vn -0.1777 0.8131 0.5543 +vn 0.1515 0.9542 -0.2579 +vn -0.0000 0.9667 -0.2561 +vn 0.3302 0.9065 -0.2629 +vn 0.3469 0.7600 -0.5496 +vn 0.1957 0.8175 -0.5416 +vn -0.0000 0.8404 -0.5419 +vn -0.3469 0.7600 -0.5496 +vn -0.3302 0.9065 -0.2629 +vn -0.1515 0.9542 -0.2579 +vn -0.1957 0.8175 -0.5416 +vn 0.2437 0.5898 -0.7699 +vn -0.0000 0.6208 -0.7839 +vn 0.3861 0.5223 -0.7604 +vn -0.3861 0.5223 -0.7604 +vn -0.2437 0.5898 -0.7699 +vn 0.6074 0.7944 0.0011 +vn 0.4599 0.8858 0.0625 +vn 0.8574 0.5139 -0.0262 +vn 0.8532 0.4730 0.2198 +vn 0.6358 0.7047 0.3149 +vn 0.5391 0.7470 0.3890 +vn -0.8532 0.4730 0.2198 +vn -0.8574 0.5139 -0.0262 +vn -0.6074 0.7944 0.0011 +vn -0.6358 0.7047 0.3149 +vn -0.4599 0.8858 0.0625 +vn -0.5391 0.7470 0.3890 +vn 0.6343 0.6138 0.4700 +vn 0.5841 0.6305 0.5112 +vn 0.8376 0.4183 0.3514 +vn 0.8551 0.4342 0.2834 +vn 0.6814 0.6273 0.3771 +vn 0.6353 0.6606 0.4000 +vn -0.8551 0.4342 0.2834 +vn -0.8376 0.4183 0.3514 +vn -0.6343 0.6138 0.4700 +vn -0.6814 0.6273 0.3771 +vn -0.5841 0.6305 0.5112 +vn -0.6353 0.6606 0.4000 +vn 0.7372 0.6553 0.1646 +vn 0.6636 0.7255 0.1825 +vn 0.8852 0.4530 0.1060 +vn 0.9017 0.4289 -0.0543 +vn 0.7643 0.6437 -0.0389 +vn 0.6643 0.7465 -0.0372 +vn -0.9017 0.4289 -0.0543 +vn -0.8852 0.4530 0.1060 +vn -0.7372 0.6553 0.1646 +vn -0.7643 0.6437 -0.0389 +vn -0.6636 0.7255 0.1825 +vn -0.6643 0.7465 -0.0372 +vn 0.7623 0.5936 -0.2578 +vn 0.6412 0.7086 -0.2946 +vn 0.8998 0.3810 -0.2126 +vn 0.8587 0.3156 -0.4038 +vn 0.7302 0.4453 -0.5182 +vn 0.5979 0.5576 -0.5759 +vn -0.8587 0.3156 -0.4038 +vn -0.8998 0.3810 -0.2126 +vn -0.7623 0.5936 -0.2578 +vn -0.7302 0.4453 -0.5182 +vn -0.6412 0.7086 -0.2946 +vn -0.5979 0.5576 -0.5759 +vn 0.6676 0.0944 -0.7385 +vn 0.6473 -0.0287 -0.7617 +vn 0.6943 0.2153 -0.6868 +vn 0.8444 0.1804 -0.5044 +vn 0.5727 0.0302 -0.8192 +vn 0.5770 0.3130 -0.7544 +vn -0.5770 0.3130 -0.7544 +vn -0.6943 0.2153 -0.6868 +vn -0.5727 0.0302 -0.8192 +vn -0.6473 -0.0287 -0.7617 +vn -0.6676 0.0944 -0.7385 +vn -0.8444 0.1804 -0.5044 +vn 0.4788 0.4285 -0.7662 +vn 0.4998 0.1334 -0.8558 +vn 0.4799 0.6679 -0.5688 +vn -0.4799 0.6679 -0.5688 +vn -0.4788 0.4285 -0.7662 +vn -0.4998 0.1334 -0.8558 +vn 0.5147 0.8099 -0.2812 +vn 0.5500 0.8350 -0.0136 +vn -0.5500 0.8350 -0.0136 +vn -0.5147 0.8099 -0.2812 +vn 0.5775 0.7855 0.2224 +vn 0.5880 0.6753 0.4452 +vn -0.5880 0.6753 0.4452 +vn -0.5775 0.7855 0.2224 +vn 0.4033 0.6517 0.6423 +vn 0.5657 0.6118 0.5529 +vn 0.3484 0.7561 0.5540 +vn 0.4996 0.7462 0.4400 +vn -0.4996 0.7462 0.4400 +vn -0.5657 0.6118 0.5529 +vn -0.3484 0.7561 0.5540 +vn -0.4033 0.6517 0.6423 +vn 0.3715 0.9258 0.0695 +vn 0.1916 0.9760 0.1032 +vn -0.3715 0.9258 0.0695 +vn -0.1916 0.9760 0.1032 +vn -0.0000 0.6621 0.7494 +vn 0.1717 0.7236 0.6685 +vn 0.1965 0.6891 0.6975 +vn -0.0000 0.7033 0.7109 +vn -0.1965 0.6891 0.6975 +vn -0.1717 0.7236 0.6685 +vn -0.2176 0.3981 -0.8912 +vn -0.1949 0.8115 -0.5509 +vn 0.2176 0.3981 -0.8912 +vn 0.1949 0.8115 -0.5509 +vn 0.0164 0.9515 0.3071 +vn -0.0872 0.8147 0.5733 +vn -0.0164 0.9515 0.3071 +vn 0.0872 0.8147 0.5733 +vn -0.1283 0.6960 0.7065 +vn -0.0000 0.6394 0.7689 +vn 0.1283 0.6960 0.7065 +vn 0.9921 0.1186 0.0406 +vn 0.9754 0.1402 0.1702 +vn -0.9921 0.1186 0.0406 +vn -0.9754 0.1402 0.1702 +vn 0.9905 -0.1123 0.0793 +vn 0.9676 0.1460 0.2058 +vn 0.9943 -0.0987 0.0402 +vn 0.9737 0.1750 0.1455 +vn -0.9737 0.1750 0.1455 +vn -0.9676 0.1460 0.2058 +vn -0.9943 -0.0987 0.0402 +vn -0.9905 -0.1123 0.0793 +vn 0.9973 0.0642 0.0368 +vn 0.9751 0.2196 0.0325 +vn 0.8847 0.4511 0.1173 +vn 0.9659 0.2438 -0.0870 +vn -0.9659 0.2438 -0.0870 +vn -0.9751 0.2196 0.0325 +vn -0.8847 0.4511 0.1173 +vn -0.9973 0.0642 0.0368 +vn 0.9437 0.2192 -0.2478 +vn 0.6933 0.5788 -0.4293 +vn -0.9437 0.2192 -0.2478 +vn -0.6933 0.5788 -0.4293 +vn 0.6079 -0.7937 -0.0223 +vn 0.6531 -0.7525 0.0851 +vn 0.5810 -0.7954 -0.1724 +vn 0.5341 -0.8274 -0.1735 +vn 0.5495 -0.8354 0.0096 +vn 0.5777 -0.8031 0.1457 +vn -0.5341 -0.8274 -0.1735 +vn -0.5810 -0.7954 -0.1724 +vn -0.6079 -0.7937 -0.0223 +vn -0.5495 -0.8354 0.0096 +vn -0.6531 -0.7525 0.0851 +vn -0.5777 -0.8031 0.1457 +vn 0.5175 -0.8421 0.1522 +vn 0.4546 -0.8894 0.0475 +vn 0.5178 -0.8478 0.1146 +vn 0.3757 -0.9118 -0.1657 +vn 0.2222 -0.9750 -0.0030 +vn -0.4546 -0.8894 0.0475 +vn -0.3757 -0.9118 -0.1657 +vn -0.5175 -0.8421 0.1522 +vn -0.5178 -0.8478 0.1146 +vn -0.2222 -0.9750 -0.0030 +vn 0.5322 -0.8277 0.1780 +vn 0.5299 -0.8242 0.2000 +vn -0.5299 -0.8242 0.2000 +vn -0.5322 -0.8277 0.1780 +vn 0.5553 -0.7280 0.4021 +vn 0.6461 -0.7127 0.2730 +vn 0.6916 -0.6947 0.1975 +vn -0.6461 -0.7127 0.2730 +vn -0.6916 -0.6947 0.1975 +vn -0.5553 -0.7280 0.4021 +vn 0.7022 -0.6971 0.1448 +vn -0.7022 -0.6971 0.1448 +vn 0.5121 -0.7082 0.4859 +vn -0.5121 -0.7082 0.4859 +vn 0.5194 -0.2753 -0.8090 +vn 0.5563 -0.3063 -0.7724 +vn 0.3264 -0.6042 -0.7269 +vn 0.4432 -0.6005 -0.6656 +vn 0.5626 -0.5387 -0.6271 +vn 0.5558 -0.2672 -0.7872 +vn -0.5626 -0.5387 -0.6271 +vn -0.4432 -0.6005 -0.6656 +vn -0.5563 -0.3063 -0.7724 +vn -0.5558 -0.2672 -0.7872 +vn -0.3264 -0.6042 -0.7269 +vn -0.5194 -0.2753 -0.8090 +vn 0.5072 -0.1654 -0.8458 +vn 0.5185 -0.3626 -0.7743 +vn -0.5072 -0.1654 -0.8458 +vn -0.5185 -0.3626 -0.7743 +vn 0.3583 -0.8245 -0.4379 +vn 0.1396 -0.8795 -0.4550 +vn 0.5435 -0.7484 -0.3802 +vn -0.5435 -0.7484 -0.3802 +vn -0.3583 -0.8245 -0.4379 +vn -0.1396 -0.8795 -0.4550 +vn 0.5823 -0.7371 -0.3429 +vn 0.5707 -0.6342 -0.5216 +vn -0.5707 -0.6342 -0.5216 +vn -0.5823 -0.7371 -0.3429 +vn 0.5159 -0.4971 -0.6976 +vn -0.5159 -0.4971 -0.6976 +vn -0.1641 0.9738 0.1574 +vn -0.3187 0.9294 0.1862 +vn 0.1734 0.5729 0.8011 +vn 0.2844 0.5417 0.7910 +vn -0.4461 0.8609 0.2445 +vn 0.0489 0.5321 0.8453 +vn 0.5149 -0.1142 0.8496 +vn 0.5638 -0.1233 0.8167 +vn 0.5489 -0.1863 0.8148 +vn -0.5149 -0.1142 0.8496 +vn -0.0489 0.5321 0.8453 +vn -0.1734 0.5729 0.8011 +vn -0.5638 -0.1233 0.8167 +vn 0.4461 0.8609 0.2445 +vn 0.3187 0.9294 0.1862 +vn 0.1641 0.9738 0.1574 +vn -0.2844 0.5417 0.7910 +vn -0.5489 -0.1863 0.8148 +vn 0.3607 0.4703 0.8054 +vn 0.0756 0.9797 0.1859 +vn 0.4613 -0.2319 0.8564 +vn 0.2860 -0.2225 0.9320 +vn 0.4307 0.3388 0.8365 +vn 0.4358 0.8568 0.2758 +vn -0.2860 -0.2225 0.9320 +vn -0.4613 -0.2319 0.8564 +vn -0.3607 0.4703 0.8054 +vn -0.4307 0.3388 0.8365 +vn -0.0756 0.9797 0.1859 +vn -0.4358 0.8568 0.2758 +vn 0.4253 0.1508 0.8924 +vn 0.7339 0.4879 0.4726 +vn 0.0465 -0.1638 0.9854 +vn -0.1340 -0.0599 0.9892 +vn 0.3748 0.0130 0.9270 +vn 0.7820 0.1011 0.6150 +vn 0.1340 -0.0599 0.9892 +vn -0.0465 -0.1638 0.9854 +vn -0.4253 0.1508 0.8924 +vn -0.3748 0.0130 0.9270 +vn -0.7339 0.4879 0.4726 +vn -0.7820 0.1011 0.6150 +vn 0.3751 -0.0704 0.9243 +vn 0.7641 -0.2042 0.6120 +vn -0.1901 0.1090 0.9757 +vn -0.0701 0.3285 0.9419 +vn 0.4450 -0.1314 0.8859 +vn 0.7263 -0.4892 0.4828 +vn 0.0701 0.3285 0.9419 +vn 0.1901 0.1090 0.9757 +vn -0.3751 -0.0704 0.9243 +vn -0.4450 -0.1314 0.8859 +vn -0.7641 -0.2042 0.6120 +vn -0.7263 -0.4892 0.4828 +vn 0.5404 -0.2353 0.8079 +vn 0.6075 -0.7262 0.3219 +vn 0.1960 0.4191 0.8865 +vn 0.4476 0.3134 0.8375 +vn 0.5852 -0.3889 0.7116 +vn 0.4415 -0.8709 0.2157 +vn -0.4476 0.3134 0.8375 +vn -0.1960 0.4191 0.8865 +vn -0.5404 -0.2353 0.8079 +vn -0.5852 -0.3889 0.7116 +vn -0.6075 -0.7262 0.3219 +vn -0.4415 -0.8709 0.2157 +vn 0.5074 -0.5042 0.6988 +vn 0.2692 -0.9441 0.1903 +vn 0.5229 0.1853 0.8320 +vn 0.3736 0.2697 0.8875 +vn 0.2805 -0.4555 0.8449 +vn 0.0634 -0.9713 0.2291 +vn -0.3736 0.2697 0.8875 +vn -0.5229 0.1853 0.8320 +vn -0.5074 -0.5042 0.6988 +vn -0.2805 -0.4555 0.8449 +vn -0.2692 -0.9441 0.1903 +vn -0.0634 -0.9713 0.2291 +vn 0.1151 0.7890 0.6035 +vn 0.3260 0.6939 0.6421 +vn -0.1165 0.9326 0.3417 +vn 0.1164 0.9080 0.4024 +vn 0.1410 0.9072 0.3964 +vn 0.2840 0.7138 0.6402 +vn -0.1410 0.9072 0.3964 +vn -0.1164 0.9080 0.4024 +vn -0.3260 0.6939 0.6421 +vn -0.2840 0.7138 0.6402 +vn 0.1165 0.9326 0.3417 +vn -0.1151 0.7890 0.6035 +vn -0.5723 0.6138 0.5438 +vn -0.2355 0.7933 0.5614 +vn -0.7578 0.6400 0.1269 +vn -0.4505 0.8595 0.2414 +vn 0.4505 0.8595 0.2414 +vn 0.2355 0.7933 0.5614 +vn 0.7578 0.6400 0.1269 +vn 0.5723 0.6138 0.5438 +vn -0.6953 -0.0864 0.7135 +vn -0.7615 0.2803 0.5845 +vn -0.9715 -0.0776 0.2240 +vn -0.9450 0.3152 0.0871 +vn 0.9450 0.3152 0.0871 +vn 0.7615 0.2803 0.5845 +vn 0.9715 -0.0776 0.2240 +vn 0.6953 -0.0864 0.7135 +vn 0.1007 -0.5302 0.8419 +vn -0.3575 -0.3885 0.8493 +vn -0.0803 -0.7280 0.6809 +vn -0.6796 -0.5173 0.5201 +vn 0.6796 -0.5173 0.5201 +vn 0.3575 -0.3885 0.8493 +vn 0.0803 -0.7280 0.6809 +vn -0.1007 -0.5302 0.8419 +vn 0.5569 -0.4946 0.6673 +vn 0.4060 -0.5372 0.7394 +vn 0.5237 -0.6319 0.5714 +vn 0.3339 -0.6988 0.6326 +vn -0.3339 -0.6988 0.6326 +vn -0.4060 -0.5372 0.7394 +vn -0.5237 -0.6319 0.5714 +vn -0.5569 -0.4946 0.6673 +vn 0.6373 -0.4343 0.6366 +vn 0.6457 -0.3977 0.6518 +vn 0.6830 -0.5161 0.5168 +vn 0.6353 -0.5621 0.5295 +vn -0.6830 -0.5161 0.5168 +vn -0.6457 -0.3977 0.6518 +vn -0.6373 -0.4343 0.6366 +vn -0.6353 -0.5621 0.5295 +vn 0.7257 -0.6726 0.1449 +vn 0.8400 -0.5400 0.0528 +vn 0.4702 -0.6997 0.5379 +vn 0.7190 0.1287 0.6830 +vn 0.9063 -0.4008 0.1342 +vn 0.9129 -0.4040 -0.0586 +vn -0.7190 0.1287 0.6830 +vn -0.4702 -0.6997 0.5379 +vn -0.7257 -0.6726 0.1449 +vn -0.9063 -0.4008 0.1342 +vn -0.8400 -0.5400 0.0528 +vn -0.9129 -0.4040 -0.0586 +vn -0.0479 -0.9738 0.2224 +vn 0.1606 -0.4179 0.8942 +vn 0.2647 0.4101 0.8728 +vn -0.1606 -0.4179 0.8942 +vn -0.2647 0.4101 0.8728 +vn 0.0479 -0.9738 0.2224 +vn 0.9356 -0.3524 0.0215 +vn 0.9461 -0.3200 -0.0499 +vn -0.9356 -0.3524 0.0215 +vn -0.9461 -0.3200 -0.0499 +vn 0.8413 0.0795 0.5347 +vn 0.2951 0.4027 0.8665 +vn -0.1732 0.9535 0.2465 +vn 0.7112 -0.2663 0.6506 +vn 0.5289 -0.1788 0.8296 +vn -0.5289 -0.1788 0.8296 +vn -0.2951 0.4027 0.8665 +vn -0.7112 -0.2663 0.6506 +vn -0.8413 0.0795 0.5347 +vn 0.1732 0.9535 0.2465 +vn 0.2187 0.8007 0.5577 +vn 0.1337 0.9365 0.3243 +vn 0.4764 0.7564 0.4482 +vn 0.5017 0.6236 0.5995 +vn -0.4764 0.7564 0.4482 +vn -0.1337 0.9365 0.3243 +vn -0.2187 0.8007 0.5577 +vn -0.5017 0.6236 0.5995 +vn 0.7523 0.0644 0.6557 +vn 0.7458 0.1408 0.6511 +vn 0.7255 0.2185 0.6526 +vn 0.7686 0.1973 0.6086 +vn 0.9326 -0.1456 0.3303 +vn 0.8810 0.0292 0.4721 +vn -0.8810 0.0292 0.4721 +vn -0.7255 0.2185 0.6526 +vn -0.9326 -0.1456 0.3303 +vn -0.7458 0.1408 0.6511 +vn -0.7523 0.0644 0.6557 +vn -0.7686 0.1973 0.6086 +vn 0.9288 -0.0157 0.3702 +vn 0.9224 -0.0194 0.3858 +vn 0.7150 0.3398 0.6110 +vn 0.6943 0.5129 0.5049 +vn 0.6969 0.3399 0.6315 +vn 0.6038 0.5866 0.5397 +vn -0.7150 0.3398 0.6110 +vn -0.6969 0.3399 0.6315 +vn -0.9224 -0.0194 0.3858 +vn -0.9288 -0.0157 0.3702 +vn -0.6943 0.5129 0.5049 +vn -0.6038 0.5866 0.5397 +vn 0.7355 -0.5522 0.3925 +vn 0.7948 -0.4662 0.3885 +vn 0.8787 -0.4009 0.2591 +vn 0.8222 -0.4906 0.2886 +vn 0.8908 -0.3952 0.2242 +vn 0.9205 -0.3672 0.1335 +vn -0.9205 -0.3672 0.1335 +vn -0.8787 -0.4009 0.2591 +vn -0.8908 -0.3952 0.2242 +vn -0.7948 -0.4662 0.3885 +vn -0.7355 -0.5522 0.3925 +vn -0.8222 -0.4906 0.2886 +vn 0.8493 -0.3396 0.4042 +vn 0.7228 -0.4366 0.5358 +vn 0.6500 -0.4103 0.6397 +vn 0.6992 -0.5271 0.4831 +vn 0.6837 -0.5079 0.5240 +vn -0.7228 -0.4366 0.5358 +vn -0.6992 -0.5271 0.4831 +vn -0.8493 -0.3396 0.4042 +vn -0.6500 -0.4103 0.6397 +vn -0.6837 -0.5079 0.5240 +vn 0.6233 -0.3979 0.6732 +vn 0.6852 -0.5036 0.5263 +vn -0.6233 -0.3979 0.6732 +vn -0.6852 -0.5036 0.5263 +vn 0.9558 -0.2884 0.0574 +vn 0.9729 -0.1417 0.1826 +vn -0.9729 -0.1417 0.1826 +vn -0.9558 -0.2884 0.0574 +vn 0.9356 -0.3531 -0.0084 +vn 0.9436 -0.3308 0.0104 +vn -0.9436 -0.3308 0.0104 +vn -0.9356 -0.3531 -0.0084 +vn 0.9699 -0.1924 0.1495 +vn -0.9699 -0.1924 0.1495 +vn 0.6900 -0.5086 0.5149 +vn 0.6788 -0.5033 0.5347 +vn 0.6863 -0.5212 0.5073 +vn 0.5666 -0.3556 0.7433 +vn 0.5968 -0.3219 0.7349 +vn 0.6057 -0.2638 0.7507 +vn -0.5666 -0.3556 0.7433 +vn -0.6863 -0.5212 0.5073 +vn -0.6900 -0.5086 0.5149 +vn -0.5968 -0.3219 0.7349 +vn -0.6788 -0.5033 0.5347 +vn -0.6057 -0.2638 0.7507 +vn 0.6744 -0.5436 0.4996 +vn 0.6717 -0.5709 0.4721 +vn 0.4732 -0.3899 0.7900 +vn 0.5174 -0.3778 0.7678 +vn -0.4732 -0.3899 0.7900 +vn -0.6717 -0.5709 0.4721 +vn -0.6744 -0.5436 0.4996 +vn -0.5174 -0.3778 0.7678 +vn 0.7363 -0.5288 0.4221 +vn 0.8717 -0.0322 0.4890 +vn 0.6350 -0.0644 0.7698 +vn 0.4998 -0.3344 0.7990 +vn -0.6350 -0.0644 0.7698 +vn -0.8717 -0.0322 0.4890 +vn -0.7363 -0.5288 0.4221 +vn -0.4998 -0.3344 0.7990 +vn 0.6411 0.5509 0.5343 +vn 0.5956 0.5678 0.5682 +vn 0.4178 0.3398 0.8426 +vn 0.4452 0.3038 0.8423 +vn -0.4178 0.3398 0.8426 +vn -0.5956 0.5678 0.5682 +vn -0.6411 0.5509 0.5343 +vn -0.4452 0.3038 0.8423 +vn 0.7279 0.2866 0.6228 +vn 0.7697 -0.0146 0.6382 +vn 0.4169 0.1648 0.8939 +vn 0.4712 0.2155 0.8553 +vn -0.4169 0.1648 0.8939 +vn -0.7697 -0.0146 0.6382 +vn -0.7280 0.2866 0.6228 +vn -0.4712 0.2155 0.8553 +vn 0.7589 0.1352 0.6370 +vn 0.4584 0.7549 0.4690 +vn 0.2412 0.7286 0.6411 +vn 0.3485 0.3618 0.8647 +vn -0.2412 0.7286 0.6411 +vn -0.4584 0.7549 0.4690 +vn -0.7589 0.1352 0.6370 +vn -0.3485 0.3618 0.8647 +vn 0.0426 0.9537 0.2976 +vn 0.0740 0.9218 0.3806 +vn 0.1537 0.7195 0.6772 +vn -0.0670 0.8325 0.5499 +vn -0.1537 0.7195 0.6772 +vn -0.0740 0.9218 0.3806 +vn -0.0426 0.9537 0.2976 +vn 0.0670 0.8325 0.5499 +vn 0.6301 -0.5240 0.5731 +vn 0.5230 -0.5887 0.6164 +vn 0.5828 -0.2013 0.7873 +vn 0.5250 -0.1935 0.8288 +vn -0.6301 -0.5240 0.5731 +vn -0.5828 -0.2013 0.7873 +vn -0.5230 -0.5887 0.6164 +vn -0.5250 -0.1935 0.8288 +vn 0.3170 -0.6756 0.6657 +vn -0.1027 -0.6680 0.7371 +vn 0.4032 -0.2088 0.8909 +vn 0.2651 -0.1542 0.9518 +vn -0.3170 -0.6756 0.6657 +vn -0.4032 -0.2088 0.8909 +vn 0.1027 -0.6680 0.7371 +vn -0.2651 -0.1542 0.9518 +vn -0.5679 -0.4139 0.7114 +vn -0.7658 -0.0395 0.6418 +vn 0.1756 -0.0386 0.9837 +vn 0.1739 0.0074 0.9847 +vn 0.5679 -0.4139 0.7114 +vn -0.1756 -0.0386 0.9837 +vn 0.7658 -0.0395 0.6418 +vn -0.1739 0.0074 0.9847 +vn -0.7202 0.2947 0.6281 +vn -0.5241 0.5807 0.6229 +vn 0.1997 0.0224 0.9796 +vn 0.2334 0.0931 0.9679 +vn 0.7202 0.2947 0.6281 +vn -0.1997 0.0224 0.9796 +vn 0.5241 0.5807 0.6229 +vn -0.2334 0.0931 0.9679 +vn -0.2410 0.7725 0.5876 +vn 0.0218 0.8514 0.5241 +vn 0.3012 0.2151 0.9290 +vn 0.3923 0.3543 0.8488 +vn 0.2410 0.7725 0.5876 +vn -0.3012 0.2151 0.9290 +vn -0.0218 0.8514 0.5241 +vn -0.3923 0.3543 0.8488 +vn 0.1458 0.8754 0.4609 +vn 0.4030 0.5006 0.7661 +vn -0.1458 0.8754 0.4609 +vn -0.4030 0.5006 0.7661 +vn 0.2142 0.1257 0.9687 +vn 0.2169 0.0905 0.9720 +vn 0.1387 0.2465 0.9592 +vn 0.2589 0.1805 0.9489 +vn 0.2325 0.0869 0.9687 +vn 0.2162 0.0100 0.9763 +vn -0.2589 0.1805 0.9489 +vn -0.1387 0.2465 0.9592 +vn -0.2142 0.1257 0.9687 +vn -0.2325 0.0869 0.9687 +vn -0.2169 0.0905 0.9720 +vn -0.2162 0.0100 0.9763 +vn 0.3294 0.0444 0.9432 +vn 0.2915 -0.0103 0.9565 +vn 0.4082 0.0763 0.9097 +vn 0.4499 -0.0211 0.8928 +vn 0.3771 -0.0051 0.9262 +vn 0.3477 -0.0212 0.9374 +vn -0.4499 -0.0211 0.8928 +vn -0.4082 0.0763 0.9097 +vn -0.3294 0.0444 0.9432 +vn -0.3771 -0.0051 0.9262 +vn -0.2915 -0.0103 0.9565 +vn -0.3477 -0.0212 0.9374 +vn 0.3690 -0.0399 0.9286 +vn 0.3615 -0.0148 0.9322 +vn 0.4244 -0.0969 0.9003 +vn 0.4014 -0.1418 0.9049 +vn 0.3396 -0.0436 0.9396 +vn 0.3429 0.0348 0.9387 +vn -0.4014 -0.1418 0.9049 +vn -0.4244 -0.0969 0.9003 +vn -0.3690 -0.0399 0.9286 +vn -0.3396 -0.0436 0.9396 +vn -0.3615 -0.0148 0.9322 +vn -0.3429 0.0348 0.9387 +vn 0.3549 0.0190 0.9347 +vn 0.3433 0.1473 0.9276 +vn 0.4274 -0.1097 0.8974 +vn 0.4874 -0.0052 0.8731 +vn 0.4354 0.1345 0.8901 +vn 0.3912 0.2643 0.8815 +vn -0.4875 -0.0052 0.8731 +vn -0.4274 -0.1097 0.8974 +vn -0.3549 0.0190 0.9347 +vn -0.4354 0.1345 0.8901 +vn -0.3433 0.1473 0.9276 +vn -0.3912 0.2643 0.8815 +vn 0.4280 0.1277 0.8947 +vn 0.4204 0.2350 0.8764 +vn 0.4447 -0.0071 0.8956 +vn -0.4447 -0.0071 0.8956 +vn -0.4280 0.1277 0.8947 +vn -0.4204 0.2350 0.8764 +vn 0.4001 -0.1245 0.9080 +vn 0.4398 -0.0910 0.8935 +vn -0.4398 -0.0910 0.8935 +vn -0.4001 -0.1245 0.9080 +vn 0.3299 -0.1328 0.9346 +vn 0.2559 -0.1197 0.9593 +vn -0.2559 -0.1197 0.9593 +vn -0.3299 -0.1328 0.9346 +vn 0.2509 -0.0242 0.9677 +vn -0.2509 -0.0242 0.9677 +vn 0.0087 0.4996 0.8662 +vn 0.2446 0.3657 0.8980 +vn -0.2446 0.3657 0.8980 +vn -0.0087 0.4996 0.8662 +vn 0.4971 0.0223 0.8674 +vn 0.4715 0.1606 0.8671 +vn -0.4715 0.1606 0.8671 +vn -0.4971 0.0223 0.8674 +vn 0.4384 -0.1465 0.8867 +vn 0.4513 -0.0851 0.8883 +vn -0.4513 -0.0851 0.8883 +vn -0.4384 -0.1465 0.8867 +vn 0.5058 0.0135 0.8625 +vn 0.4748 -0.1225 0.8715 +vn -0.4748 -0.1225 0.8715 +vn -0.5058 0.0135 0.8625 +vn 0.4209 0.2692 0.8662 +vn 0.4769 0.1791 0.8605 +vn -0.4769 0.1791 0.8605 +vn -0.4209 0.2692 0.8662 +vn 0.4146 0.2707 0.8688 +vn -0.4146 0.2707 0.8688 +vn -0.0639 -0.8857 -0.4599 +vn 0.0923 -0.8636 -0.4956 +vn -0.1065 -0.9002 -0.4223 +vn -0.1672 -0.4827 -0.8597 +vn -0.3212 -0.3945 -0.8609 +vn -0.2395 -0.3714 -0.8970 +vn 0.1672 -0.4827 -0.8597 +vn 0.1065 -0.9002 -0.4223 +vn 0.0639 -0.8857 -0.4599 +vn 0.3212 -0.3945 -0.8609 +vn -0.0923 -0.8636 -0.4956 +vn 0.2395 -0.3714 -0.8970 +vn 0.3794 -0.8071 -0.4524 +vn 0.7109 -0.6445 -0.2816 +vn -0.0174 -0.3740 -0.9272 +vn 0.3559 -0.3679 -0.8590 +vn -0.3794 -0.8071 -0.4524 +vn 0.0174 -0.3740 -0.9272 +vn -0.7109 -0.6445 -0.2816 +vn -0.3559 -0.3679 -0.8590 +vn 0.9474 -0.3196 0.0159 +vn 0.9819 0.1370 0.1305 +vn 0.7376 -0.1930 -0.6471 +vn 0.9073 0.0932 -0.4101 +vn -0.9474 -0.3196 0.0159 +vn -0.7376 -0.1930 -0.6471 +vn -0.9819 0.1370 0.1305 +vn -0.9073 0.0932 -0.4101 +vn 0.7795 0.5859 -0.2216 +vn 0.2790 0.8212 -0.4978 +vn 0.5868 0.3405 -0.7346 +vn 0.0473 0.3824 -0.9228 +vn -0.7795 0.5859 -0.2215 +vn -0.5868 0.3405 -0.7346 +vn -0.2790 0.8212 -0.4978 +vn -0.0473 0.3824 -0.9228 +vn -0.1932 0.8031 -0.5637 +vn -0.4152 0.7458 -0.5209 +vn -0.2824 0.3057 -0.9093 +vn -0.4283 0.2876 -0.8567 +vn 0.1932 0.8031 -0.5637 +vn 0.2824 0.3057 -0.9093 +vn 0.4152 0.7458 -0.5209 +vn 0.4283 0.2876 -0.8567 +vn -0.5146 0.7343 -0.4427 +vn -0.5589 0.7450 -0.3641 +vn -0.4825 0.3098 -0.8193 +vn -0.3762 0.3767 -0.8465 +vn 0.5146 0.7343 -0.4427 +vn 0.4825 0.3098 -0.8193 +vn 0.5589 0.7450 -0.3641 +vn 0.3762 0.3767 -0.8465 +vn -0.3624 -0.0235 -0.9317 +vn -0.3971 -0.0257 -0.9174 +vn -0.1497 -0.0726 -0.9861 +vn 0.3971 -0.0257 -0.9174 +vn 0.1497 -0.0726 -0.9861 +vn 0.3624 -0.0235 -0.9317 +vn -0.2247 -0.0248 -0.9741 +vn -0.0188 -0.0188 -0.9996 +vn 0.0188 -0.0188 -0.9996 +vn 0.2247 -0.0248 -0.9741 +vn 0.3738 0.0414 -0.9266 +vn -0.3738 0.0414 -0.9266 +vn -0.1736 0.8642 -0.4722 +vn 0.2271 0.3033 -0.9254 +vn 0.1736 0.8642 -0.4722 +vn -0.2271 0.3033 -0.9254 +vn 0.2882 -0.1866 -0.9392 +vn 0.1160 -0.5685 -0.8144 +vn -0.2882 -0.1866 -0.9392 +vn -0.1160 -0.5685 -0.8144 +vn -0.0693 -0.8966 -0.4374 +vn 0.0693 -0.8966 -0.4374 +vt 0.870030 0.588378 +vt 0.867419 0.822754 +vt 0.862604 0.563786 +vt 0.858909 0.846992 +vt 0.853018 0.521562 +vt 0.847458 0.888748 +vt 0.798481 0.569535 +vt 0.795104 0.838402 +vt 0.833214 0.591819 +vt 0.830792 0.817682 +vt 0.853983 0.603992 +vt 0.852082 0.806443 +vt 0.853339 0.625762 +vt 0.852404 0.784665 +vt 0.831397 0.632598 +vt 0.830788 0.776862 +vt 0.791018 0.645443 +vt 0.791018 0.762238 +vt 0.842358 0.702491 +vt 0.844839 0.707525 +vt 0.858085 0.663593 +vt 0.858824 0.747083 +vt 0.867752 0.642278 +vt 0.867536 0.768806 +vt 0.890327 0.642560 +vt 0.890101 0.769527 +vt 0.899331 0.663258 +vt 0.900015 0.749248 +vt 0.918898 0.699697 +vt 0.921180 0.713713 +vt 0.968392 0.645333 +vt 0.968213 0.770220 +vt 0.928547 0.634539 +vt 0.927927 0.779235 +vt 0.906442 0.627606 +vt 0.905536 0.785180 +vt 0.907144 0.605091 +vt 0.905239 0.807704 +vt 0.929700 0.593878 +vt 0.927275 0.819908 +vt 0.968392 0.573812 +vt 0.965038 0.841671 +vt 0.920166 0.524546 +vt 0.914672 0.888748 +vt 0.902530 0.564230 +vt 0.898815 0.848320 +vt 0.891866 0.588564 +vt 0.889242 0.823537 +vt 0.887736 0.598020 +vt 0.885535 0.813907 +vt 0.897747 0.609290 +vt 0.896037 0.803092 +vt 0.896611 0.624069 +vt 0.895558 0.788278 +vt 0.886375 0.633061 +vt 0.885732 0.778841 +vt 0.872419 0.632307 +vt 0.871755 0.778974 +vt 0.863131 0.622588 +vt 0.862045 0.788271 +vt 0.879691 0.616207 +vt 0.878306 0.795381 +vt 0.863259 0.609033 +vt 0.861571 0.801818 +vt 0.873321 0.598226 +vt 0.871144 0.813061 +vt 0.521999 0.388854 +vt 0.521048 0.341672 +vt 0.518927 0.097638 +vt 0.519000 0.161350 +vt 0.518956 0.187619 +vt 0.518925 0.083725 +vt 0.523031 0.433628 +vt 0.819845 0.468071 +vt 0.215894 0.503605 +vt 0.845499 0.449967 +vt 0.185281 0.484099 +vt 0.999856 0.254640 +vt 0.000144 0.259113 +vt 0.994525 0.167705 +vt 0.011829 0.155367 +vt 0.945900 0.079569 +vt 0.078961 0.060719 +vt 0.805584 0.010786 +vt 0.232648 0.003484 +vt 0.606717 0.173514 +vt 0.430834 0.174134 +vt 0.584669 0.109759 +vt 0.452964 0.109753 +vt 0.569984 0.081205 +vt 0.467794 0.081119 +vt 0.558277 0.064830 +vt 0.479585 0.064749 +vt 0.550630 0.058404 +vt 0.487254 0.058341 +vt 0.538932 0.053142 +vt 0.498948 0.053107 +vt 0.518927 0.049466 +vt 0.643325 0.203196 +vt 0.393824 0.204661 +vt 0.678421 0.234190 +vt 0.358185 0.237010 +vt 0.706155 0.268300 +vt 0.330224 0.273117 +vt 0.707715 0.306939 +vt 0.330119 0.313546 +vt 0.694628 0.335697 +vt 0.344965 0.342624 +vt 0.663792 0.369910 +vt 0.378142 0.376063 +vt 0.630772 0.392967 +vt 0.412793 0.397883 +vt 0.600524 0.398114 +vt 0.443592 0.401663 +vt 0.557300 0.392517 +vt 0.486806 0.394072 +vt 0.576224 0.338715 +vt 0.465581 0.340746 +vt 0.557863 0.319011 +vt 0.483365 0.320242 +vt 0.576079 0.253063 +vt 0.463102 0.254240 +vt 0.612128 0.245986 +vt 0.426389 0.247827 +vt 0.641666 0.256631 +vt 0.396520 0.259390 +vt 0.662428 0.278197 +vt 0.375833 0.282102 +vt 0.667848 0.298912 +vt 0.370958 0.303610 +vt 0.659448 0.315356 +vt 0.380180 0.320164 +vt 0.636056 0.333395 +vt 0.404781 0.337637 +vt 0.598707 0.346762 +vt 0.443209 0.349734 +vt 0.518925 0.086813 +vt 0.531314 0.084364 +vt 0.506536 0.084348 +vt 0.531900 0.073754 +vt 0.505958 0.073734 +vt 0.526631 0.068594 +vt 0.511228 0.068581 +vt 0.518928 0.067217 +vt 0.518870 0.192196 +vt 0.519447 0.200524 +vt 0.541412 0.193460 +vt 0.497011 0.193556 +vt 0.546848 0.174229 +vt 0.491210 0.174349 +vt 0.538444 0.155781 +vt 0.499510 0.155839 +vt 0.620982 0.227195 +vt 0.416967 0.228884 +vt 0.660032 0.250401 +vt 0.377513 0.253407 +vt 0.682242 0.277954 +vt 0.355371 0.282451 +vt 0.685701 0.306143 +vt 0.352843 0.311772 +vt 0.673551 0.326478 +vt 0.366172 0.332164 +vt 0.644354 0.353229 +vt 0.397170 0.358172 +vt 0.620111 0.370606 +vt 0.422568 0.374743 +vt 0.597676 0.372592 +vt 0.445326 0.375785 +vt 0.562472 0.360194 +vt 0.480243 0.361830 +vt 0.562261 0.209532 +vt 0.476187 0.210070 +vt 0.555906 0.119138 +vt 0.481895 0.119167 +vt 0.549116 0.088653 +vt 0.488718 0.088625 +vt 0.545254 0.073767 +vt 0.492603 0.073725 +vt 0.541665 0.065699 +vt 0.496204 0.065659 +vt 0.533709 0.061936 +vt 0.504158 0.061911 +vt 0.518928 0.060267 +vt 0.519740 0.246803 +vt 0.520283 0.294459 +vt 0.616301 0.344493 +vt 0.425312 0.348127 +vt 0.559184 0.269993 +vt 0.480589 0.270949 +vt 0.553909 0.292942 +vt 0.486519 0.293897 +vt 0.532882 0.095518 +vt 0.504966 0.095508 +vt 0.534438 0.125582 +vt 0.503434 0.125599 +vt 0.518944 0.126582 +vt 0.518977 0.150942 +vt 0.533001 0.166572 +vt 0.505014 0.166616 +vt 0.538097 0.176161 +vt 0.499967 0.176220 +vt 0.536221 0.186667 +vt 0.501933 0.186664 +vt 0.527566 0.190463 +vt 0.510592 0.190387 +vt 0.519068 0.179757 +vt 0.527890 0.185349 +vt 0.510174 0.185302 +vt 0.532635 0.183653 +vt 0.505436 0.183644 +vt 0.531715 0.177200 +vt 0.506355 0.177233 +vt 0.529456 0.170655 +vt 0.508586 0.170688 +vt 0.519024 0.168442 +vt 0.594406 0.134087 +vt 0.443132 0.134237 +vt 0.564380 0.168228 +vt 0.473555 0.168461 +vt 0.561724 0.146447 +vt 0.476096 0.146568 +vt 0.597971 0.151887 +vt 0.439580 0.152198 +vt 0.518929 0.070334 +vt 0.523705 0.071560 +vt 0.514152 0.071552 +vt 0.527773 0.076168 +vt 0.510082 0.076156 +vt 0.526960 0.082800 +vt 0.510890 0.082790 +vt 0.518926 0.079464 +vt 0.523850 0.079242 +vt 0.514003 0.079236 +vt 0.524794 0.076834 +vt 0.513061 0.076826 +vt 0.522261 0.075175 +vt 0.515595 0.075171 +vt 0.518928 0.074552 +vt 0.569194 0.293361 +vt 0.471148 0.294767 +vt 0.572378 0.277916 +vt 0.467491 0.279257 +vt 0.614703 0.331776 +vt 0.426416 0.335172 +vt 0.600471 0.333348 +vt 0.440897 0.336238 +vt 0.631003 0.323613 +vt 0.409536 0.327484 +vt 0.649955 0.310358 +vt 0.389715 0.314674 +vt 0.655976 0.296670 +vt 0.383076 0.300866 +vt 0.651315 0.280039 +vt 0.387310 0.283651 +vt 0.633228 0.263757 +vt 0.405337 0.266471 +vt 0.610393 0.257673 +vt 0.428436 0.259678 +vt 0.584080 0.265954 +vt 0.455329 0.267445 +vt 0.573246 0.311528 +vt 0.467637 0.313233 +vt 0.585155 0.326924 +vt 0.456147 0.329185 +vt 0.590644 0.321516 +vt 0.450408 0.323919 +vt 0.579548 0.309340 +vt 0.461204 0.311233 +vt 0.585166 0.270991 +vt 0.454369 0.272583 +vt 0.612641 0.261560 +vt 0.426254 0.263693 +vt 0.629829 0.267263 +vt 0.408893 0.269959 +vt 0.647785 0.283486 +vt 0.391040 0.287071 +vt 0.649541 0.296225 +vt 0.389662 0.300183 +vt 0.646248 0.306421 +vt 0.393381 0.310510 +vt 0.626851 0.320513 +vt 0.413648 0.324175 +vt 0.601799 0.328453 +vt 0.439372 0.331331 +vt 0.613335 0.327083 +vt 0.427623 0.330358 +vt 0.578124 0.281900 +vt 0.461798 0.283441 +vt 0.577524 0.293776 +vt 0.462754 0.295432 +vt 0.553209 0.433063 +vt 0.815858 0.445381 +vt 0.492809 0.434538 +vt 0.219260 0.477186 +vt 0.609819 0.431516 +vt 0.770572 0.444261 +vt 0.435860 0.435740 +vt 0.271364 0.473316 +vt 0.648174 0.419316 +vt 0.755700 0.418603 +vt 0.396518 0.425416 +vt 0.287033 0.442912 +vt 0.692106 0.388274 +vt 0.770185 0.379538 +vt 0.350292 0.396229 +vt 0.268122 0.398737 +vt 0.726332 0.341754 +vt 0.749542 0.334683 +vt 0.312756 0.350588 +vt 0.288183 0.346496 +vt 0.735879 0.312112 +vt 0.301067 0.320593 +vt 0.731732 0.256960 +vt 0.303021 0.261732 +vt 0.704345 0.216768 +vt 0.330844 0.219066 +vt 0.661997 0.182194 +vt 0.374475 0.183225 +vt 0.911671 0.402429 +vt 0.106400 0.432652 +vt 0.962901 0.344752 +vt 0.043968 0.367038 +vt 0.891780 0.036916 +vt 0.142277 0.021467 +vt 0.672384 0.022201 +vt 0.365979 0.020991 +vt 0.518922 0.024886 +vt 0.567460 0.000144 +vt 0.470636 0.000144 +vt 0.626908 0.015608 +vt 0.411318 0.015131 +vt 0.649444 0.022378 +vt 0.388827 0.021586 +vt 0.775601 0.240649 +vt 0.255850 0.244822 +vt 0.807441 0.229424 +vt 0.221295 0.233026 +vt 0.842355 0.195160 +vt 0.620420 0.565675 +vt 0.176788 0.196179 +vt 0.145041 0.562595 +vt 0.914482 0.182608 +vt 0.102735 0.178481 +vt 0.757521 0.190511 +vt 0.274623 0.191243 +vt 0.785486 0.152330 +vt 0.391039 0.611891 +vt 0.245969 0.151002 +vt 0.369913 0.610196 +vt 0.837382 0.156361 +vt 0.498072 0.552315 +vt 0.196622 0.155241 +vt 0.264218 0.550140 +vt 0.890415 0.123857 +vt 0.135898 0.114680 +vt 0.623168 0.102506 +vt 0.414200 0.102306 +vt 0.651276 0.069444 +vt 0.386183 0.068753 +vt 0.575664 0.057224 +vt 0.462196 0.057073 +vt 0.603287 0.075214 +vt 0.434381 0.074971 +vt 0.558344 0.052733 +vt 0.479556 0.052645 +vt 0.577887 0.035813 +vt 0.460069 0.035651 +vt 0.618571 0.049232 +vt 0.419250 0.048811 +vt 0.548657 0.041550 +vt 0.489258 0.041490 +vt 0.638348 0.126687 +vt 0.398640 0.126669 +vt 0.627238 0.151895 +vt 0.409904 0.152326 +vt 0.626085 0.165130 +vt 0.411126 0.165771 +vt 0.691720 0.082104 +vt 0.344998 0.080731 +vt 0.785165 0.079197 +vt 0.249731 0.074555 +vt 0.852414 0.095350 +vt 0.179441 0.087122 +vt 0.919781 0.250393 +vt 0.094028 0.256004 +vt 0.900259 0.301403 +vt 0.116648 0.315086 +vt 0.862833 0.339954 +vt 0.160617 0.358419 +vt 0.808408 0.367445 +vt 0.223795 0.387323 +vt 0.775396 0.290931 +vt 0.257300 0.299594 +vt 0.789894 0.319390 +vt 0.242397 0.331861 +vt 0.838944 0.297106 +vt 0.186723 0.308849 +vt 0.816518 0.272015 +vt 0.211626 0.280144 +vt 0.844835 0.250500 +vt 0.179686 0.256768 +vt 0.869948 0.269424 +vt 0.151188 0.278189 +vt 0.882625 0.234204 +vt 0.136353 0.238288 +vt 0.858623 0.227701 +vt 0.162853 0.231387 +vt 0.874586 0.186701 +vt 0.146523 0.185305 +vt 0.851624 0.137928 +vt 0.177710 0.133044 +vt 0.391747 0.862097 +vt 0.829287 0.219562 +vt 0.363377 0.861308 +vt 0.199067 0.222464 +vt 0.051216 0.522659 +vt 0.711304 0.140850 +vt 0.323756 0.140459 +vt 0.786328 0.123629 +vt 0.246719 0.120879 +vt 0.432388 0.894943 +vt 0.740843 0.572428 +vt 0.834578 0.206879 +vt 0.321637 0.893225 +vt 0.033664 0.564403 +vt 0.449485 0.657000 +vt 0.310643 0.654046 +vt 0.509841 0.697759 +vt 0.249234 0.693240 +vt 0.563906 0.739644 +vt 0.193912 0.733664 +vt 0.619962 0.791615 +vt 0.136063 0.784093 +vt 0.604825 0.879946 +vt 0.707492 0.759884 +vt 0.148729 0.873349 +vt 0.049526 0.748824 +vt 0.506166 0.904851 +vt 0.745511 0.652100 +vt 0.247207 0.901159 +vt 0.019409 0.639749 +vt 0.499539 0.874122 +vt 0.254720 0.870450 +vt 0.564202 0.850664 +vt 0.190405 0.845065 +vt 0.580250 0.795789 +vt 0.175863 0.789490 +vt 0.548885 0.748691 +vt 0.208705 0.743163 +vt 0.500162 0.712902 +vt 0.258509 0.708654 +vt 0.444156 0.685466 +vt 0.315307 0.682602 +vt 0.443966 0.866254 +vt 0.310781 0.864072 +vt 0.459943 0.839570 +vt 0.295454 0.836826 +vt 0.456395 0.706675 +vt 0.302521 0.703548 +vt 0.502535 0.728973 +vt 0.255704 0.724688 +vt 0.541163 0.756823 +vt 0.216222 0.751532 +vt 0.562502 0.789894 +vt 0.193863 0.784084 +vt 0.550068 0.825831 +vt 0.205318 0.820519 +vt 0.503419 0.844016 +vt 0.251660 0.840096 +vt 0.401605 0.841460 +vt 0.825107 0.209762 +vt 0.354026 0.840297 +vt 0.199767 0.214827 +vt 0.416647 0.784180 +vt 0.340415 0.782343 +vt 0.413477 0.749613 +vt 0.344485 0.747713 +vt 0.426439 0.741264 +vt 0.331688 0.739001 +vt 0.427637 0.727671 +vt 0.330829 0.725330 +vt 0.432605 0.713610 +vt 0.326197 0.711102 +vt 0.788553 0.192382 +vt 0.241315 0.192476 +vt 0.394766 0.686125 +vt 0.796021 0.176969 +vt 0.364838 0.684445 +vt 0.233625 0.175620 +vt 0.384658 0.710299 +vt 0.802192 0.184609 +vt 0.374400 0.708969 +vt 0.226485 0.183086 +vt 0.384657 0.795423 +vt 0.816266 0.203086 +vt 0.372270 0.794472 +vt 0.209828 0.206161 +vt 0.431615 0.817632 +vt 0.324502 0.815550 +vt 0.451811 0.802386 +vt 0.304625 0.799698 +vt 0.444549 0.723066 +vt 0.313980 0.720287 +vt 0.445360 0.734927 +vt 0.312864 0.732161 +vt 0.437927 0.749013 +vt 0.319962 0.746483 +vt 0.427225 0.757716 +vt 0.330479 0.755494 +vt 0.436386 0.777602 +vt 0.320766 0.775220 +vt 0.511215 0.824963 +vt 0.244360 0.820741 +vt 0.541040 0.811919 +vt 0.214780 0.806804 +vt 0.546147 0.788922 +vt 0.210310 0.783576 +vt 0.531671 0.766931 +vt 0.225460 0.761934 +vt 0.501728 0.744462 +vt 0.256098 0.740235 +vt 0.462564 0.723199 +vt 0.295912 0.719956 +vt 0.476448 0.820892 +vt 0.279386 0.817614 +vt 0.454532 0.763737 +vt 0.302918 0.760827 +vt 0.465931 0.746865 +vt 0.291922 0.743601 +vt 0.488869 0.767274 +vt 0.268377 0.763461 +vt 0.473242 0.784433 +vt 0.283593 0.781099 +vt 0.493253 0.801362 +vt 0.263049 0.797547 +vt 0.507689 0.784426 +vt 0.249030 0.780152 +vt 0.522598 0.793066 +vt 0.233828 0.788400 +vt 0.517518 0.807560 +vt 0.238518 0.803091 +vt 0.662037 0.669246 +vt 0.099330 0.661402 +vt 0.650797 0.733263 +vt 0.107361 0.724567 +vt 0.620321 0.755014 +vt 0.136930 0.747279 +vt 0.590552 0.728580 +vt 0.167610 0.721786 +vt 0.556316 0.682330 +vt 0.203366 0.676789 +vt 0.514798 0.626547 +vt 0.246506 0.622959 +vt 0.834705 0.206959 +vt 0.671403 0.592656 +vt 0.116470 0.596802 +vt 0.896347 0.578250 +vt 0.881001 0.586218 +vt 0.866682 0.578023 +vt 0.882727 0.559995 +vt 0.878844 0.851672 +vt 0.863615 0.832949 +vt 0.878283 0.825398 +vt 0.893260 0.834040 +vt 0.909840 0.547939 +vt 0.858573 0.546708 +vt 0.886592 0.523054 +vt 0.881065 0.888748 +vt 0.854123 0.863874 +vt 0.905395 0.864920 +vt 0.845255 0.575016 +vt 0.819402 0.582969 +vt 0.825750 0.545549 +vt 0.821281 0.863575 +vt 0.816601 0.825909 +vt 0.842076 0.835003 +vt 0.860527 0.594711 +vt 0.845037 0.598894 +vt 0.842917 0.811139 +vt 0.858207 0.816005 +vt 0.851581 0.614788 +vt 0.844036 0.628645 +vt 0.828470 0.611908 +vt 0.826944 0.797402 +vt 0.843238 0.781373 +vt 0.850161 0.795550 +vt 0.815815 0.637531 +vt 0.794750 0.607489 +vt 0.793061 0.800320 +vt 0.815439 0.771243 +vt 0.841710 0.650974 +vt 0.852019 0.678441 +vt 0.816688 0.673967 +vt 0.817929 0.734882 +vt 0.853423 0.731981 +vt 0.841906 0.758962 +vt 0.858924 0.635509 +vt 0.863472 0.651419 +vt 0.863666 0.759484 +vt 0.858416 0.775176 +vt 0.878900 0.644609 +vt 0.893948 0.651418 +vt 0.878518 0.667628 +vt 0.879417 0.743958 +vt 0.894112 0.760838 +vt 0.878776 0.766972 +vt 0.906773 0.677500 +vt 0.880628 0.701094 +vt 0.883010 0.710619 +vt 0.908082 0.735350 +vt 0.916779 0.651601 +vt 0.944430 0.638750 +vt 0.943645 0.672515 +vt 0.944697 0.741967 +vt 0.943982 0.775733 +vt 0.916928 0.761668 +vt 0.899928 0.636635 +vt 0.915741 0.630680 +vt 0.914963 0.782522 +vt 0.899430 0.775872 +vt 0.908961 0.616500 +vt 0.916674 0.600453 +vt 0.932989 0.614319 +vt 0.931467 0.799633 +vt 0.914553 0.812760 +vt 0.907560 0.796387 +vt 0.945268 0.585710 +vt 0.968392 0.609573 +vt 0.966626 0.805946 +vt 0.942464 0.828758 +vt 0.918960 0.576259 +vt 0.944279 0.549179 +vt 0.939855 0.865210 +vt 0.915763 0.837033 +vt 0.901063 0.595260 +vt 0.898727 0.817256 +vt 0.889516 0.593986 +vt 0.901897 0.607554 +vt 0.894036 0.602422 +vt 0.892025 0.809789 +vt 0.900106 0.805011 +vt 0.887135 0.818016 +vt 0.900979 0.625755 +vt 0.898815 0.616899 +vt 0.897441 0.795538 +vt 0.899997 0.786788 +vt 0.888172 0.637293 +vt 0.892510 0.629815 +vt 0.891716 0.782355 +vt 0.887714 0.774693 +vt 0.870394 0.636697 +vt 0.879335 0.634158 +vt 0.878747 0.777432 +vt 0.869928 0.774499 +vt 0.858836 0.624049 +vt 0.866648 0.628442 +vt 0.865819 0.782580 +vt 0.857819 0.786621 +vt 0.859189 0.606926 +vt 0.861665 0.615920 +vt 0.860285 0.794867 +vt 0.857412 0.803743 +vt 0.871904 0.593995 +vt 0.867135 0.602587 +vt 0.865157 0.808431 +vt 0.869540 0.817225 +vt 0.880515 0.596288 +vt 0.878245 0.815317 +vt 0.884844 0.604522 +vt 0.875527 0.604704 +vt 0.882935 0.807283 +vt 0.873635 0.806688 +vt 0.869125 0.611719 +vt 0.867551 0.799396 +vt 0.869080 0.620377 +vt 0.867890 0.790744 +vt 0.875045 0.626475 +vt 0.874120 0.784917 +vt 0.883862 0.627033 +vt 0.882953 0.784751 +vt 0.890426 0.621326 +vt 0.889258 0.790744 +vt 0.891241 0.611825 +vt 0.889650 0.800271 +vt 0.529631 0.050623 +vt 0.536535 0.057879 +vt 0.526890 0.060774 +vt 0.518927 0.055691 +vt 0.510970 0.060761 +vt 0.501338 0.057849 +vt 0.508233 0.050605 +vt 0.545785 0.055839 +vt 0.546344 0.061772 +vt 0.538530 0.063428 +vt 0.499341 0.063394 +vt 0.491532 0.061722 +vt 0.492101 0.055788 +vt 0.554370 0.061003 +vt 0.551211 0.068711 +vt 0.543713 0.069216 +vt 0.494151 0.069174 +vt 0.486651 0.068653 +vt 0.483508 0.060931 +vt 0.563458 0.071240 +vt 0.557931 0.084403 +vt 0.546863 0.079495 +vt 0.490984 0.079456 +vt 0.479886 0.084355 +vt 0.474372 0.071151 +vt 0.577462 0.094907 +vt 0.568996 0.113937 +vt 0.552345 0.102867 +vt 0.485469 0.102860 +vt 0.468739 0.113956 +vt 0.460245 0.094849 +vt 0.588058 0.187766 +vt 0.623047 0.187743 +vt 0.631501 0.214704 +vt 0.594357 0.218252 +vt 0.443837 0.219371 +vt 0.406048 0.216285 +vt 0.414343 0.188719 +vt 0.449840 0.188379 +vt 0.661634 0.218648 +vt 0.669352 0.243047 +vt 0.642758 0.238051 +vt 0.394962 0.240367 +vt 0.367747 0.246009 +vt 0.375257 0.220712 +vt 0.694549 0.250377 +vt 0.694356 0.273882 +vt 0.673393 0.263696 +vt 0.364084 0.267449 +vt 0.342672 0.278583 +vt 0.341787 0.254143 +vt 0.709708 0.288269 +vt 0.696214 0.307158 +vt 0.686045 0.292850 +vt 0.351971 0.298013 +vt 0.342024 0.313257 +vt 0.327263 0.294105 +vt 0.703127 0.321595 +vt 0.683130 0.331390 +vt 0.681963 0.316290 +vt 0.357108 0.322086 +vt 0.356562 0.337640 +vt 0.335540 0.328548 +vt 0.680763 0.352705 +vt 0.652699 0.362077 +vt 0.659778 0.339674 +vt 0.380834 0.345038 +vt 0.389068 0.367559 +vt 0.359988 0.359341 +vt 0.646588 0.383692 +vt 0.624369 0.382277 +vt 0.631130 0.363764 +vt 0.411090 0.368295 +vt 0.418777 0.386757 +vt 0.396305 0.389243 +vt 0.616649 0.397524 +vt 0.598554 0.385158 +vt 0.609946 0.373678 +vt 0.432989 0.377406 +vt 0.444987 0.388508 +vt 0.427300 0.401819 +vt 0.579428 0.395873 +vt 0.558704 0.375066 +vt 0.581079 0.367396 +vt 0.461826 0.369847 +vt 0.484640 0.376617 +vt 0.464721 0.398442 +vt 0.538479 0.389775 +vt 0.521556 0.367820 +vt 0.544171 0.352749 +vt 0.498315 0.353629 +vt 0.505556 0.390492 +vt 0.569092 0.348101 +vt 0.587796 0.344190 +vt 0.597887 0.358983 +vt 0.444540 0.362048 +vt 0.454122 0.346710 +vt 0.473112 0.349926 +vt 0.607884 0.346775 +vt 0.617653 0.356946 +vt 0.424468 0.360799 +vt 0.433930 0.350106 +vt 0.625350 0.340085 +vt 0.639250 0.342857 +vt 0.401924 0.347395 +vt 0.415948 0.344013 +vt 0.648512 0.324580 +vt 0.665775 0.320611 +vt 0.373904 0.325811 +vt 0.391720 0.329150 +vt 0.665696 0.307180 +vt 0.676135 0.302669 +vt 0.362572 0.307806 +vt 0.373470 0.312032 +vt 0.666991 0.289167 +vt 0.671333 0.278721 +vt 0.366673 0.282920 +vt 0.371500 0.293541 +vt 0.653522 0.266836 +vt 0.650181 0.254219 +vt 0.387724 0.257119 +vt 0.384642 0.270171 +vt 0.628187 0.249231 +vt 0.614893 0.237670 +vt 0.423379 0.239439 +vt 0.410114 0.251496 +vt 0.593202 0.247673 +vt 0.568739 0.237235 +vt 0.470159 0.238137 +vt 0.445633 0.249136 +vt 0.565207 0.260673 +vt 0.543818 0.260934 +vt 0.540998 0.229554 +vt 0.498061 0.229884 +vt 0.495841 0.261492 +vt 0.474279 0.261694 +vt 0.565631 0.330152 +vt 0.543500 0.327712 +vt 0.498076 0.328478 +vt 0.475936 0.331730 +vt 0.554259 0.306129 +vt 0.520594 0.314908 +vt 0.538779 0.293753 +vt 0.501737 0.294276 +vt 0.486569 0.307165 +vt 0.520025 0.274574 +vt 0.555605 0.280786 +vt 0.484474 0.281720 +vt 0.530010 0.065670 +vt 0.522924 0.067551 +vt 0.518928 0.064208 +vt 0.514934 0.067544 +vt 0.507853 0.065651 +vt 0.536401 0.070107 +vt 0.529745 0.070499 +vt 0.508115 0.070482 +vt 0.501461 0.070079 +vt 0.538634 0.079398 +vt 0.532695 0.078622 +vt 0.505158 0.078602 +vt 0.499218 0.079369 +vt 0.544371 0.123175 +vt 0.533457 0.109105 +vt 0.540811 0.092572 +vt 0.497031 0.092555 +vt 0.504398 0.109107 +vt 0.493474 0.123201 +vt 0.532234 0.088149 +vt 0.505613 0.088134 +vt 0.536201 0.141054 +vt 0.527931 0.152199 +vt 0.518960 0.140483 +vt 0.526211 0.126476 +vt 0.511673 0.126484 +vt 0.510024 0.152222 +vt 0.501703 0.141090 +vt 0.525683 0.097155 +vt 0.518933 0.110934 +vt 0.512170 0.097151 +vt 0.518925 0.090132 +vt 0.524936 0.086729 +vt 0.512913 0.086722 +vt 0.544497 0.165579 +vt 0.541877 0.175314 +vt 0.536621 0.171055 +vt 0.534975 0.162976 +vt 0.503019 0.163027 +vt 0.501413 0.171114 +vt 0.496189 0.175396 +vt 0.493497 0.165677 +vt 0.546062 0.184000 +vt 0.538519 0.189136 +vt 0.538068 0.181732 +vt 0.500037 0.181769 +vt 0.499767 0.189164 +vt 0.492116 0.184122 +vt 0.532432 0.200255 +vt 0.525612 0.194282 +vt 0.532342 0.189778 +vt 0.505854 0.189727 +vt 0.512801 0.194237 +vt 0.506363 0.200300 +vt 0.518962 0.193962 +vt 0.518813 0.190611 +vt 0.523084 0.188878 +vt 0.514925 0.188826 +vt 0.518991 0.157386 +vt 0.526756 0.162909 +vt 0.511248 0.162933 +vt 0.519010 0.164691 +vt 0.531195 0.169102 +vt 0.525292 0.169323 +vt 0.512753 0.169343 +vt 0.506835 0.169140 +vt 0.519060 0.184477 +vt 0.525012 0.183260 +vt 0.527986 0.187509 +vt 0.510081 0.187439 +vt 0.513089 0.183233 +vt 0.530394 0.184704 +vt 0.534295 0.184896 +vt 0.503793 0.184884 +vt 0.507667 0.184674 +vt 0.532439 0.180950 +vt 0.535149 0.176736 +vt 0.502913 0.176781 +vt 0.505636 0.180964 +vt 0.530712 0.173517 +vt 0.507344 0.173554 +vt 0.526578 0.177856 +vt 0.511521 0.177871 +vt 0.519046 0.173265 +vt 0.519598 0.218434 +vt 0.546187 0.200433 +vt 0.492308 0.200655 +vt 0.553574 0.172559 +vt 0.563121 0.183615 +vt 0.474979 0.183937 +vt 0.484455 0.172734 +vt 0.549340 0.151608 +vt 0.563761 0.156937 +vt 0.474094 0.157109 +vt 0.488561 0.151700 +vt 0.559067 0.133966 +vt 0.478736 0.134039 +vt 0.590405 0.123016 +vt 0.577263 0.139872 +vt 0.460433 0.140014 +vt 0.447168 0.123084 +vt 0.596750 0.143221 +vt 0.580619 0.160023 +vt 0.457137 0.160301 +vt 0.440780 0.143450 +vt 0.599599 0.161681 +vt 0.437984 0.162099 +vt 0.528347 0.083894 +vt 0.518925 0.085125 +vt 0.523542 0.083760 +vt 0.514308 0.083755 +vt 0.509503 0.083882 +vt 0.529350 0.075546 +vt 0.528277 0.079832 +vt 0.509575 0.079820 +vt 0.508505 0.075531 +vt 0.524733 0.070302 +vt 0.526038 0.073354 +vt 0.511818 0.073344 +vt 0.513124 0.070293 +vt 0.518929 0.068969 +vt 0.521305 0.070612 +vt 0.516552 0.070608 +vt 0.518929 0.072226 +vt 0.522769 0.073202 +vt 0.520659 0.074723 +vt 0.517198 0.074720 +vt 0.515088 0.073196 +vt 0.526063 0.076553 +vt 0.523661 0.075890 +vt 0.514195 0.075883 +vt 0.511792 0.076543 +vt 0.525430 0.081173 +vt 0.524718 0.078155 +vt 0.513136 0.078148 +vt 0.512422 0.081165 +vt 0.518926 0.081802 +vt 0.521750 0.079521 +vt 0.516102 0.079517 +vt 0.518927 0.077006 +vt 0.522657 0.077229 +vt 0.515198 0.077224 +vt 0.563413 0.292898 +vt 0.567802 0.275146 +vt 0.570011 0.285140 +vt 0.470084 0.286490 +vt 0.472034 0.276343 +vt 0.476959 0.294129 +vt 0.567255 0.314061 +vt 0.570197 0.302366 +vt 0.470416 0.303888 +vt 0.473757 0.315586 +vt 0.581486 0.331822 +vt 0.578410 0.320055 +vt 0.462715 0.322014 +vt 0.460026 0.333994 +vt 0.581026 0.261654 +vt 0.576446 0.271679 +vt 0.463208 0.273055 +vt 0.458308 0.263019 +vt 0.610831 0.252622 +vt 0.596469 0.260651 +vt 0.442639 0.262363 +vt 0.427869 0.254545 +vt 0.636261 0.260038 +vt 0.622487 0.258857 +vt 0.416164 0.261188 +vt 0.402142 0.262744 +vt 0.655922 0.278709 +vt 0.643415 0.271285 +vt 0.395135 0.274453 +vt 0.382539 0.282425 +vt 0.661161 0.297148 +vt 0.655209 0.288712 +vt 0.383597 0.292669 +vt 0.377767 0.301543 +vt 0.654216 0.312197 +vt 0.654610 0.303672 +vt 0.384718 0.308001 +vt 0.385419 0.316721 +vt 0.633330 0.327230 +vt 0.641191 0.317262 +vt 0.398913 0.321395 +vt 0.407308 0.331256 +vt 0.615388 0.336441 +vt 0.622213 0.328502 +vt 0.418665 0.332128 +vt 0.425906 0.339930 +vt 0.599622 0.338489 +vt 0.607665 0.333437 +vt 0.433616 0.336594 +vt 0.441953 0.341405 +vt 0.592773 0.331301 +vt 0.448607 0.333883 +vt 0.601197 0.329954 +vt 0.588067 0.323500 +vt 0.596222 0.324985 +vt 0.444890 0.327625 +vt 0.453083 0.325833 +vt 0.440035 0.332830 +vt 0.614125 0.328738 +vt 0.607567 0.327768 +vt 0.433498 0.330845 +vt 0.426884 0.332067 +vt 0.629167 0.321287 +vt 0.620093 0.323798 +vt 0.420636 0.327267 +vt 0.411317 0.325045 +vt 0.646757 0.308666 +vt 0.636550 0.313467 +vt 0.403515 0.317343 +vt 0.392929 0.312821 +vt 0.652083 0.296313 +vt 0.647895 0.301323 +vt 0.391522 0.305347 +vt 0.387058 0.300363 +vt 0.648131 0.281529 +vt 0.648663 0.289856 +vt 0.390351 0.293627 +vt 0.390622 0.285083 +vt 0.631331 0.266526 +vt 0.638807 0.275375 +vt 0.399967 0.278515 +vt 0.407344 0.269254 +vt 0.610662 0.261063 +vt 0.621235 0.264412 +vt 0.417574 0.266826 +vt 0.428244 0.263138 +vt 0.586165 0.268811 +vt 0.598904 0.266276 +vt 0.440312 0.268138 +vt 0.453294 0.270393 +vt 0.575821 0.280051 +vt 0.581645 0.276446 +vt 0.458084 0.278012 +vt 0.464073 0.281506 +vt 0.577406 0.310010 +vt 0.585096 0.315428 +vt 0.455806 0.317576 +vt 0.463390 0.311840 +vt 0.573736 0.293833 +vt 0.578536 0.301558 +vt 0.461979 0.303333 +vt 0.466582 0.295378 +vt 0.577824 0.287838 +vt 0.462276 0.289437 +vt 0.522495 0.410845 +vt 0.556798 0.412144 +vt 0.538120 0.433346 +vt 0.817852 0.456726 +vt 0.507920 0.434083 +vt 0.217577 0.490396 +vt 0.488206 0.413736 +vt 0.603660 0.413378 +vt 0.581514 0.432290 +vt 0.793215 0.444821 +vt 0.464335 0.435139 +vt 0.245312 0.475251 +vt 0.441155 0.417188 +vt 0.639259 0.404564 +vt 0.628997 0.425416 +vt 0.763136 0.431432 +vt 0.416189 0.430578 +vt 0.279199 0.458114 +vt 0.404768 0.410036 +vt 0.676825 0.377960 +vt 0.670140 0.403795 +vt 0.762943 0.399071 +vt 0.373405 0.410823 +vt 0.277578 0.420825 +vt 0.365271 0.384915 +vt 0.708272 0.339840 +vt 0.709219 0.365014 +vt 0.759864 0.357111 +vt 0.331524 0.373409 +vt 0.278153 0.372617 +vt 0.331161 0.347596 +vt 0.720519 0.307457 +vt 0.731106 0.326933 +vt 0.742711 0.323398 +vt 0.306912 0.335591 +vt 0.294625 0.333545 +vt 0.316865 0.314726 +vt 0.717152 0.263123 +vt 0.736095 0.282280 +vt 0.299384 0.288753 +vt 0.318582 0.267986 +vt 0.688717 0.225966 +vt 0.720339 0.235366 +vt 0.314404 0.238732 +vt 0.347339 0.228601 +vt 0.653282 0.194646 +vt 0.686267 0.199822 +vt 0.349511 0.201381 +vt 0.383529 0.195983 +vt 0.620926 0.032182 +vt 0.638176 0.018993 +vt 0.400073 0.018359 +vt 0.653051 0.046239 +vt 0.636373 0.060103 +vt 0.401276 0.059549 +vt 0.384754 0.045446 +vt 0.417076 0.031729 +vt 0.574078 0.021154 +vt 0.597184 0.007876 +vt 0.440977 0.007638 +vt 0.598157 0.040354 +vt 0.439766 0.040074 +vt 0.463939 0.021033 +vt 0.538109 0.033597 +vt 0.543191 0.012515 +vt 0.494779 0.012515 +vt 0.560810 0.036858 +vt 0.477134 0.036765 +vt 0.499793 0.033565 +vt 0.542106 0.047431 +vt 0.518930 0.040271 +vt 0.495787 0.047387 +vt 0.554901 0.055359 +vt 0.555160 0.048398 +vt 0.482750 0.048319 +vt 0.482991 0.055283 +vt 0.567592 0.061923 +vt 0.564923 0.053872 +vt 0.472970 0.053762 +vt 0.470263 0.061806 +vt 0.586898 0.079500 +vt 0.589374 0.064332 +vt 0.448411 0.064127 +vt 0.450813 0.079348 +vt 0.578896 0.048201 +vt 0.613594 0.064535 +vt 0.424111 0.064192 +vt 0.459003 0.048033 +vt 0.640436 0.089230 +vt 0.614697 0.088950 +vt 0.422820 0.088712 +vt 0.396893 0.088778 +vt 0.603499 0.107667 +vt 0.433994 0.107606 +vt 0.612348 0.130817 +vt 0.632314 0.142577 +vt 0.612469 0.148446 +vt 0.424899 0.148790 +vt 0.404708 0.142842 +vt 0.424994 0.130947 +vt 0.629477 0.113643 +vt 0.407758 0.113503 +vt 0.618892 0.166495 +vt 0.624256 0.158448 +vt 0.412968 0.158979 +vt 0.418443 0.167115 +vt 0.638168 0.173282 +vt 0.398840 0.174104 +vt 0.918840 0.058243 +vt 0.110619 0.041093 +vt 0.915321 0.106557 +vt 0.874172 0.106280 +vt 0.867162 0.069120 +vt 0.165455 0.057945 +vt 0.155459 0.096940 +vt 0.109722 0.093613 +vt 0.848682 0.023851 +vt 0.187463 0.012476 +vt 0.822966 0.085900 +vt 0.790796 0.049165 +vt 0.245424 0.043159 +vt 0.210591 0.079375 +vt 0.738984 0.016494 +vt 0.299314 0.012238 +vt 0.740019 0.077670 +vt 0.692735 0.049429 +vt 0.344751 0.047620 +vt 0.295904 0.074797 +vt 0.660914 0.022290 +vt 0.377403 0.021289 +vt 0.665509 0.074986 +vt 0.371751 0.074100 +vt 0.662974 0.106001 +vt 0.373850 0.105458 +vt 0.753191 0.248572 +vt 0.728270 0.204812 +vt 0.767740 0.216745 +vt 0.263803 0.219071 +vt 0.305536 0.206502 +vt 0.279982 0.253072 +vt 0.970213 0.123637 +vt 0.045395 0.108043 +vt 0.948445 0.176259 +vt 0.904053 0.150177 +vt 0.117619 0.142732 +vt 0.064606 0.169112 +vt 0.937286 0.373591 +vt 0.075184 0.399845 +vt 0.883895 0.369265 +vt 0.884277 0.321936 +vt 0.927663 0.320667 +vt 0.085021 0.337833 +vt 0.135491 0.338458 +vt 0.137281 0.392982 +vt 0.981379 0.299696 +vt 0.022056 0.313076 +vt 0.912582 0.278089 +vt 0.953507 0.254112 +vt 0.054903 0.259502 +vt 0.102189 0.288134 +vt 0.997191 0.211173 +vt 0.005987 0.207240 +vt 0.920177 0.217443 +vt 0.094363 0.217999 +vt 0.768822 0.328799 +vt 0.755701 0.299466 +vt 0.781218 0.305960 +vt 0.251365 0.316433 +vt 0.279093 0.308055 +vt 0.266340 0.341244 +vt 0.814864 0.308831 +vt 0.796528 0.281813 +vt 0.826931 0.284637 +vt 0.200016 0.294492 +vt 0.233856 0.290350 +vt 0.214073 0.321143 +vt 0.857117 0.283970 +vt 0.832662 0.261797 +vt 0.856952 0.260042 +vt 0.165917 0.267485 +vt 0.193587 0.269178 +vt 0.165962 0.294498 +vt 0.878799 0.253264 +vt 0.853506 0.237939 +vt 0.868810 0.229589 +vt 0.151642 0.233304 +vt 0.169275 0.242806 +vt 0.140919 0.259872 +vt 0.852996 0.214930 +vt 0.859205 0.189996 +vt 0.880527 0.211381 +vt 0.138699 0.212655 +vt 0.162328 0.189770 +vt 0.168233 0.217287 +vt 0.891342 0.185226 +vt 0.897877 0.242454 +vt 0.119168 0.247402 +vt 0.128411 0.182764 +vt 0.882650 0.283650 +vt 0.136794 0.294508 +vt 0.849426 0.315471 +vt 0.175293 0.329981 +vt 0.835225 0.355299 +vt 0.797448 0.339438 +vt 0.234928 0.354874 +vt 0.192710 0.374776 +vt 0.788609 0.375951 +vt 0.246761 0.395909 +vt 0.878585 0.426198 +vt 0.145841 0.458376 +vt 0.826781 0.402975 +vt 0.204444 0.429023 +vt 0.792533 0.414220 +vt 0.244366 0.439983 +vt 0.822977 0.439153 +vt 0.210684 0.470420 +vt 0.832672 0.459019 +vt 0.200588 0.493852 +vt 0.775891 0.267404 +vt 0.256196 0.273846 +vt 0.792774 0.235534 +vt 0.811114 0.253581 +vt 0.217610 0.259562 +vt 0.237289 0.239443 +vt 0.820866 0.228877 +vt 0.835785 0.236203 +vt 0.190191 0.240759 +vt 0.206986 0.232834 +vt 0.837930 0.212198 +vt 0.187928 0.209322 +vt 0.098129 0.542627 +vt 0.705994 0.109885 +vt 0.784533 0.103360 +vt 0.751909 0.128786 +vt 0.282068 0.127232 +vt 0.249322 0.099756 +vt 0.329798 0.108802 +vt 0.772103 0.167966 +vt 0.735926 0.167047 +vt 0.787839 0.141361 +vt 0.244560 0.139450 +vt 0.297723 0.167123 +vt 0.259645 0.167397 +vt 0.685759 0.166244 +vt 0.349935 0.166770 +vt 0.645105 0.163152 +vt 0.670538 0.133859 +vt 0.365713 0.133752 +vt 0.391711 0.163784 +vt 0.839869 0.175761 +vt 0.559246 0.558995 +vt 0.840186 0.151312 +vt 0.866488 0.162447 +vt 0.158421 0.158956 +vt 0.190061 0.148630 +vt 0.186705 0.175710 +vt 0.204630 0.556368 +vt 0.872606 0.134179 +vt 0.154902 0.127387 +vt 0.811434 0.154346 +vt 0.444556 0.582103 +vt 0.819475 0.126995 +vt 0.212383 0.123090 +vt 0.221296 0.153122 +vt 0.317066 0.580168 +vt 0.847824 0.115848 +vt 0.183180 0.109416 +vt 0.503242 0.887871 +vt 0.469277 0.899897 +vt 0.743177 0.612264 +vt 0.439482 0.879416 +vt 0.469003 0.873295 +vt 0.285428 0.870463 +vt 0.314929 0.877422 +vt 0.284422 0.897192 +vt 0.026537 0.602076 +vt 0.250616 0.884165 +vt 0.555496 0.892399 +vt 0.726502 0.705992 +vt 0.534413 0.867117 +vt 0.577677 0.861753 +vt 0.176544 0.855826 +vt 0.219872 0.862437 +vt 0.197968 0.887254 +vt 0.034468 0.694287 +vt 0.612394 0.835781 +vt 0.663727 0.775750 +vt 0.579630 0.824752 +vt 0.594213 0.796642 +vt 0.161805 0.789933 +vt 0.175648 0.818593 +vt 0.142396 0.828721 +vt 0.092795 0.766459 +vt 0.589345 0.762975 +vt 0.568419 0.770279 +vt 0.555736 0.744636 +vt 0.201951 0.738903 +vt 0.188483 0.764240 +vt 0.167695 0.756291 +vt 0.538094 0.718190 +vt 0.526002 0.729959 +vt 0.502537 0.705262 +vt 0.256334 0.700942 +vt 0.232165 0.725040 +vt 0.220390 0.712918 +vt 0.478584 0.677534 +vt 0.471634 0.697120 +vt 0.442215 0.671914 +vt 0.317561 0.669089 +vt 0.287492 0.693586 +vt 0.281043 0.673819 +vt 0.500799 0.721082 +vt 0.478438 0.715278 +vt 0.450203 0.697137 +vt 0.308967 0.694144 +vt 0.280208 0.711599 +vt 0.257653 0.716829 +vt 0.544258 0.752732 +vt 0.523665 0.742762 +vt 0.234156 0.737931 +vt 0.213232 0.747344 +vt 0.570240 0.792859 +vt 0.554893 0.772408 +vt 0.202003 0.766764 +vt 0.186005 0.786839 +vt 0.555533 0.837984 +vt 0.561374 0.808768 +vt 0.194452 0.803063 +vt 0.199480 0.832573 +vt 0.499999 0.858604 +vt 0.528822 0.837834 +vt 0.226317 0.833175 +vt 0.254690 0.854846 +vt 0.451223 0.852362 +vt 0.479919 0.844388 +vt 0.275256 0.841120 +vt 0.303868 0.849915 +vt 0.778217 0.192871 +vt 0.790754 0.164650 +vt 0.392903 0.649008 +vt 0.789259 0.181741 +vt 0.240716 0.180943 +vt 0.239797 0.163311 +vt 0.367376 0.647321 +vt 0.252507 0.193316 +vt 0.425767 0.635650 +vt 0.420671 0.680947 +vt 0.338943 0.678648 +vt 0.334793 0.633335 +vt 0.795563 0.208848 +vt 0.233810 0.210443 +vt 0.412068 0.878520 +vt 0.831933 0.213221 +vt 0.396676 0.851779 +vt 0.827197 0.214662 +vt 0.423074 0.854730 +vt 0.332089 0.853056 +vt 0.358702 0.850803 +vt 0.199417 0.218646 +vt 0.342507 0.877267 +vt 0.042440 0.543531 +vt 0.441223 0.707419 +vt 0.418054 0.702412 +vt 0.341073 0.700226 +vt 0.317711 0.704681 +vt 0.428815 0.720446 +vt 0.410785 0.720996 +vt 0.389712 0.698212 +vt 0.799107 0.180789 +vt 0.369619 0.696707 +vt 0.230055 0.179353 +vt 0.347908 0.719053 +vt 0.329828 0.718052 +vt 0.419760 0.742959 +vt 0.403090 0.738535 +vt 0.427059 0.735523 +vt 0.331211 0.733225 +vt 0.355190 0.736855 +vt 0.338348 0.740872 +vt 0.412842 0.764844 +vt 0.402753 0.787081 +vt 0.384658 0.752861 +vt 0.809229 0.193848 +vt 0.373335 0.751721 +vt 0.218157 0.194624 +vt 0.354294 0.785622 +vt 0.344732 0.763023 +vt 0.418795 0.827665 +vt 0.393131 0.818442 +vt 0.820687 0.206424 +vt 0.422802 0.802164 +vt 0.333764 0.800245 +vt 0.363148 0.817385 +vt 0.204798 0.210494 +vt 0.337116 0.825974 +vt 0.443879 0.830357 +vt 0.311841 0.828006 +vt 0.811969 0.213107 +vt 0.215610 0.215928 +vt 0.796242 0.189981 +vt 0.232899 0.189619 +vt 0.468201 0.829700 +vt 0.441961 0.809870 +vt 0.462696 0.812987 +vt 0.293411 0.810050 +vt 0.314317 0.807477 +vt 0.287428 0.826686 +vt 0.427277 0.781602 +vt 0.443343 0.790299 +vt 0.313449 0.787786 +vt 0.329807 0.779475 +vt 0.421352 0.755005 +vt 0.430475 0.765576 +vt 0.327013 0.763300 +vt 0.336442 0.752924 +vt 0.431514 0.744595 +vt 0.431645 0.753908 +vt 0.326140 0.751558 +vt 0.326511 0.742215 +vt 0.437751 0.731694 +vt 0.442940 0.742346 +vt 0.315103 0.739666 +vt 0.320580 0.729112 +vt 0.440439 0.719987 +vt 0.445047 0.728140 +vt 0.313350 0.725362 +vt 0.318179 0.717305 +vt 0.460060 0.714469 +vt 0.450206 0.721480 +vt 0.308347 0.718553 +vt 0.298648 0.711268 +vt 0.507612 0.833346 +vt 0.493072 0.824997 +vt 0.262579 0.821280 +vt 0.247746 0.829260 +vt 0.546373 0.817274 +vt 0.528587 0.820584 +vt 0.227039 0.815856 +vt 0.209273 0.812030 +vt 0.555446 0.788518 +vt 0.546607 0.800770 +vt 0.209509 0.795453 +vt 0.200986 0.782905 +vt 0.538068 0.761113 +vt 0.540941 0.777680 +vt 0.215856 0.772448 +vt 0.219206 0.755920 +vt 0.503465 0.736077 +vt 0.518703 0.756138 +vt 0.238766 0.751476 +vt 0.254583 0.731782 +vt 0.481361 0.732039 +vt 0.276841 0.728324 +vt 0.445728 0.755340 +vt 0.454782 0.739673 +vt 0.461938 0.756103 +vt 0.295687 0.752972 +vt 0.303291 0.736677 +vt 0.311972 0.752630 +vt 0.463772 0.773855 +vt 0.477646 0.756638 +vt 0.481568 0.776312 +vt 0.275457 0.772726 +vt 0.279916 0.753093 +vt 0.293379 0.770737 +vt 0.482934 0.794027 +vt 0.498813 0.776847 +vt 0.499632 0.792813 +vt 0.256881 0.788791 +vt 0.258143 0.772794 +vt 0.273607 0.790467 +vt 0.504672 0.805610 +vt 0.515891 0.789667 +vt 0.520259 0.799106 +vt 0.236004 0.794528 +vt 0.240654 0.785180 +vt 0.251468 0.801494 +vt 0.513928 0.816510 +vt 0.485253 0.811116 +vt 0.270813 0.807558 +vt 0.241872 0.812178 +vt 0.462765 0.793509 +vt 0.293866 0.790492 +vt 0.445624 0.771257 +vt 0.311660 0.768608 +vt 0.465322 0.734917 +vt 0.292842 0.731633 +vt 0.496227 0.755757 +vt 0.261310 0.751711 +vt 0.519941 0.775250 +vt 0.236995 0.770605 +vt 0.533132 0.790820 +vt 0.223318 0.785848 +vt 0.531027 0.808817 +vt 0.224920 0.803973 +vt 0.525165 0.689932 +vt 0.471551 0.641448 +vt 0.533986 0.655417 +vt 0.226531 0.650851 +vt 0.289024 0.638180 +vt 0.234153 0.685031 +vt 0.573537 0.733365 +vt 0.575090 0.707013 +vt 0.183790 0.700745 +vt 0.184467 0.727088 +vt 0.621437 0.765901 +vt 0.605312 0.745594 +vt 0.152269 0.738340 +vt 0.135450 0.758162 +vt 0.677691 0.741010 +vt 0.635808 0.749981 +vt 0.121624 0.741714 +vt 0.080357 0.731271 +vt 0.705113 0.662631 +vt 0.659670 0.704618 +vt 0.099876 0.695964 +vt 0.057959 0.653021 +vt 0.706123 0.582542 +vt 0.834642 0.206919 +vt 0.660188 0.632224 +vt 0.105204 0.626959 +vt 0.069112 0.583140 +vt 0.607278 0.675536 +vt 0.582707 0.612627 +vt 0.182120 0.609508 +vt 0.153007 0.669026 +vt 0.619125 0.728415 +vt 0.139081 0.720753 +vt 0.838530 0.201060 +vt 0.645912 0.579166 +vt 0.131457 0.574067 +vt 0.504604 0.594956 +vt 0.257354 0.592122 +vt 0.881611 0.575125 +vt 0.878400 0.836507 +vt 0.884449 0.542614 +vt 0.879793 0.869113 +vt 0.835972 0.561317 +vt 0.832194 0.848276 +vt 0.853847 0.586450 +vt 0.851167 0.823962 +vt 0.841739 0.613574 +vt 0.840274 0.796326 +vt 0.812824 0.609855 +vt 0.811223 0.798759 +vt 0.830128 0.661567 +vt 0.830805 0.747866 +vt 0.851551 0.642107 +vt 0.851343 0.768258 +vt 0.878517 0.654471 +vt 0.878831 0.757103 +vt 0.879318 0.683121 +vt 0.880903 0.728516 +vt 0.929099 0.661362 +vt 0.929670 0.752463 +vt 0.906939 0.643081 +vt 0.906720 0.769743 +vt 0.919103 0.615721 +vt 0.917657 0.797616 +vt 0.949468 0.612185 +vt 0.947836 0.802496 +vt 0.930860 0.563528 +vt 0.927087 0.850279 +vt 0.908631 0.587254 +vt 0.905932 0.825590 +vt 0.897029 0.599464 +vt 0.894883 0.812876 +vt 0.903212 0.616842 +vt 0.901832 0.795790 +vt 0.895762 0.632844 +vt 0.895100 0.779473 +vt 0.879189 0.638681 +vt 0.878802 0.772907 +vt 0.863335 0.631517 +vt 0.862645 0.779360 +vt 0.857327 0.615518 +vt 0.855933 0.795076 +vt 0.864322 0.599298 +vt 0.862202 0.811591 +vt 0.880719 0.592082 +vt 0.878262 0.819528 +vt 0.880250 0.601545 +vt 0.878214 0.810053 +vt 0.870420 0.606296 +vt 0.868604 0.804870 +vt 0.866481 0.616122 +vt 0.865106 0.794879 +vt 0.870170 0.625153 +vt 0.869191 0.786021 +vt 0.879396 0.629307 +vt 0.878593 0.782281 +vt 0.888953 0.626244 +vt 0.888004 0.785765 +vt 0.893657 0.616800 +vt 0.892285 0.795408 +vt 0.890242 0.606081 +vt 0.888398 0.805965 +vt 0.528376 0.056369 +vt 0.509485 0.056353 +vt 0.542425 0.059639 +vt 0.495453 0.059597 +vt 0.548969 0.064623 +vt 0.488903 0.064568 +vt 0.553979 0.074793 +vt 0.483867 0.074736 +vt 0.563317 0.098370 +vt 0.474459 0.098347 +vt 0.607783 0.201317 +vt 0.429985 0.202349 +vt 0.652025 0.228651 +vt 0.385294 0.230871 +vt 0.684216 0.257873 +vt 0.352716 0.261687 +vt 0.697734 0.291262 +vt 0.339803 0.296775 +vt 0.691800 0.319376 +vt 0.347111 0.325707 +vt 0.669060 0.346556 +vt 0.371656 0.352492 +vt 0.637539 0.374296 +vt 0.405052 0.379277 +vt 0.612565 0.385848 +vt 0.430882 0.389829 +vt 0.579528 0.380831 +vt 0.463955 0.383313 +vt 0.539646 0.370138 +vt 0.503550 0.370878 +vt 0.584222 0.354838 +vt 0.458148 0.357313 +vt 0.608513 0.359610 +vt 0.433834 0.363117 +vt 0.627448 0.351385 +vt 0.414294 0.355570 +vt 0.653248 0.331731 +vt 0.387172 0.336643 +vt 0.673229 0.311613 +vt 0.365902 0.316900 +vt 0.675648 0.291443 +vt 0.362661 0.296196 +vt 0.662642 0.265966 +vt 0.375235 0.269520 +vt 0.634514 0.244436 +vt 0.403531 0.246741 +vt 0.591326 0.234859 +vt 0.447238 0.236147 +vt 0.553314 0.247169 +vt 0.485963 0.247850 +vt 0.554699 0.339520 +vt 0.487253 0.340746 +vt 0.539226 0.311235 +vt 0.501819 0.311809 +vt 0.539936 0.277011 +vt 0.500127 0.277528 +vt 0.524838 0.064612 +vt 0.513021 0.064602 +vt 0.533857 0.067317 +vt 0.504007 0.067292 +vt 0.537842 0.074443 +vt 0.500015 0.074414 +vt 0.542399 0.106568 +vt 0.495440 0.106568 +vt 0.539593 0.084350 +vt 0.498254 0.084324 +vt 0.527150 0.140957 +vt 0.510768 0.140974 +vt 0.525817 0.110508 +vt 0.512046 0.110509 +vt 0.525410 0.089838 +vt 0.512439 0.089832 +vt 0.539743 0.168694 +vt 0.498278 0.168768 +vt 0.541629 0.182581 +vt 0.496512 0.182646 +vt 0.532398 0.193396 +vt 0.506083 0.193379 +vt 0.521441 0.192080 +vt 0.516430 0.192047 +vt 0.527560 0.158945 +vt 0.510424 0.158970 +vt 0.525878 0.166063 +vt 0.512144 0.166083 +vt 0.523785 0.185847 +vt 0.514311 0.185800 +vt 0.531658 0.187170 +vt 0.506414 0.187119 +vt 0.535327 0.181109 +vt 0.502754 0.181133 +vt 0.534025 0.172707 +vt 0.504018 0.172755 +vt 0.528580 0.181687 +vt 0.509504 0.181682 +vt 0.525563 0.173411 +vt 0.512515 0.173431 +vt 0.534465 0.212776 +vt 0.504480 0.212913 +vt 0.551985 0.185724 +vt 0.486203 0.185938 +vt 0.552239 0.162029 +vt 0.485708 0.162163 +vt 0.546685 0.138563 +vt 0.491182 0.138620 +vt 0.573726 0.128028 +vt 0.463980 0.128105 +vt 0.579591 0.149773 +vt 0.458115 0.149978 +vt 0.581324 0.172904 +vt 0.456525 0.173290 +vt 0.524245 0.085168 +vt 0.513604 0.085161 +vt 0.529899 0.080034 +vt 0.507954 0.080019 +vt 0.527413 0.072283 +vt 0.510444 0.072271 +vt 0.521856 0.069271 +vt 0.516002 0.069266 +vt 0.520844 0.072458 +vt 0.517013 0.072455 +vt 0.524641 0.074536 +vt 0.513215 0.074528 +vt 0.526471 0.079118 +vt 0.511382 0.079109 +vt 0.522672 0.081831 +vt 0.515179 0.081826 +vt 0.521002 0.077116 +vt 0.516853 0.077113 +vt 0.523568 0.077141 +vt 0.514287 0.077134 +vt 0.564823 0.283411 +vt 0.475265 0.284604 +vt 0.564043 0.303370 +vt 0.476646 0.304705 +vt 0.573336 0.323987 +vt 0.467968 0.325800 +vt 0.572444 0.268073 +vt 0.467157 0.269314 +vt 0.595063 0.255785 +vt 0.443944 0.257390 +vt 0.624401 0.254227 +vt 0.414100 0.256508 +vt 0.647340 0.268750 +vt 0.391043 0.271964 +vt 0.660267 0.288391 +vt 0.378390 0.292508 +vt 0.659519 0.304805 +vt 0.379722 0.309349 +vt 0.644524 0.319999 +vt 0.395613 0.324317 +vt 0.623647 0.332753 +vt 0.417377 0.336501 +vt 0.607684 0.338383 +vt 0.433791 0.341604 +vt 0.590625 0.336522 +vt 0.450972 0.339077 +vt 0.594577 0.327670 +vt 0.446650 0.330280 +vt 0.607641 0.330160 +vt 0.433514 0.333272 +vt 0.621105 0.325749 +vt 0.419683 0.329287 +vt 0.638600 0.315216 +vt 0.401484 0.319206 +vt 0.650826 0.302565 +vt 0.388560 0.306727 +vt 0.651467 0.289241 +vt 0.387455 0.293089 +vt 0.640733 0.273509 +vt 0.397943 0.276657 +vt 0.621576 0.262193 +vt 0.417172 0.264571 +vt 0.597758 0.263913 +vt 0.441413 0.265710 +vt 0.579378 0.274220 +vt 0.460314 0.275701 +vt 0.582116 0.317393 +vt 0.458883 0.319456 +vt 0.574762 0.301887 +vt 0.465797 0.303547 +vt 0.574109 0.286567 +vt 0.465990 0.288047 +vt 0.538281 0.411091 +vt 0.506719 0.411819 +vt 0.580281 0.413307 +vt 0.464672 0.416006 +vt 0.622306 0.410754 +vt 0.422223 0.415451 +vt 0.657775 0.393384 +vt 0.385426 0.399631 +vt 0.694311 0.358834 +vt 0.346443 0.366300 +vt 0.716338 0.324076 +vt 0.322025 0.331806 +vt 0.721595 0.285733 +vt 0.314788 0.291912 +vt 0.705055 0.243279 +vt 0.330657 0.246922 +vt 0.671765 0.210086 +vt 0.364677 0.211973 +vt 0.638598 0.040073 +vt 0.399313 0.039452 +vt 0.597999 0.024656 +vt 0.440036 0.024385 +vt 0.553265 0.025336 +vt 0.484696 0.025281 +vt 0.531703 0.042785 +vt 0.506172 0.042762 +vt 0.549446 0.051869 +vt 0.488452 0.051807 +vt 0.560473 0.058029 +vt 0.477409 0.057935 +vt 0.576860 0.068910 +vt 0.460937 0.068767 +vt 0.596099 0.054317 +vt 0.441733 0.054062 +vt 0.564925 0.046689 +vt 0.472992 0.046578 +vt 0.628541 0.077349 +vt 0.408979 0.076944 +vt 0.596047 0.093310 +vt 0.441554 0.093187 +vt 0.612957 0.140296 +vt 0.424379 0.140539 +vt 0.608900 0.120064 +vt 0.428506 0.120089 +vt 0.612925 0.156464 +vt 0.424469 0.156911 +vt 0.633655 0.179673 +vt 0.403478 0.180592 +vt 0.893515 0.084702 +vt 0.135967 0.071959 +vt 0.833205 0.057037 +vt 0.201549 0.048328 +vt 0.739247 0.047944 +vt 0.297791 0.044340 +vt 0.667604 0.048991 +vt 0.370099 0.047937 +vt 0.650342 0.097629 +vt 0.386807 0.097126 +vt 0.743544 0.225522 +vt 0.289648 0.228397 +vt 0.934162 0.138519 +vt 0.084748 0.127507 +vt 0.908042 0.346695 +vt 0.108509 0.367723 +vt 0.943355 0.289411 +vt 0.066438 0.301142 +vt 0.954767 0.215703 +vt 0.054806 0.214456 +vt 0.760983 0.314960 +vt 0.274091 0.325343 +vt 0.804507 0.295772 +vt 0.225226 0.306116 +vt 0.844362 0.272860 +vt 0.180310 0.281734 +vt 0.865486 0.245712 +vt 0.155943 0.251381 +vt 0.865654 0.210853 +vt 0.154542 0.212543 +vt 0.896975 0.214875 +vt 0.120596 0.216031 +vt 0.892698 0.264948 +vt 0.125101 0.273140 +vt 0.868843 0.300471 +vt 0.152856 0.313492 +vt 0.823563 0.328376 +vt 0.204988 0.343582 +vt 0.776953 0.348941 +vt 0.258476 0.364482 +vt 0.854618 0.388654 +vt 0.171808 0.413975 +vt 0.778037 0.422134 +vt 0.261505 0.448254 +vt 0.806998 0.409096 +vt 0.227454 0.434955 +vt 0.825908 0.453176 +vt 0.208078 0.486741 +vt 0.755260 0.275192 +vt 0.278660 0.281719 +vt 0.794685 0.260478 +vt 0.235624 0.266753 +vt 0.824924 0.245952 +vt 0.202485 0.251470 +vt 0.844367 0.224985 +vt 0.179307 0.228068 +vt 0.744857 0.104270 +vt 0.290077 0.102066 +vt 0.761887 0.150943 +vt 0.270998 0.149983 +vt 0.709166 0.184863 +vt 0.325569 0.185815 +vt 0.658117 0.151769 +vt 0.378355 0.152110 +vt 0.678473 0.116165 +vt 0.357848 0.115642 +vt 0.635572 0.165415 +vt 0.401462 0.166095 +vt 0.852504 0.169021 +vt 0.173307 0.167243 +vt 0.882750 0.157347 +vt 0.140836 0.152190 +vt 0.816039 0.142025 +vt 0.215949 0.139452 +vt 0.819803 0.108584 +vt 0.212732 0.103516 +vt 0.864662 0.119320 +vt 0.164991 0.111832 +vt 0.468363 0.886808 +vt 0.285700 0.884061 +vt 0.543312 0.879960 +vt 0.210565 0.875093 +vt 0.593993 0.830799 +vt 0.161038 0.824252 +vt 0.578670 0.768161 +vt 0.178252 0.761815 +vt 0.530449 0.724075 +vt 0.227874 0.719024 +vt 0.471787 0.687538 +vt 0.287581 0.683989 +vt 0.474743 0.706583 +vt 0.284136 0.702984 +vt 0.524153 0.736382 +vt 0.233842 0.731524 +vt 0.560742 0.771353 +vt 0.196162 0.765539 +vt 0.569104 0.816662 +vt 0.186459 0.810770 +vt 0.529970 0.852091 +vt 0.224761 0.847465 +vt 0.473352 0.858317 +vt 0.281470 0.855294 +vt 0.781750 0.177204 +vt 0.249003 0.176615 +vt 0.417018 0.659387 +vt 0.343047 0.657161 +vt 0.784738 0.212595 +vt 0.245585 0.214535 +vt 0.416800 0.866760 +vt 0.338070 0.865317 +vt 0.431196 0.696570 +vt 0.328035 0.694049 +vt 0.411919 0.710833 +vt 0.347022 0.708824 +vt 0.414613 0.733330 +vt 0.343757 0.731337 +vt 0.400080 0.760071 +vt 0.357667 0.758561 +vt 0.409092 0.809450 +vt 0.347346 0.807928 +vt 0.433115 0.841909 +vt 0.322345 0.839902 +vt 0.820116 0.216249 +vt 0.206857 0.219915 +vt 0.803000 0.201945 +vt 0.225405 0.203129 +vt 0.794268 0.183563 +vt 0.235195 0.182579 +vt 0.453337 0.821327 +vt 0.302584 0.818678 +vt 0.433605 0.796402 +vt 0.323065 0.794172 +vt 0.422490 0.766652 +vt 0.335000 0.764588 +vt 0.425510 0.748812 +vt 0.332428 0.746600 +vt 0.435649 0.738566 +vt 0.322514 0.736060 +vt 0.438459 0.725659 +vt 0.320022 0.723042 +vt 0.446842 0.714794 +vt 0.311890 0.711935 +vt 0.486622 0.833925 +vt 0.268810 0.830424 +vt 0.529168 0.827618 +vt 0.226257 0.822904 +vt 0.554987 0.803516 +vt 0.201017 0.797971 +vt 0.549316 0.774269 +vt 0.207549 0.768790 +vt 0.522834 0.748764 +vt 0.234825 0.743969 +vt 0.480694 0.722970 +vt 0.277748 0.719250 +vt 0.451875 0.748121 +vt 0.305990 0.745228 +vt 0.471966 0.765952 +vt 0.285367 0.762588 +vt 0.490661 0.785658 +vt 0.266079 0.781857 +vt 0.509097 0.797073 +vt 0.247264 0.792802 +vt 0.499239 0.815328 +vt 0.256653 0.811401 +vt 0.473131 0.803520 +vt 0.283190 0.800263 +vt 0.453735 0.782360 +vt 0.303227 0.779540 +vt 0.438194 0.761384 +vt 0.319375 0.758892 +vt 0.453412 0.730198 +vt 0.304908 0.727211 +vt 0.480566 0.744291 +vt 0.277314 0.740632 +vt 0.509422 0.766252 +vt 0.247795 0.761875 +vt 0.528067 0.783052 +vt 0.228623 0.778200 +vt 0.533892 0.799710 +vt 0.222302 0.794749 +vt 0.525734 0.815686 +vt 0.230041 0.811018 +vt 0.496540 0.666735 +vt 0.263421 0.662656 +vt 0.550671 0.711970 +vt 0.208001 0.706345 +vt 0.596168 0.753465 +vt 0.161163 0.746532 +vt 0.650635 0.761168 +vt 0.106424 0.752371 +vt 0.695537 0.704955 +vt 0.064692 0.694847 +vt 0.706712 0.622096 +vt 0.060335 0.614941 +vt 0.594906 0.643849 +vt 0.167097 0.638884 +vt 0.615479 0.704842 +vt 0.143648 0.697517 +vt 0.619743 0.742110 +vt 0.137953 0.734378 +vt 0.835440 0.207619 +vt 0.082566 0.560285 +vt 0.570415 0.585463 +vt 0.194407 0.582356 +vt 0.455879 0.613165 +vt 0.305248 0.610596 +s 1 +f 47/47/1 509/558/2 1513/1612/3 508/557/4 +f 509/558/2 1/1/5 510/559/6 1513/1612/3 +f 1513/1612/3 510/559/6 3/3/7 511/560/8 +f 508/557/4 1513/1612/3 511/560/8 45/45/9 +f 4/4/10 513/562/11 1514/1613/12 512/561/13 +f 513/562/11 2/2/14 514/563/15 1514/1613/12 +f 1514/1613/12 514/563/15 48/48/16 515/564/17 +f 512/561/13 1514/1613/12 515/564/17 46/46/18 +f 45/45/9 511/560/8 1515/1614/19 516/565/20 +f 511/560/8 3/3/7 517/566/21 1515/1614/19 +f 1515/1614/19 517/566/21 5/5/22 518/567/23 +f 516/565/20 1515/1614/19 518/567/23 43/43/24 +f 6/6/25 520/569/26 1516/1615/27 519/568/28 +f 520/569/26 4/4/10 512/561/13 1516/1615/27 +f 1516/1615/27 512/561/13 46/46/18 521/570/29 +f 519/568/28 1516/1615/27 521/570/29 44/44/30 +f 3/3/7 522/571/31 1517/1616/32 517/566/21 +f 522/571/31 9/9/33 523/572/34 1517/1616/32 +f 1517/1616/32 523/572/34 7/7/35 524/573/36 +f 517/566/21 1517/1616/32 524/573/36 5/5/22 +f 8/8/37 526/575/38 1518/1617/39 525/574/40 +f 526/575/38 10/10/41 527/576/42 1518/1617/39 +f 1518/1617/39 527/576/42 4/4/10 520/569/26 +f 525/574/40 1518/1617/39 520/569/26 6/6/25 +f 1/1/5 528/577/43 1519/1618/44 510/559/6 +f 528/577/43 11/11/45 529/578/46 1519/1618/44 +f 1519/1618/44 529/578/46 9/9/33 522/571/31 +f 510/559/6 1519/1618/44 522/571/31 3/3/7 +f 10/10/41 530/579/47 1520/1619/48 527/576/42 +f 530/579/47 12/12/49 531/580/50 1520/1619/48 +f 1520/1619/48 531/580/50 2/2/14 513/562/11 +f 527/576/42 1520/1619/48 513/562/11 4/4/10 +f 11/11/45 532/581/51 1521/1620/52 529/578/46 +f 532/581/51 13/13/53 533/582/54 1521/1620/52 +f 1521/1620/52 533/582/54 15/15/55 534/583/56 +f 529/578/46 1521/1620/52 534/583/56 9/9/33 +f 16/16/57 536/585/58 1522/1621/59 535/584/60 +f 536/585/58 14/14/61 537/586/62 1522/1621/59 +f 1522/1621/59 537/586/62 12/12/49 530/579/47 +f 535/584/60 1522/1621/59 530/579/47 10/10/41 +f 9/9/33 534/583/56 1523/1622/63 523/572/34 +f 534/583/56 15/15/55 538/587/64 1523/1622/63 +f 1523/1622/63 538/587/64 17/17/65 539/588/66 +f 523/572/34 1523/1622/63 539/588/66 7/7/35 +f 18/18/67 541/590/68 1524/1623/69 540/589/70 +f 541/590/68 16/16/57 535/584/60 1524/1623/69 +f 1524/1623/69 535/584/60 10/10/41 526/575/38 +f 540/589/70 1524/1623/69 526/575/38 8/8/37 +f 15/15/55 542/591/71 1525/1624/72 538/587/64 +f 542/591/71 21/21/73 543/592/74 1525/1624/72 +f 1525/1624/72 543/592/74 19/19/75 544/593/76 +f 538/587/64 1525/1624/72 544/593/76 17/17/65 +f 20/20/77 546/595/78 1526/1625/79 545/594/80 +f 546/595/78 22/22/81 547/596/82 1526/1625/79 +f 1526/1625/79 547/596/82 16/16/57 541/590/68 +f 545/594/80 1526/1625/79 541/590/68 18/18/67 +f 13/13/53 548/597/83 1527/1626/84 533/582/54 +f 548/597/83 23/23/85 549/598/86 1527/1626/84 +f 1527/1626/84 549/598/86 21/21/73 542/591/71 +f 533/582/54 1527/1626/84 542/591/71 15/15/55 +f 22/22/81 550/599/87 1528/1627/88 547/596/82 +f 550/599/87 24/24/89 551/600/90 1528/1627/88 +f 1528/1627/88 551/600/90 14/14/61 536/585/58 +f 547/596/82 1528/1627/88 536/585/58 16/16/57 +f 23/23/85 552/601/91 1529/1628/92 549/598/86 +f 552/601/91 25/25/93 553/602/94 1529/1628/92 +f 1529/1628/92 553/602/94 27/27/95 554/603/96 +f 549/598/86 1529/1628/92 554/603/96 21/21/73 +f 28/28/97 556/605/98 1530/1629/99 555/604/100 +f 556/605/98 26/26/101 557/606/102 1530/1629/99 +f 1530/1629/99 557/606/102 24/24/89 550/599/87 +f 555/604/100 1530/1629/99 550/599/87 22/22/81 +f 21/21/73 554/603/96 1531/1630/103 543/592/74 +f 554/603/96 27/27/95 558/607/104 1531/1630/103 +f 1531/1630/103 558/607/104 29/29/105 559/608/106 +f 543/592/74 1531/1630/103 559/608/106 19/19/75 +f 30/30/107 561/610/108 1532/1631/109 560/609/110 +f 561/610/108 28/28/97 555/604/100 1532/1631/109 +f 1532/1631/109 555/604/100 22/22/81 546/595/78 +f 560/609/110 1532/1631/109 546/595/78 20/20/77 +f 27/27/95 562/611/111 1533/1632/112 558/607/104 +f 562/611/111 33/33/113 563/612/114 1533/1632/112 +f 1533/1632/112 563/612/114 31/31/115 564/613/116 +f 558/607/104 1533/1632/112 564/613/116 29/29/105 +f 32/32/117 566/615/118 1534/1633/119 565/614/120 +f 566/615/118 34/34/121 567/616/122 1534/1633/119 +f 1534/1633/119 567/616/122 28/28/97 561/610/108 +f 565/614/120 1534/1633/119 561/610/108 30/30/107 +f 25/25/93 568/617/123 1535/1634/124 553/602/94 +f 568/617/123 35/35/125 569/618/126 1535/1634/124 +f 1535/1634/124 569/618/126 33/33/113 562/611/111 +f 553/602/94 1535/1634/124 562/611/111 27/27/95 +f 34/34/121 570/619/127 1536/1635/128 567/616/122 +f 570/619/127 36/36/129 571/620/130 1536/1635/128 +f 1536/1635/128 571/620/130 26/26/101 556/605/98 +f 567/616/122 1536/1635/128 556/605/98 28/28/97 +f 35/35/125 572/621/131 1537/1636/132 569/618/126 +f 572/621/131 37/37/133 573/622/134 1537/1636/132 +f 1537/1636/132 573/622/134 39/39/135 574/623/136 +f 569/618/126 1537/1636/132 574/623/136 33/33/113 +f 40/40/137 576/625/138 1538/1637/139 575/624/140 +f 576/625/138 38/38/141 577/626/142 1538/1637/139 +f 1538/1637/139 577/626/142 36/36/129 570/619/127 +f 575/624/140 1538/1637/139 570/619/127 34/34/121 +f 33/33/113 574/623/136 1539/1638/143 563/612/114 +f 574/623/136 39/39/135 578/627/144 1539/1638/143 +f 1539/1638/143 578/627/144 41/41/145 579/628/146 +f 563/612/114 1539/1638/143 579/628/146 31/31/115 +f 42/42/147 581/630/148 1540/1639/149 580/629/150 +f 581/630/148 40/40/137 575/624/140 1540/1639/149 +f 1540/1639/149 575/624/140 34/34/121 566/615/118 +f 580/629/150 1540/1639/149 566/615/118 32/32/117 +f 39/39/135 582/631/151 1541/1640/152 578/627/144 +f 582/631/151 45/45/9 516/565/20 1541/1640/152 +f 1541/1640/152 516/565/20 43/43/24 583/632/153 +f 578/627/144 1541/1640/152 583/632/153 41/41/145 +f 44/44/30 521/570/29 1542/1641/154 584/633/155 +f 521/570/29 46/46/18 585/634/156 1542/1641/154 +f 1542/1641/154 585/634/156 40/40/137 581/630/148 +f 584/633/155 1542/1641/154 581/630/148 42/42/147 +f 37/37/133 586/635/157 1543/1642/158 573/622/134 +f 586/635/157 47/47/1 508/557/4 1543/1642/158 +f 1543/1642/158 508/557/4 45/45/9 582/631/151 +f 573/622/134 1543/1642/158 582/631/151 39/39/135 +f 46/46/18 515/564/17 1544/1643/159 585/634/156 +f 515/564/17 48/48/16 587/636/160 1544/1643/159 +f 1544/1643/159 587/636/160 38/38/141 576/625/138 +f 585/634/156 1544/1643/159 576/625/138 40/40/137 +f 47/47/1 586/635/157 1545/1644/161 588/637/162 +f 586/635/157 37/37/133 589/638/163 1545/1644/161 +f 1545/1644/161 589/638/163 51/51/164 590/639/165 +f 588/637/162 1545/1644/161 590/639/165 49/49/166 +f 52/52/167 592/641/168 1546/1645/169 591/640/170 +f 592/641/168 38/38/141 587/636/160 1546/1645/169 +f 1546/1645/169 587/636/160 48/48/16 593/642/171 +f 591/640/170 1546/1645/169 593/642/171 50/50/172 +f 37/37/133 572/621/131 1547/1646/173 589/638/163 +f 572/621/131 35/35/125 594/643/174 1547/1646/173 +f 1547/1646/173 594/643/174 53/53/175 595/644/176 +f 589/638/163 1547/1646/173 595/644/176 51/51/164 +f 54/54/177 597/646/178 1548/1647/179 596/645/180 +f 597/646/178 36/36/129 577/626/142 1548/1647/179 +f 1548/1647/179 577/626/142 38/38/141 592/641/168 +f 596/645/180 1548/1647/179 592/641/168 52/52/167 +f 35/35/125 568/617/123 1549/1648/181 594/643/174 +f 568/617/123 25/25/93 598/647/182 1549/1648/181 +f 1549/1648/181 598/647/182 55/55/183 599/648/184 +f 594/643/174 1549/1648/181 599/648/184 53/53/175 +f 56/56/185 601/650/186 1550/1649/187 600/649/188 +f 601/650/186 26/26/101 571/620/130 1550/1649/187 +f 1550/1649/187 571/620/130 36/36/129 597/646/178 +f 600/649/188 1550/1649/187 597/646/178 54/54/177 +f 25/25/93 552/601/91 1551/1650/189 598/647/182 +f 552/601/91 23/23/85 602/651/190 1551/1650/189 +f 1551/1650/189 602/651/190 57/57/191 603/652/192 +f 598/647/182 1551/1650/189 603/652/192 55/55/183 +f 58/58/193 605/654/194 1552/1651/195 604/653/196 +f 605/654/194 24/24/89 557/606/102 1552/1651/195 +f 1552/1651/195 557/606/102 26/26/101 601/650/186 +f 604/653/196 1552/1651/195 601/650/186 56/56/185 +f 23/23/85 548/597/83 1553/1652/197 602/651/190 +f 548/597/83 13/13/53 606/655/198 1553/1652/197 +f 1553/1652/197 606/655/198 59/59/199 607/656/200 +f 602/651/190 1553/1652/197 607/656/200 57/57/191 +f 60/60/201 609/658/202 1554/1653/203 608/657/204 +f 609/658/202 14/14/61 551/600/90 1554/1653/203 +f 1554/1653/203 551/600/90 24/24/89 605/654/194 +f 608/657/204 1554/1653/203 605/654/194 58/58/193 +f 13/13/53 532/581/51 1555/1654/205 606/655/198 +f 532/581/51 11/11/45 610/659/206 1555/1654/205 +f 1555/1654/205 610/659/206 63/63/207 611/660/208 +f 606/655/198 1555/1654/205 611/660/208 59/59/199 +f 64/64/209 613/662/210 1556/1655/211 612/661/212 +f 613/662/210 12/12/49 537/586/62 1556/1655/211 +f 1556/1655/211 537/586/62 14/14/61 609/658/202 +f 612/661/212 1556/1655/211 609/658/202 60/60/201 +f 11/11/45 528/577/43 1557/1656/213 610/659/206 +f 528/577/43 1/1/5 614/663/214 1557/1656/213 +f 1557/1656/213 614/663/214 65/65/215 615/664/216 +f 610/659/206 1557/1656/213 615/664/216 63/63/207 +f 66/66/217 617/666/218 1558/1657/219 616/665/220 +f 617/666/218 2/2/14 531/580/50 1558/1657/219 +f 1558/1657/219 531/580/50 12/12/49 613/662/210 +f 616/665/220 1558/1657/219 613/662/210 64/64/209 +f 1/1/5 509/558/2 1559/1658/221 614/663/214 +f 509/558/2 47/47/1 588/637/162 1559/1658/221 +f 1559/1658/221 588/637/162 49/49/166 618/667/222 +f 614/663/214 1559/1658/221 618/667/222 65/65/215 +f 50/50/172 593/642/171 1560/1659/223 619/668/224 +f 593/642/171 48/48/16 514/563/15 1560/1659/223 +f 1560/1659/223 514/563/15 2/2/14 617/666/218 +f 619/668/224 1560/1659/223 617/666/218 66/66/217 +f 61/61/225 621/670/226 1561/1660/227 620/669/228 +f 65/65/215 618/667/222 1561/1660/227 621/670/226 +f 49/49/166 620/669/228 1561/1660/227 618/667/222 +f 50/50/172 619/668/224 1562/1661/229 622/671/230 +f 66/66/217 623/672/231 1562/1661/229 619/668/224 +f 62/62/232 622/671/230 1562/1661/229 623/672/231 +f 63/63/207 615/664/216 1563/1662/233 624/673/234 +f 65/65/215 621/670/226 1563/1662/233 615/664/216 +f 61/61/225 624/673/234 1563/1662/233 621/670/226 +f 62/62/232 623/672/231 1564/1663/235 625/674/236 +f 66/66/217 616/665/220 1564/1663/235 623/672/231 +f 64/64/209 625/674/236 1564/1663/235 616/665/220 +f 61/61/225 626/675/237 1565/1664/238 624/673/234 +f 59/59/199 611/660/208 1565/1664/238 626/675/237 +f 63/63/207 624/673/234 1565/1664/238 611/660/208 +f 64/64/209 612/661/212 1566/1665/239 625/674/236 +f 60/60/201 627/676/240 1566/1665/239 612/661/212 +f 62/62/232 625/674/236 1566/1665/239 627/676/240 +f 61/61/225 628/677/241 1567/1666/242 626/675/237 +f 57/57/191 607/656/200 1567/1666/242 628/677/241 +f 59/59/199 626/675/237 1567/1666/242 607/656/200 +f 60/60/201 608/657/204 1568/1667/243 627/676/240 +f 58/58/193 629/678/244 1568/1667/243 608/657/204 +f 62/62/232 627/676/240 1568/1667/243 629/678/244 +f 61/61/225 630/679/245 1569/1668/246 628/677/241 +f 55/55/183 603/652/192 1569/1668/246 630/679/245 +f 57/57/191 628/677/241 1569/1668/246 603/652/192 +f 58/58/193 604/653/196 1570/1669/247 629/678/244 +f 56/56/185 631/680/248 1570/1669/247 604/653/196 +f 62/62/232 629/678/244 1570/1669/247 631/680/248 +f 61/61/225 632/681/249 1571/1670/250 630/679/245 +f 53/53/175 599/648/184 1571/1670/250 632/681/249 +f 55/55/183 630/679/245 1571/1670/250 599/648/184 +f 56/56/185 600/649/188 1572/1671/251 631/680/248 +f 54/54/177 633/682/252 1572/1671/251 600/649/188 +f 62/62/232 631/680/248 1572/1671/251 633/682/252 +f 61/61/225 634/683/253 1573/1672/254 632/681/249 +f 51/51/164 595/644/176 1573/1672/254 634/683/253 +f 53/53/175 632/681/249 1573/1672/254 595/644/176 +f 54/54/177 596/645/180 1574/1673/255 633/682/252 +f 52/52/167 635/684/256 1574/1673/255 596/645/180 +f 62/62/232 633/682/252 1574/1673/255 635/684/256 +f 61/61/225 620/669/228 1575/1674/257 634/683/253 +f 49/49/166 590/639/165 1575/1674/257 620/669/228 +f 51/51/164 634/683/253 1575/1674/257 590/639/165 +f 52/52/167 591/640/170 1576/1675/258 635/684/256 +f 50/50/172 622/671/230 1576/1675/258 591/640/170 +f 62/62/232 635/684/256 1576/1675/258 622/671/230 +f 89/96/259 637/686/260 1577/1676/261 636/685/262 +f 637/686/260 174/181/263 638/687/264 1577/1676/261 +f 1577/1676/261 638/687/264 176/183/265 639/688/266 +f 636/685/262 1577/1676/261 639/688/266 91/98/267 +f 176/183/265 640/689/268 1578/1677/269 639/688/266 +f 640/689/268 175/182/270 641/690/271 1578/1677/269 +f 1578/1677/269 641/690/271 90/97/272 642/691/273 +f 639/688/266 1578/1677/269 642/691/273 91/98/267 +f 87/94/274 644/693/275 1579/1678/276 643/692/277 +f 644/693/275 172/179/278 645/694/279 1579/1678/276 +f 1579/1678/276 645/694/279 174/181/263 637/686/260 +f 643/692/277 1579/1678/276 637/686/260 89/96/259 +f 175/182/270 646/695/280 1580/1679/281 641/690/271 +f 646/695/280 173/180/282 647/696/283 1580/1679/281 +f 1580/1679/281 647/696/283 88/95/284 648/697/285 +f 641/690/271 1580/1679/281 648/697/285 90/97/272 +f 85/92/286 650/699/287 1581/1680/288 649/698/289 +f 650/699/287 170/177/290 651/700/291 1581/1680/288 +f 1581/1680/288 651/700/291 172/179/278 644/693/275 +f 649/698/289 1581/1680/288 644/693/275 87/94/274 +f 173/180/282 652/701/292 1582/1681/293 647/696/283 +f 652/701/292 171/178/294 653/702/295 1582/1681/293 +f 1582/1681/293 653/702/295 86/93/296 654/703/297 +f 647/696/283 1582/1681/293 654/703/297 88/95/284 +f 83/90/298 656/705/299 1583/1682/300 655/704/301 +f 656/705/299 168/175/302 657/706/303 1583/1682/300 +f 1583/1682/300 657/706/303 170/177/290 650/699/287 +f 655/704/301 1583/1682/300 650/699/287 85/92/286 +f 171/178/294 658/707/304 1584/1683/305 653/702/295 +f 658/707/304 169/176/306 659/708/307 1584/1683/305 +f 1584/1683/305 659/708/307 84/91/308 660/709/309 +f 653/702/295 1584/1683/305 660/709/309 86/93/296 +f 81/88/310 662/711/311 1585/1684/312 661/710/313 +f 662/711/311 166/173/314 663/712/315 1585/1684/312 +f 1585/1684/312 663/712/315 168/175/302 656/705/299 +f 661/710/313 1585/1684/312 656/705/299 83/90/298 +f 169/176/306 664/713/316 1586/1685/317 659/708/307 +f 664/713/316 167/174/318 665/714/319 1586/1685/317 +f 1586/1685/317 665/714/319 82/89/320 666/715/321 +f 659/708/307 1586/1685/317 666/715/321 84/91/308 +f 79/86/322 668/717/323 1587/1686/324 667/716/325 +f 668/717/323 92/99/326 669/718/327 1587/1686/324 +f 1587/1686/324 669/718/327 146/153/328 670/719/329 +f 667/716/325 1587/1686/324 670/719/329 164/171/330 +f 147/154/331 672/721/332 1588/1687/333 671/720/334 +f 672/721/332 93/100/335 673/722/336 1588/1687/333 +f 1588/1687/333 673/722/336 80/87/337 674/723/338 +f 671/720/334 1588/1687/333 674/723/338 165/172/339 +f 92/99/326 675/724/340 1589/1688/341 669/718/327 +f 675/724/340 94/101/342 676/725/343 1589/1688/341 +f 1589/1688/341 676/725/343 148/155/344 677/726/345 +f 669/718/327 1589/1688/341 677/726/345 146/153/328 +f 149/156/346 679/728/347 1590/1689/348 678/727/349 +f 679/728/347 95/102/350 680/729/351 1590/1689/348 +f 1590/1689/348 680/729/351 93/100/335 672/721/332 +f 678/727/349 1590/1689/348 672/721/332 147/154/331 +f 94/101/342 681/730/352 1591/1690/353 676/725/343 +f 681/730/352 96/103/354 682/731/355 1591/1690/353 +f 1591/1690/353 682/731/355 150/157/356 683/732/357 +f 676/725/343 1591/1690/353 683/732/357 148/155/344 +f 151/158/358 685/734/359 1592/1691/360 684/733/361 +f 685/734/359 97/104/362 686/735/363 1592/1691/360 +f 1592/1691/360 686/735/363 95/102/350 679/728/347 +f 684/733/361 1592/1691/360 679/728/347 149/156/346 +f 96/103/354 687/736/364 1593/1692/365 682/731/355 +f 687/736/364 98/105/366 688/737/367 1593/1692/365 +f 1593/1692/365 688/737/367 152/159/368 689/738/369 +f 682/731/355 1593/1692/365 689/738/369 150/157/356 +f 153/160/370 691/740/371 1594/1693/372 690/739/373 +f 691/740/371 99/106/374 692/741/375 1594/1693/372 +f 1594/1693/372 692/741/375 97/104/362 685/734/359 +f 690/739/373 1594/1693/372 685/734/359 151/158/358 +f 98/105/366 693/742/376 1595/1694/377 688/737/367 +f 693/742/376 100/107/378 694/743/379 1595/1694/377 +f 1595/1694/377 694/743/379 154/161/380 695/744/381 +f 688/737/367 1595/1694/377 695/744/381 152/159/368 +f 155/162/382 697/746/383 1596/1695/384 696/745/385 +f 697/746/383 101/108/386 698/747/387 1596/1695/384 +f 1596/1695/384 698/747/387 99/106/374 691/740/371 +f 696/745/385 1596/1695/384 691/740/371 153/160/370 +f 100/107/378 699/748/388 1597/1696/389 694/743/379 +f 699/748/388 102/109/390 700/749/391 1597/1696/389 +f 1597/1696/389 700/749/391 156/163/392 701/750/393 +f 694/743/379 1597/1696/389 701/750/393 154/161/380 +f 157/164/394 703/752/395 1598/1697/396 702/751/397 +f 703/752/395 103/110/398 704/753/399 1598/1697/396 +f 1598/1697/396 704/753/399 101/108/386 697/746/383 +f 702/751/397 1598/1697/396 697/746/383 155/162/382 +f 102/109/390 705/754/400 1599/1698/401 700/749/391 +f 705/754/400 104/111/402 706/755/403 1599/1698/401 +f 1599/1698/401 706/755/403 158/165/404 707/756/405 +f 700/749/391 1599/1698/401 707/756/405 156/163/392 +f 159/166/406 709/758/407 1600/1699/408 708/757/409 +f 709/758/407 105/112/410 710/759/411 1600/1699/408 +f 1600/1699/408 710/759/411 103/110/398 703/752/395 +f 708/757/409 1600/1699/408 703/752/395 157/164/394 +f 104/111/402 711/760/412 1601/1700/413 706/755/403 +f 711/760/412 106/113/414 712/761/415 1601/1700/413 +f 1601/1700/413 712/761/415 160/167/416 713/762/417 +f 706/755/403 1601/1700/413 713/762/417 158/165/404 +f 161/168/418 715/764/419 1602/1701/420 714/763/421 +f 715/764/419 107/114/422 716/765/423 1602/1701/420 +f 1602/1701/420 716/765/423 105/112/410 709/758/407 +f 714/763/421 1602/1701/420 709/758/407 159/166/406 +f 106/113/414 717/766/424 1603/1702/425 712/761/415 +f 717/766/424 108/115/426 718/767/427 1603/1702/425 +f 1603/1702/425 718/767/427 162/169/428 719/768/429 +f 712/761/415 1603/1702/425 719/768/429 160/167/416 +f 163/170/430 721/770/431 1604/1703/432 720/769/433 +f 721/770/431 109/116/434 722/771/435 1604/1703/432 +f 1604/1703/432 722/771/435 107/114/422 715/764/419 +f 720/769/433 1604/1703/432 715/764/419 161/168/418 +f 108/115/426 723/772/436 1605/1704/437 718/767/427 +f 723/772/436 67/67/438 724/773/439 1605/1704/437 +f 1605/1704/437 724/773/439 68/68/440 725/774/441 +f 718/767/427 1605/1704/437 725/774/441 162/169/428 +f 68/68/440 724/773/439 1606/1705/442 726/775/443 +f 724/773/439 67/67/438 727/776/444 1606/1705/442 +f 1606/1705/442 727/776/444 109/116/434 721/770/431 +f 726/775/443 1606/1705/442 721/770/431 163/170/430 +f 110/117/445 729/778/446 1607/1706/447 728/777/448 +f 729/778/446 128/135/449 730/779/450 1607/1706/447 +f 1607/1706/447 730/779/450 160/167/416 719/768/429 +f 728/777/448 1607/1706/447 719/768/429 162/169/428 +f 161/168/418 731/780/451 1608/1707/452 720/769/433 +f 731/780/451 129/136/453 732/781/454 1608/1707/452 +f 1608/1707/452 732/781/454 111/118/455 733/782/456 +f 720/769/433 1608/1707/452 733/782/456 163/170/430 +f 128/135/449 734/783/457 1609/1708/458 730/779/450 +f 734/783/457 179/186/459 735/784/460 1609/1708/458 +f 1609/1708/458 735/784/460 158/165/404 713/762/417 +f 730/779/450 1609/1708/458 713/762/417 160/167/416 +f 159/166/406 736/785/461 1610/1709/462 714/763/421 +f 736/785/461 180/187/463 737/786/464 1610/1709/462 +f 1610/1709/462 737/786/464 129/136/453 731/780/451 +f 714/763/421 1610/1709/462 731/780/451 161/168/418 +f 126/133/465 739/788/466 1611/1710/467 738/787/468 +f 739/788/466 156/163/392 707/756/405 1611/1710/467 +f 1611/1710/467 707/756/405 158/165/404 735/784/460 +f 738/787/468 1611/1710/467 735/784/460 179/186/459 +f 159/166/406 708/757/409 1612/1711/469 736/785/461 +f 708/757/409 157/164/394 740/789/470 1612/1711/469 +f 1612/1711/469 740/789/470 127/134/471 741/790/472 +f 736/785/461 1612/1711/469 741/790/472 180/187/463 +f 124/131/473 743/792/474 1613/1712/475 742/791/476 +f 743/792/474 154/161/380 701/750/393 1613/1712/475 +f 1613/1712/475 701/750/393 156/163/392 739/788/466 +f 742/791/476 1613/1712/475 739/788/466 126/133/465 +f 157/164/394 702/751/397 1614/1713/477 740/789/470 +f 702/751/397 155/162/382 744/793/478 1614/1713/477 +f 1614/1713/477 744/793/478 125/132/479 745/794/480 +f 740/789/470 1614/1713/477 745/794/480 127/134/471 +f 122/129/481 747/796/482 1615/1714/483 746/795/484 +f 747/796/482 152/159/368 695/744/381 1615/1714/483 +f 1615/1714/483 695/744/381 154/161/380 743/792/474 +f 746/795/484 1615/1714/483 743/792/474 124/131/473 +f 155/162/382 696/745/385 1616/1715/485 744/793/478 +f 696/745/385 153/160/370 748/797/486 1616/1715/485 +f 1616/1715/485 748/797/486 123/130/487 749/798/488 +f 744/793/478 1616/1715/485 749/798/488 125/132/479 +f 120/127/489 751/800/490 1617/1716/491 750/799/492 +f 751/800/490 150/157/356 689/738/369 1617/1716/491 +f 1617/1716/491 689/738/369 152/159/368 747/796/482 +f 750/799/492 1617/1716/491 747/796/482 122/129/481 +f 153/160/370 690/739/373 1618/1717/493 748/797/486 +f 690/739/373 151/158/358 752/801/494 1618/1717/493 +f 1618/1717/493 752/801/494 121/128/495 753/802/496 +f 748/797/486 1618/1717/493 753/802/496 123/130/487 +f 118/125/497 755/804/498 1619/1718/499 754/803/500 +f 755/804/498 148/155/344 683/732/357 1619/1718/499 +f 1619/1718/499 683/732/357 150/157/356 751/800/490 +f 754/803/500 1619/1718/499 751/800/490 120/127/489 +f 151/158/358 684/733/361 1620/1719/501 752/801/494 +f 684/733/361 149/156/346 756/805/502 1620/1719/501 +f 1620/1719/501 756/805/502 119/126/503 757/806/504 +f 752/801/494 1620/1719/501 757/806/504 121/128/495 +f 116/123/505 759/808/506 1621/1720/507 758/807/508 +f 759/808/506 146/153/328 677/726/345 1621/1720/507 +f 1621/1720/507 677/726/345 148/155/344 755/804/498 +f 758/807/508 1621/1720/507 755/804/498 118/125/497 +f 149/156/346 678/727/349 1622/1721/509 756/805/502 +f 678/727/349 147/154/331 760/809/510 1622/1721/509 +f 1622/1721/509 760/809/510 117/124/511 761/810/512 +f 756/805/502 1622/1721/509 761/810/512 119/126/503 +f 114/121/513 763/812/514 1623/1722/515 762/811/516 +f 763/812/514 164/171/330 670/719/329 1623/1722/515 +f 1623/1722/515 670/719/329 146/153/328 759/808/506 +f 762/811/516 1623/1722/515 759/808/506 116/123/505 +f 147/154/331 671/720/334 1624/1723/517 760/809/510 +f 671/720/334 165/172/339 764/813/518 1624/1723/517 +f 1624/1723/517 764/813/518 115/122/519 765/814/520 +f 760/809/510 1624/1723/517 765/814/520 117/124/511 +f 114/121/513 766/815/521 1625/1724/522 763/812/514 +f 766/815/521 181/188/523 767/816/524 1625/1724/522 +f 1625/1724/522 767/816/524 177/184/525 768/817/526 +f 763/812/514 1625/1724/522 768/817/526 164/171/330 +f 177/184/525 770/819/527 1626/1725/528 769/818/529 +f 770/819/527 182/189/530 771/820/531 1626/1725/528 +f 1626/1725/528 771/820/531 115/122/519 764/813/518 +f 769/818/529 1626/1725/528 764/813/518 165/172/339 +f 110/117/445 728/777/448 1627/1726/532 772/821/533 +f 728/777/448 162/169/428 725/774/441 1627/1726/532 +f 1627/1726/532 725/774/441 68/68/440 773/822/534 +f 772/821/533 1627/1726/532 773/822/534 112/119/535 +f 68/68/440 726/775/443 1628/1727/536 774/823/537 +f 726/775/443 163/170/430 733/782/456 1628/1727/536 +f 1628/1727/536 733/782/456 111/118/455 775/824/538 +f 774/823/537 1628/1727/536 775/824/538 113/120/539 +f 112/119/535 773/822/534 1629/1728/540 776/825/541 +f 773/822/534 68/68/440 777/826/542 1629/1728/540 +f 1629/1728/540 777/826/542 178/185/543 778/827/544 +f 776/825/541 1629/1728/540 778/827/544 183/190/545 +f 178/185/543 777/826/542 1630/1729/546 779/828/547 +f 777/826/542 68/68/440 774/823/537 1630/1729/546 +f 1630/1729/546 774/823/537 113/120/539 780/829/548 +f 779/828/547 1630/1729/546 780/829/548 184/191/549 +f 177/184/525 767/816/524 1631/1730/550 781/830/551 +f 767/816/524 181/188/523 782/831/552 1631/1730/550 +f 1631/1730/550 782/831/552 183/190/545 778/827/544 +f 781/830/551 1631/1730/550 778/827/544 178/185/543 +f 184/191/549 783/832/553 1632/1731/554 779/828/547 +f 783/832/553 182/189/530 770/819/527 1632/1731/554 +f 1632/1731/554 770/819/527 177/184/525 781/830/551 +f 779/828/547 1632/1731/554 781/830/551 178/185/543 +f 135/142/555 785/834/556 1633/1732/557 784/833/558 +f 785/834/556 137/144/559 786/835/560 1633/1732/557 +f 1633/1732/557 786/835/560 176/183/265 638/687/264 +f 784/833/558 1633/1732/557 638/687/264 174/181/263 +f 176/183/265 786/835/560 1634/1733/561 640/689/268 +f 786/835/560 137/144/559 787/836/562 1634/1733/561 +f 1634/1733/561 787/836/562 136/143/563 788/837/564 +f 640/689/268 1634/1733/561 788/837/564 175/182/270 +f 133/140/565 790/839/566 1635/1734/567 789/838/568 +f 790/839/566 135/142/555 784/833/558 1635/1734/567 +f 1635/1734/567 784/833/558 174/181/263 645/694/279 +f 789/838/568 1635/1734/567 645/694/279 172/179/278 +f 175/182/270 788/837/564 1636/1735/569 646/695/280 +f 788/837/564 136/143/563 791/840/570 1636/1735/569 +f 1636/1735/569 791/840/570 134/141/571 792/841/572 +f 646/695/280 1636/1735/569 792/841/572 173/180/282 +f 131/138/573 794/843/574 1637/1736/575 793/842/576 +f 794/843/574 133/140/565 789/838/568 1637/1736/575 +f 1637/1736/575 789/838/568 172/179/278 651/700/291 +f 793/842/576 1637/1736/575 651/700/291 170/177/290 +f 173/180/282 792/841/572 1638/1737/577 652/701/292 +f 792/841/572 134/141/571 795/844/578 1638/1737/577 +f 1638/1737/577 795/844/578 132/139/579 796/845/580 +f 652/701/292 1638/1737/577 796/845/580 171/178/294 +f 166/173/314 797/846/581 1639/1738/582 663/712/315 +f 797/846/581 187/194/583 798/847/584 1639/1738/582 +f 1639/1738/582 798/847/584 185/192/585 799/848/586 +f 663/712/315 1639/1738/582 799/848/586 168/175/302 +f 186/193/587 801/850/588 1640/1739/589 800/849/590 +f 801/850/588 188/195/591 802/851/592 1640/1739/589 +f 1640/1739/589 802/851/592 167/174/318 664/713/316 +f 800/849/590 1640/1739/589 664/713/316 169/176/306 +f 131/138/573 793/842/576 1641/1740/593 803/852/594 +f 793/842/576 170/177/290 657/706/303 1641/1740/593 +f 1641/1740/593 657/706/303 168/175/302 799/848/586 +f 803/852/594 1641/1740/593 799/848/586 185/192/585 +f 169/176/306 658/707/304 1642/1741/595 800/849/590 +f 658/707/304 171/178/294 796/845/580 1642/1741/595 +f 1642/1741/595 796/845/580 132/139/579 804/853/596 +f 800/849/590 1642/1741/595 804/853/596 186/193/587 +f 144/151/597 806/855/598 1643/1742/599 805/854/600 +f 806/855/598 190/197/601 807/856/602 1643/1742/599 +f 1643/1742/599 807/856/602 189/196/603 808/857/604 +f 805/854/600 1643/1742/599 808/857/604 187/194/583 +f 189/196/603 807/856/602 1644/1743/605 809/858/606 +f 807/856/602 190/197/601 810/859/607 1644/1743/605 +f 1644/1743/605 810/859/607 145/152/608 811/860/609 +f 809/858/606 1644/1743/605 811/860/609 188/195/591 +f 185/192/585 798/847/584 1645/1744/610 812/861/611 +f 798/847/584 187/194/583 808/857/604 1645/1744/610 +f 1645/1744/610 808/857/604 189/196/603 813/862/612 +f 812/861/611 1645/1744/610 813/862/612 69/69/613 +f 189/196/603 809/858/606 1646/1745/614 813/862/612 +f 809/858/606 188/195/591 801/850/588 1646/1745/614 +f 1646/1745/614 801/850/588 186/193/587 814/863/615 +f 813/862/612 1646/1745/614 814/863/615 69/69/613 +f 130/137/616 816/865/617 1647/1746/618 815/864/619 +f 816/865/617 131/138/573 803/852/594 1647/1746/618 +f 1647/1746/618 803/852/594 185/192/585 812/861/611 +f 815/864/619 1647/1746/618 812/861/611 69/69/613 +f 186/193/587 804/853/596 1648/1747/620 814/863/615 +f 804/853/596 132/139/579 817/866/621 1648/1747/620 +f 1648/1747/620 817/866/621 130/137/616 815/864/619 +f 814/863/615 1648/1747/620 815/864/619 69/69/613 +f 142/149/622 819/868/623 1649/1748/624 818/867/625 +f 819/868/623 193/200/626 820/869/627 1649/1748/624 +f 1649/1748/624 820/869/627 191/198/628 821/870/629 +f 818/867/625 1649/1748/624 821/870/629 144/151/597 +f 192/199/630 823/872/631 1650/1749/632 822/871/633 +f 823/872/631 194/201/634 824/873/635 1650/1749/632 +f 1650/1749/632 824/873/635 143/150/636 825/874/637 +f 822/871/633 1650/1749/632 825/874/637 145/152/608 +f 140/147/638 827/876/639 1651/1750/640 826/875/641 +f 827/876/639 195/202/642 828/877/643 1651/1750/640 +f 1651/1750/640 828/877/643 193/200/626 819/868/623 +f 826/875/641 1651/1750/640 819/868/623 142/149/622 +f 194/201/634 829/878/644 1652/1751/645 824/873/635 +f 829/878/644 196/203/646 830/879/647 1652/1751/645 +f 1652/1751/645 830/879/647 141/148/648 831/880/649 +f 824/873/635 1652/1751/645 831/880/649 143/150/636 +f 139/146/650 833/882/651 1653/1752/652 832/881/653 +f 833/882/651 197/204/654 834/883/655 1653/1752/652 +f 1653/1752/652 834/883/655 195/202/642 827/876/639 +f 832/881/653 1653/1752/652 827/876/639 140/147/638 +f 196/203/646 835/884/656 1654/1753/657 830/879/647 +f 835/884/656 198/205/658 836/885/659 1654/1753/657 +f 1654/1753/657 836/885/659 139/146/650 837/886/660 +f 830/879/647 1654/1753/657 837/886/660 141/148/648 +f 138/145/661 839/888/662 1655/1754/663 838/887/664 +f 839/888/662 71/71/665 840/889/666 1655/1754/663 +f 1655/1754/663 840/889/666 197/204/654 833/882/651 +f 838/887/664 1655/1754/663 833/882/651 139/146/650 +f 198/205/658 841/890/667 1656/1755/668 836/885/659 +f 841/890/667 71/71/665 839/888/662 1656/1755/668 +f 1656/1755/668 839/888/662 138/145/661 838/887/664 +f 836/885/659 1656/1755/668 838/887/664 139/146/650 +f 190/197/601 806/855/598 1657/1756/669 842/891/670 +f 806/855/598 144/151/597 821/870/629 1657/1756/669 +f 1657/1756/669 821/870/629 191/198/628 843/892/671 +f 842/891/670 1657/1756/669 843/892/671 70/70/672 +f 192/199/630 822/871/633 1658/1757/673 844/893/674 +f 822/871/633 145/152/608 810/859/607 1658/1757/673 +f 1658/1757/673 810/859/607 190/197/601 842/891/670 +f 844/893/674 1658/1757/673 842/891/670 70/70/672 +f 70/70/672 843/892/671 1659/1758/675 845/894/676 +f 843/892/671 191/198/628 846/895/677 1659/1758/675 +f 1659/1758/675 846/895/677 206/213/678 847/896/679 +f 845/894/676 1659/1758/675 847/896/679 208/215/680 +f 207/214/681 849/898/682 1660/1759/683 848/897/684 +f 849/898/682 192/199/630 844/893/674 1660/1759/683 +f 1660/1759/683 844/893/674 70/70/672 845/894/676 +f 848/897/684 1660/1759/683 845/894/676 208/215/680 +f 71/71/665 850/899/685 1661/1760/686 840/889/666 +f 850/899/685 199/206/687 851/900/688 1661/1760/686 +f 1661/1760/686 851/900/688 200/207/689 852/901/690 +f 840/889/666 1661/1760/686 852/901/690 197/204/654 +f 201/208/691 854/903/692 1662/1761/693 853/902/694 +f 854/903/692 199/206/687 850/899/685 1662/1761/693 +f 1662/1761/693 850/899/685 71/71/665 841/890/667 +f 853/902/694 1662/1761/693 841/890/667 198/205/658 +f 197/204/654 852/901/690 1663/1762/695 834/883/655 +f 852/901/690 200/207/689 855/904/696 1663/1762/695 +f 1663/1762/695 855/904/696 202/209/697 856/905/698 +f 834/883/655 1663/1762/695 856/905/698 195/202/642 +f 203/210/699 858/907/700 1664/1763/701 857/906/702 +f 858/907/700 201/208/691 853/902/694 1664/1763/701 +f 1664/1763/701 853/902/694 198/205/658 835/884/656 +f 857/906/702 1664/1763/701 835/884/656 196/203/646 +f 195/202/642 856/905/698 1665/1764/703 828/877/643 +f 856/905/698 202/209/697 859/908/704 1665/1764/703 +f 1665/1764/703 859/908/704 204/211/705 860/909/706 +f 828/877/643 1665/1764/703 860/909/706 193/200/626 +f 205/212/707 862/911/708 1666/1765/709 861/910/710 +f 862/911/708 203/210/699 857/906/702 1666/1765/709 +f 1666/1765/709 857/906/702 196/203/646 829/878/644 +f 861/910/710 1666/1765/709 829/878/644 194/201/634 +f 193/200/626 860/909/706 1667/1766/711 820/869/627 +f 860/909/706 204/211/705 863/912/712 1667/1766/711 +f 1667/1766/711 863/912/712 206/213/678 846/895/677 +f 820/869/627 1667/1766/711 846/895/677 191/198/628 +f 207/214/681 864/913/713 1668/1767/714 849/898/682 +f 864/913/713 205/212/707 861/910/710 1668/1767/714 +f 1668/1767/714 861/910/710 194/201/634 823/872/631 +f 849/898/682 1668/1767/714 823/872/631 192/199/630 +f 199/206/687 865/914/715 1669/1768/716 851/900/688 +f 865/914/715 204/211/705 859/908/704 1669/1768/716 +f 1669/1768/716 859/908/704 202/209/697 855/904/696 +f 851/900/688 1669/1768/716 855/904/696 200/207/689 +f 203/210/699 862/911/708 1670/1769/717 858/907/700 +f 862/911/708 205/212/707 866/915/718 1670/1769/717 +f 1670/1769/717 866/915/718 199/206/687 854/903/692 +f 858/907/700 1670/1769/717 854/903/692 201/208/691 +f 199/206/687 867/916/719 1671/1770/720 865/914/715 +f 867/916/719 208/215/680 847/896/679 1671/1770/720 +f 1671/1770/720 847/896/679 206/213/678 863/912/712 +f 865/914/715 1671/1770/720 863/912/712 204/211/705 +f 207/214/681 848/897/684 1672/1771/721 864/913/713 +f 848/897/684 208/215/680 867/916/719 1672/1771/721 +f 1672/1771/721 867/916/719 199/206/687 866/915/718 +f 864/913/713 1672/1771/721 866/915/718 205/212/707 +f 139/146/650 832/881/653 1673/1772/722 868/917/723 +f 832/881/653 140/147/638 869/918/724 1673/1772/722 +f 1673/1772/722 869/918/724 164/171/330 768/817/526 +f 868/917/723 1673/1772/722 768/817/526 177/184/525 +f 165/172/339 870/919/725 1674/1773/726 769/818/529 +f 870/919/725 141/148/648 837/886/660 1674/1773/726 +f 1674/1773/726 837/886/660 139/146/650 868/917/723 +f 769/818/529 1674/1773/726 868/917/723 177/184/525 +f 140/147/638 826/875/641 1675/1774/727 869/918/724 +f 826/875/641 142/149/622 871/920/728 1675/1774/727 +f 1675/1774/727 871/920/728 211/218/729 872/921/730 +f 869/918/724 1675/1774/727 872/921/730 164/171/330 +f 212/219/731 874/923/732 1676/1775/733 873/922/734 +f 874/923/732 143/150/636 831/880/649 1676/1775/733 +f 1676/1775/733 831/880/649 141/148/648 870/919/725 +f 873/922/734 1676/1775/733 870/919/725 165/172/339 +f 142/149/622 818/867/625 1677/1776/735 871/920/728 +f 818/867/625 144/151/597 875/924/736 1677/1776/735 +f 1677/1776/735 875/924/736 213/220/737 876/925/738 +f 871/920/728 1677/1776/735 876/925/738 211/218/729 +f 214/221/739 878/927/740 1678/1777/741 877/926/742 +f 878/927/740 145/152/608 825/874/637 1678/1777/741 +f 1678/1777/741 825/874/637 143/150/636 874/923/732 +f 877/926/742 1678/1777/741 874/923/732 212/219/731 +f 144/151/597 805/854/600 1679/1778/743 875/924/736 +f 805/854/600 187/194/583 797/846/581 1679/1778/743 +f 1679/1778/743 797/846/581 166/173/314 879/928/744 +f 875/924/736 1679/1778/743 879/928/744 213/220/737 +f 167/174/318 802/851/592 1680/1779/745 880/929/746 +f 802/851/592 188/195/591 811/860/609 1680/1779/745 +f 1680/1779/745 811/860/609 145/152/608 878/927/740 +f 880/929/746 1680/1779/745 878/927/740 214/221/739 +f 81/88/310 881/930/747 1681/1780/748 662/711/311 +f 881/930/747 209/216/749 882/931/750 1681/1780/748 +f 1681/1780/748 882/931/750 213/220/737 879/928/744 +f 662/711/311 1681/1780/748 879/928/744 166/173/314 +f 214/221/739 883/932/751 1682/1781/752 880/929/746 +f 883/932/751 210/217/753 884/933/754 1682/1781/752 +f 1682/1781/752 884/933/754 82/89/320 665/714/319 +f 880/929/746 1682/1781/752 665/714/319 167/174/318 +f 209/216/749 885/934/755 1683/1782/756 882/931/750 +f 885/934/755 215/222/757 886/935/758 1683/1782/756 +f 1683/1782/756 886/935/758 211/218/729 876/925/738 +f 882/931/750 1683/1782/756 876/925/738 213/220/737 +f 212/219/731 887/936/759 1684/1783/760 877/926/742 +f 887/936/759 216/223/761 888/937/762 1684/1783/760 +f 1684/1783/760 888/937/762 210/217/753 883/932/751 +f 877/926/742 1684/1783/760 883/932/751 214/221/739 +f 79/86/322 667/716/325 1685/1784/763 889/938/764 +f 667/716/325 164/171/330 872/921/730 1685/1784/763 +f 1685/1784/763 872/921/730 211/218/729 886/935/758 +f 889/938/764 1685/1784/763 886/935/758 215/222/757 +f 212/219/731 873/922/734 1686/1785/765 887/936/759 +f 873/922/734 165/172/339 674/723/338 1686/1785/765 +f 1686/1785/765 674/723/338 80/87/337 890/939/766 +f 887/936/759 1686/1785/765 890/939/766 216/223/761 +f 131/138/573 816/865/617 1687/1786/767 891/940/768 +f 816/865/617 130/137/616 892/941/769 1687/1786/767 +f 1687/1786/767 892/941/769 72/72/770 893/942/771 +f 891/940/768 1687/1786/767 893/942/771 222/229/772 +f 72/72/770 892/941/769 1688/1787/773 894/943/774 +f 892/941/769 130/137/616 817/866/621 1688/1787/773 +f 1688/1787/773 817/866/621 132/139/579 895/944/775 +f 894/943/774 1688/1787/773 895/944/775 223/230/776 +f 133/140/565 794/843/574 1689/1788/777 896/945/778 +f 794/843/574 131/138/573 891/940/768 1689/1788/777 +f 1689/1788/777 891/940/768 222/229/772 897/946/779 +f 896/945/778 1689/1788/777 897/946/779 220/227/780 +f 223/230/776 895/944/775 1690/1789/781 898/947/782 +f 895/944/775 132/139/579 795/844/578 1690/1789/781 +f 1690/1789/781 795/844/578 134/141/571 899/948/783 +f 898/947/782 1690/1789/781 899/948/783 221/228/784 +f 135/142/555 790/839/566 1691/1790/785 900/949/786 +f 790/839/566 133/140/565 896/945/778 1691/1790/785 +f 1691/1790/785 896/945/778 220/227/780 901/950/787 +f 900/949/786 1691/1790/785 901/950/787 218/225/788 +f 221/228/784 899/948/783 1692/1791/789 902/951/790 +f 899/948/783 134/141/571 791/840/570 1692/1791/789 +f 1692/1791/789 791/840/570 136/143/563 903/952/791 +f 902/951/790 1692/1791/789 903/952/791 219/226/792 +f 137/144/559 785/834/556 1693/1792/793 904/953/794 +f 785/834/556 135/142/555 900/949/786 1693/1792/793 +f 1693/1792/793 900/949/786 218/225/788 905/954/795 +f 904/953/794 1693/1792/793 905/954/795 217/224/796 +f 219/226/792 903/952/791 1694/1793/797 906/955/798 +f 903/952/791 136/143/563 787/836/562 1694/1793/797 +f 1694/1793/797 787/836/562 137/144/559 904/953/794 +f 906/955/798 1694/1793/797 904/953/794 217/224/796 +f 217/224/796 905/954/795 1695/1794/799 907/956/800 +f 905/954/795 218/225/788 908/957/801 1695/1794/799 +f 1695/1794/799 908/957/801 229/236/802 909/958/803 +f 907/956/800 1695/1794/799 909/958/803 231/238/804 +f 230/237/805 911/960/806 1696/1795/807 910/959/808 +f 911/960/806 219/226/792 906/955/798 1696/1795/807 +f 1696/1795/807 906/955/798 217/224/796 907/956/800 +f 910/959/808 1696/1795/807 907/956/800 231/238/804 +f 218/225/788 901/950/787 1697/1796/809 908/957/801 +f 901/950/787 220/227/780 912/961/810 1697/1796/809 +f 1697/1796/809 912/961/810 227/234/811 913/962/812 +f 908/957/801 1697/1796/809 913/962/812 229/236/802 +f 228/235/813 915/964/814 1698/1797/815 914/963/816 +f 915/964/814 221/228/784 902/951/790 1698/1797/815 +f 1698/1797/815 902/951/790 219/226/792 911/960/806 +f 914/963/816 1698/1797/815 911/960/806 230/237/805 +f 220/227/780 897/946/779 1699/1798/817 912/961/810 +f 897/946/779 222/229/772 916/965/818 1699/1798/817 +f 1699/1798/817 916/965/818 225/232/819 917/966/820 +f 912/961/810 1699/1798/817 917/966/820 227/234/811 +f 226/233/821 919/968/822 1700/1799/823 918/967/824 +f 919/968/822 223/230/776 898/947/782 1700/1799/823 +f 1700/1799/823 898/947/782 221/228/784 915/964/814 +f 918/967/824 1700/1799/823 915/964/814 228/235/813 +f 222/229/772 893/942/771 1701/1800/825 916/965/818 +f 893/942/771 72/72/770 920/969/826 1701/1800/825 +f 1701/1800/825 920/969/826 224/231/827 921/970/828 +f 916/965/818 1701/1800/825 921/970/828 225/232/819 +f 224/231/827 920/969/826 1702/1801/829 922/971/830 +f 920/969/826 72/72/770 894/943/774 1702/1801/829 +f 1702/1801/829 894/943/774 223/230/776 919/968/822 +f 922/971/830 1702/1801/829 919/968/822 226/233/821 +f 224/231/827 923/972/831 1703/1802/832 921/970/828 +f 923/972/831 231/238/804 909/958/803 1703/1802/832 +f 1703/1802/832 909/958/803 229/236/802 924/973/833 +f 921/970/828 1703/1802/832 924/973/833 225/232/819 +f 230/237/805 910/959/808 1704/1803/834 925/974/835 +f 910/959/808 231/238/804 923/972/831 1704/1803/834 +f 1704/1803/834 923/972/831 224/231/827 922/971/830 +f 925/974/835 1704/1803/834 922/971/830 226/233/821 +f 225/232/819 924/973/833 1705/1804/836 917/966/820 +f 229/236/802 913/962/812 1705/1804/836 924/973/833 +f 227/234/811 917/966/820 1705/1804/836 913/962/812 +f 228/235/813 914/963/816 1706/1805/837 918/967/824 +f 230/237/805 925/974/835 1706/1805/837 914/963/816 +f 226/233/821 918/967/824 1706/1805/837 925/974/835 +f 183/190/545 782/831/552 1707/1806/838 926/975/839 +f 782/831/552 181/188/523 927/976/840 1707/1806/838 +f 1707/1806/838 927/976/840 234/241/841 928/977/842 +f 926/975/839 1707/1806/838 928/977/842 232/239/843 +f 235/242/844 930/979/845 1708/1807/846 929/978/847 +f 930/979/845 182/189/530 783/832/553 1708/1807/846 +f 1708/1807/846 783/832/553 184/191/549 931/980/848 +f 929/978/847 1708/1807/846 931/980/848 233/240/849 +f 112/119/535 776/825/541 1709/1808/850 932/981/851 +f 776/825/541 183/190/545 926/975/839 1709/1808/850 +f 1709/1808/850 926/975/839 232/239/843 933/982/852 +f 932/981/851 1709/1808/850 933/982/852 254/261/853 +f 233/240/849 931/980/848 1710/1809/854 934/983/855 +f 931/980/848 184/191/549 780/829/548 1710/1809/854 +f 1710/1809/854 780/829/548 113/120/539 935/984/856 +f 934/983/855 1710/1809/854 935/984/856 255/262/857 +f 110/117/445 772/821/533 1711/1810/858 936/985/859 +f 772/821/533 112/119/535 932/981/851 1711/1810/858 +f 1711/1810/858 932/981/851 254/261/853 937/986/860 +f 936/985/859 1711/1810/858 937/986/860 256/263/861 +f 255/262/857 935/984/856 1712/1811/862 938/987/863 +f 935/984/856 113/120/539 775/824/538 1712/1811/862 +f 1712/1811/862 775/824/538 111/118/455 939/988/864 +f 938/987/863 1712/1811/862 939/988/864 257/264/865 +f 181/188/523 766/815/521 1713/1812/866 927/976/840 +f 766/815/521 114/121/513 940/989/867 1713/1812/866 +f 1713/1812/866 940/989/867 252/259/868 941/990/869 +f 927/976/840 1713/1812/866 941/990/869 234/241/841 +f 253/260/870 943/992/871 1714/1813/872 942/991/873 +f 943/992/871 115/122/519 771/820/531 1714/1813/872 +f 1714/1813/872 771/820/531 182/189/530 930/979/845 +f 942/991/873 1714/1813/872 930/979/845 235/242/844 +f 114/121/513 762/811/516 1715/1814/874 940/989/867 +f 762/811/516 116/123/505 944/993/875 1715/1814/874 +f 1715/1814/874 944/993/875 250/257/876 945/994/877 +f 940/989/867 1715/1814/874 945/994/877 252/259/868 +f 251/258/878 947/996/879 1716/1815/880 946/995/881 +f 947/996/879 117/124/511 765/814/520 1716/1815/880 +f 1716/1815/880 765/814/520 115/122/519 943/992/871 +f 946/995/881 1716/1815/880 943/992/871 253/260/870 +f 116/123/505 758/807/508 1717/1816/882 944/993/875 +f 758/807/508 118/125/497 948/997/883 1717/1816/882 +f 1717/1816/882 948/997/883 248/255/884 949/998/885 +f 944/993/875 1717/1816/882 949/998/885 250/257/876 +f 249/256/886 951/1000/887 1718/1817/888 950/999/889 +f 951/1000/887 119/126/503 761/810/512 1718/1817/888 +f 1718/1817/888 761/810/512 117/124/511 947/996/879 +f 950/999/889 1718/1817/888 947/996/879 251/258/878 +f 118/125/497 754/803/500 1719/1818/890 948/997/883 +f 754/803/500 120/127/489 952/1001/891 1719/1818/890 +f 1719/1818/890 952/1001/891 246/253/892 953/1002/893 +f 948/997/883 1719/1818/890 953/1002/893 248/255/884 +f 247/254/894 955/1004/895 1720/1819/896 954/1003/897 +f 955/1004/895 121/128/495 757/806/504 1720/1819/896 +f 1720/1819/896 757/806/504 119/126/503 951/1000/887 +f 954/1003/897 1720/1819/896 951/1000/887 249/256/886 +f 120/127/489 750/799/492 1721/1820/898 952/1001/891 +f 750/799/492 122/129/481 956/1005/899 1721/1820/898 +f 1721/1820/898 956/1005/899 244/251/900 957/1006/901 +f 952/1001/891 1721/1820/898 957/1006/901 246/253/892 +f 245/252/902 959/1008/903 1722/1821/904 958/1007/905 +f 959/1008/903 123/130/487 753/802/496 1722/1821/904 +f 1722/1821/904 753/802/496 121/128/495 955/1004/895 +f 958/1007/905 1722/1821/904 955/1004/895 247/254/894 +f 122/129/481 746/795/484 1723/1822/906 956/1005/899 +f 746/795/484 124/131/473 960/1009/907 1723/1822/906 +f 1723/1822/906 960/1009/907 242/249/908 961/1010/909 +f 956/1005/899 1723/1822/906 961/1010/909 244/251/900 +f 243/250/910 963/1012/911 1724/1823/912 962/1011/913 +f 963/1012/911 125/132/479 749/798/488 1724/1823/912 +f 1724/1823/912 749/798/488 123/130/487 959/1008/903 +f 962/1011/913 1724/1823/912 959/1008/903 245/252/902 +f 124/131/473 742/791/476 1725/1824/914 960/1009/907 +f 742/791/476 126/133/465 964/1013/915 1725/1824/914 +f 1725/1824/914 964/1013/915 240/247/916 965/1014/917 +f 960/1009/907 1725/1824/914 965/1014/917 242/249/908 +f 241/248/918 967/1016/919 1726/1825/920 966/1015/921 +f 967/1016/919 127/134/471 745/794/480 1726/1825/920 +f 1726/1825/920 745/794/480 125/132/479 963/1012/911 +f 966/1015/921 1726/1825/920 963/1012/911 243/250/910 +f 126/133/465 738/787/468 1727/1826/922 964/1013/915 +f 738/787/468 179/186/459 968/1017/923 1727/1826/922 +f 1727/1826/922 968/1017/923 236/243/924 969/1018/925 +f 964/1013/915 1727/1826/922 969/1018/925 240/247/916 +f 237/244/926 971/1020/927 1728/1827/928 970/1019/929 +f 971/1020/927 180/187/463 741/790/472 1728/1827/928 +f 1728/1827/928 741/790/472 127/134/471 967/1016/919 +f 970/1019/929 1728/1827/928 967/1016/919 241/248/918 +f 179/186/459 734/783/457 1729/1828/930 968/1017/923 +f 734/783/457 128/135/449 972/1021/931 1729/1828/930 +f 1729/1828/930 972/1021/931 238/245/932 973/1022/933 +f 968/1017/923 1729/1828/930 973/1022/933 236/243/924 +f 239/246/934 975/1024/935 1730/1829/936 974/1023/937 +f 975/1024/935 129/136/453 737/786/464 1730/1829/936 +f 1730/1829/936 737/786/464 180/187/463 971/1020/927 +f 974/1023/937 1730/1829/936 971/1020/927 237/244/926 +f 128/135/449 729/778/446 1731/1830/938 972/1021/931 +f 729/778/446 110/117/445 936/985/859 1731/1830/938 +f 1731/1830/938 936/985/859 256/263/861 976/1025/939 +f 972/1021/931 1731/1830/938 976/1025/939 238/245/932 +f 257/264/865 939/988/864 1732/1831/940 977/1026/941 +f 939/988/864 111/118/455 732/781/454 1732/1831/940 +f 1732/1831/940 732/781/454 129/136/453 975/1024/935 +f 977/1026/941 1732/1831/940 975/1024/935 239/246/934 +f 238/245/932 976/1025/939 1733/1832/942 978/1027/943 +f 976/1025/939 256/263/861 979/1028/944 1733/1832/942 +f 1733/1832/942 979/1028/944 258/265/945 980/1029/946 +f 978/1027/943 1733/1832/942 980/1029/946 276/283/947 +f 259/266/948 982/1031/949 1734/1833/950 981/1030/951 +f 982/1031/949 257/264/865 977/1026/941 1734/1833/950 +f 1734/1833/950 977/1026/941 239/246/934 983/1032/952 +f 981/1030/951 1734/1833/950 983/1032/952 277/284/953 +f 236/243/924 973/1022/933 1735/1834/954 984/1033/955 +f 973/1022/933 238/245/932 978/1027/943 1735/1834/954 +f 1735/1834/954 978/1027/943 276/283/947 985/1034/956 +f 984/1033/955 1735/1834/954 985/1034/956 278/285/957 +f 277/284/953 983/1032/952 1736/1835/958 986/1035/959 +f 983/1032/952 239/246/934 974/1023/937 1736/1835/958 +f 1736/1835/958 974/1023/937 237/244/926 987/1036/960 +f 986/1035/959 1736/1835/958 987/1036/960 279/286/961 +f 240/247/916 969/1018/925 1737/1836/962 988/1037/963 +f 969/1018/925 236/243/924 984/1033/955 1737/1836/962 +f 1737/1836/962 984/1033/955 278/285/957 989/1038/964 +f 988/1037/963 1737/1836/962 989/1038/964 274/281/965 +f 279/286/961 987/1036/960 1738/1837/966 990/1039/967 +f 987/1036/960 237/244/926 970/1019/929 1738/1837/966 +f 1738/1837/966 970/1019/929 241/248/918 991/1040/968 +f 990/1039/967 1738/1837/966 991/1040/968 275/282/969 +f 242/249/908 965/1014/917 1739/1838/970 992/1041/971 +f 965/1014/917 240/247/916 988/1037/963 1739/1838/970 +f 1739/1838/970 988/1037/963 274/281/965 993/1042/972 +f 992/1041/971 1739/1838/970 993/1042/972 272/279/973 +f 275/282/969 991/1040/968 1740/1839/974 994/1043/975 +f 991/1040/968 241/248/918 966/1015/921 1740/1839/974 +f 1740/1839/974 966/1015/921 243/250/910 995/1044/976 +f 994/1043/975 1740/1839/974 995/1044/976 273/280/977 +f 244/251/900 961/1010/909 1741/1840/978 996/1045/979 +f 961/1010/909 242/249/908 992/1041/971 1741/1840/978 +f 1741/1840/978 992/1041/971 272/279/973 997/1046/980 +f 996/1045/979 1741/1840/978 997/1046/980 270/277/981 +f 273/280/977 995/1044/976 1742/1841/982 998/1047/983 +f 995/1044/976 243/250/910 962/1011/913 1742/1841/982 +f 1742/1841/982 962/1011/913 245/252/902 999/1048/984 +f 998/1047/983 1742/1841/982 999/1048/984 271/278/985 +f 246/253/892 957/1006/901 1743/1842/986 1000/1049/987 +f 957/1006/901 244/251/900 996/1045/979 1743/1842/986 +f 1743/1842/986 996/1045/979 270/277/981 1001/1050/988 +f 1000/1049/987 1743/1842/986 1001/1050/988 268/275/989 +f 271/278/985 999/1048/984 1744/1843/990 1002/1051/991 +f 999/1048/984 245/252/902 958/1007/905 1744/1843/990 +f 1744/1843/990 958/1007/905 247/254/894 1003/1052/992 +f 1002/1051/991 1744/1843/990 1003/1052/992 269/276/993 +f 248/255/884 953/1002/893 1745/1844/994 1004/1053/995 +f 953/1002/893 246/253/892 1000/1049/987 1745/1844/994 +f 1745/1844/994 1000/1049/987 268/275/989 1005/1054/996 +f 1004/1053/995 1745/1844/994 1005/1054/996 266/273/997 +f 269/276/993 1003/1052/992 1746/1845/998 1006/1055/999 +f 1003/1052/992 247/254/894 954/1003/897 1746/1845/998 +f 1746/1845/998 954/1003/897 249/256/886 1007/1056/1000 +f 1006/1055/999 1746/1845/998 1007/1056/1000 267/274/1001 +f 250/257/876 949/998/885 1747/1846/1002 1008/1057/1003 +f 949/998/885 248/255/884 1004/1053/995 1747/1846/1002 +f 1747/1846/1002 1004/1053/995 266/273/997 1009/1058/1004 +f 1008/1057/1003 1747/1846/1002 1009/1058/1004 264/271/1005 +f 267/274/1001 1007/1056/1000 1748/1847/1006 1010/1059/1007 +f 1007/1056/1000 249/256/886 950/999/889 1748/1847/1006 +f 1748/1847/1006 950/999/889 251/258/878 1011/1060/1008 +f 1010/1059/1007 1748/1847/1006 1011/1060/1008 265/272/1009 +f 252/259/868 945/994/877 1749/1848/1010 1012/1061/1011 +f 945/994/877 250/257/876 1008/1057/1003 1749/1848/1010 +f 1749/1848/1010 1008/1057/1003 264/271/1005 1013/1062/1012 +f 1012/1061/1011 1749/1848/1010 1013/1062/1012 262/269/1013 +f 265/272/1009 1011/1060/1008 1750/1849/1014 1014/1063/1015 +f 1011/1060/1008 251/258/878 946/995/881 1750/1849/1014 +f 1750/1849/1014 946/995/881 253/260/870 1015/1064/1016 +f 1014/1063/1015 1750/1849/1014 1015/1064/1016 263/270/1017 +f 234/241/841 941/990/869 1751/1850/1018 1016/1065/1019 +f 941/990/869 252/259/868 1012/1061/1011 1751/1850/1018 +f 1751/1850/1018 1012/1061/1011 262/269/1013 1017/1066/1020 +f 1016/1065/1019 1751/1850/1018 1017/1066/1020 280/287/1021 +f 263/270/1017 1015/1064/1016 1752/1851/1022 1018/1067/1023 +f 1015/1064/1016 253/260/870 942/991/873 1752/1851/1022 +f 1752/1851/1022 942/991/873 235/242/844 1019/1068/1024 +f 1018/1067/1023 1752/1851/1022 1019/1068/1024 281/288/1025 +f 256/263/861 937/986/860 1753/1852/1026 979/1028/944 +f 937/986/860 254/261/853 1020/1069/1027 1753/1852/1026 +f 1753/1852/1026 1020/1069/1027 260/267/1028 1021/1070/1029 +f 979/1028/944 1753/1852/1026 1021/1070/1029 258/265/945 +f 261/268/1030 1023/1072/1031 1754/1853/1032 1022/1071/1033 +f 1023/1072/1031 255/262/857 938/987/863 1754/1853/1032 +f 1754/1853/1032 938/987/863 257/264/865 982/1031/949 +f 1022/1071/1033 1754/1853/1032 982/1031/949 259/266/948 +f 254/261/853 933/982/852 1755/1854/1034 1020/1069/1027 +f 933/982/852 232/239/843 1024/1073/1035 1755/1854/1034 +f 1755/1854/1034 1024/1073/1035 282/289/1036 1025/1074/1037 +f 1020/1069/1027 1755/1854/1034 1025/1074/1037 260/267/1028 +f 283/290/1038 1027/1076/1039 1756/1855/1040 1026/1075/1041 +f 1027/1076/1039 233/240/849 934/983/855 1756/1855/1040 +f 1756/1855/1040 934/983/855 255/262/857 1023/1072/1031 +f 1026/1075/1041 1756/1855/1040 1023/1072/1031 261/268/1030 +f 232/239/843 928/977/842 1757/1856/1042 1024/1073/1035 +f 928/977/842 234/241/841 1016/1065/1019 1757/1856/1042 +f 1757/1856/1042 1016/1065/1019 280/287/1021 1028/1077/1043 +f 1024/1073/1035 1757/1856/1042 1028/1077/1043 282/289/1036 +f 281/288/1025 1019/1068/1024 1758/1857/1044 1029/1078/1045 +f 1019/1068/1024 235/242/844 929/978/847 1758/1857/1044 +f 1758/1857/1044 929/978/847 233/240/849 1027/1076/1039 +f 1029/1078/1045 1758/1857/1044 1027/1076/1039 283/290/1038 +f 67/67/438 723/772/436 1759/1858/1046 1030/1079/1047 +f 723/772/436 108/115/426 1031/1080/1048 1759/1858/1046 +f 1759/1858/1046 1031/1080/1048 284/291/1049 1032/1081/1050 +f 1030/1079/1047 1759/1858/1046 1032/1081/1050 73/73/1051 +f 285/293/1052 1034/1085/1053 1760/1859/1054 1033/1083/1055 +f 1034/1085/1053 109/116/434 727/776/444 1760/1859/1054 +f 1760/1859/1054 727/776/444 67/67/438 1030/1079/1047 +f 1033/1083/1055 1760/1859/1054 1030/1079/1047 73/73/1051 +f 108/115/426 717/766/424 1761/1860/1056 1031/1080/1048 +f 717/766/424 106/113/414 1035/1086/1057 1761/1860/1056 +f 1761/1860/1056 1035/1086/1057 286/295/1058 1036/1087/1059 +f 1031/1080/1048 1761/1860/1056 1036/1087/1059 284/291/1049 +f 287/297/1060 1038/1091/1061 1762/1861/1062 1037/1089/1063 +f 1038/1091/1061 107/114/422 722/771/435 1762/1861/1062 +f 1762/1861/1062 722/771/435 109/116/434 1034/1085/1053 +f 1037/1089/1063 1762/1861/1062 1034/1085/1053 285/293/1052 +f 106/113/414 711/760/412 1763/1862/1064 1035/1086/1057 +f 711/760/412 104/111/402 1039/1092/1065 1763/1862/1064 +f 1763/1862/1064 1039/1092/1065 288/299/1066 1040/1093/1067 +f 1035/1086/1057 1763/1862/1064 1040/1093/1067 286/295/1058 +f 289/301/1068 1042/1097/1069 1764/1863/1070 1041/1095/1071 +f 1042/1097/1069 105/112/410 716/765/423 1764/1863/1070 +f 1764/1863/1070 716/765/423 107/114/422 1038/1091/1061 +f 1041/1095/1071 1764/1863/1070 1038/1091/1061 287/297/1060 +f 104/111/402 705/754/400 1765/1864/1072 1039/1092/1065 +f 705/754/400 102/109/390 1043/1098/1073 1765/1864/1072 +f 1765/1864/1072 1043/1098/1073 290/303/1074 1044/1099/1075 +f 1039/1092/1065 1765/1864/1072 1044/1099/1075 288/299/1066 +f 291/305/1076 1046/1103/1077 1766/1865/1078 1045/1101/1079 +f 1046/1103/1077 103/110/398 710/759/411 1766/1865/1078 +f 1766/1865/1078 710/759/411 105/112/410 1042/1097/1069 +f 1045/1101/1079 1766/1865/1078 1042/1097/1069 289/301/1068 +f 102/109/390 699/748/388 1767/1866/1080 1043/1098/1073 +f 699/748/388 100/107/378 1047/1104/1081 1767/1866/1080 +f 1767/1866/1080 1047/1104/1081 292/307/1082 1048/1105/1083 +f 1043/1098/1073 1767/1866/1080 1048/1105/1083 290/303/1074 +f 293/309/1084 1050/1109/1085 1768/1867/1086 1049/1107/1087 +f 1050/1109/1085 101/108/386 704/753/399 1768/1867/1086 +f 1768/1867/1086 704/753/399 103/110/398 1046/1103/1077 +f 1049/1107/1087 1768/1867/1086 1046/1103/1077 291/305/1076 +f 100/107/378 693/742/376 1769/1868/1088 1047/1104/1081 +f 693/742/376 98/105/366 1051/1110/1089 1769/1868/1088 +f 1769/1868/1088 1051/1110/1089 294/311/1090 1052/1111/1091 +f 1047/1104/1081 1769/1868/1088 1052/1111/1091 292/307/1082 +f 295/312/1092 1054/1115/1093 1770/1869/1094 1053/1113/1095 +f 1054/1115/1093 99/106/374 698/747/387 1770/1869/1094 +f 1770/1869/1094 698/747/387 101/108/386 1050/1109/1085 +f 1053/1113/1095 1770/1869/1094 1050/1109/1085 293/309/1084 +f 98/105/366 687/736/364 1771/1870/1096 1051/1110/1089 +f 687/736/364 96/103/354 1055/1116/1097 1771/1870/1096 +f 1771/1870/1096 1055/1116/1097 296/313/1098 1056/1117/1099 +f 1051/1110/1089 1771/1870/1096 1056/1117/1099 294/311/1090 +f 297/314/1100 1058/1119/1101 1772/1871/1102 1057/1118/1103 +f 1058/1119/1101 97/104/362 692/741/375 1772/1871/1102 +f 1772/1871/1102 692/741/375 99/106/374 1054/1115/1093 +f 1057/1118/1103 1772/1871/1102 1054/1115/1093 295/312/1092 +f 96/103/354 681/730/352 1773/1872/1104 1055/1116/1097 +f 681/730/352 94/101/342 1059/1120/1105 1773/1872/1104 +f 1773/1872/1104 1059/1120/1105 298/315/1106 1060/1121/1107 +f 1055/1116/1097 1773/1872/1104 1060/1121/1107 296/313/1098 +f 299/316/1108 1062/1123/1109 1774/1873/1110 1061/1122/1111 +f 1062/1123/1109 95/102/350 686/735/363 1774/1873/1110 +f 1774/1873/1110 686/735/363 97/104/362 1058/1119/1101 +f 1061/1122/1111 1774/1873/1110 1058/1119/1101 297/314/1100 +f 94/101/342 675/724/340 1775/1874/1112 1059/1120/1105 +f 675/724/340 92/99/326 1063/1124/1113 1775/1874/1112 +f 1775/1874/1112 1063/1124/1113 300/317/1114 1064/1125/1115 +f 1059/1120/1105 1775/1874/1112 1064/1125/1115 298/315/1106 +f 301/318/1116 1066/1127/1117 1776/1875/1118 1065/1126/1119 +f 1066/1127/1117 93/100/335 680/729/351 1776/1875/1118 +f 1776/1875/1118 680/729/351 95/102/350 1062/1123/1109 +f 1065/1126/1119 1776/1875/1118 1062/1123/1109 299/316/1108 +f 308/330/1120 1068/1129/1121 1777/1876/1122 1067/1128/1123 +f 1068/1129/1121 309/332/1124 1069/1131/1125 1777/1876/1122 +f 1777/1876/1122 1069/1131/1125 328/358/1126 1070/1132/1127 +f 1067/1128/1123 1777/1876/1122 1070/1132/1127 338/368/1128 +f 329/359/1129 1072/1134/1130 1778/1877/1131 1071/1133/1132 +f 1072/1134/1130 309/333/1124 1068/1130/1121 1778/1877/1131 +f 1778/1877/1131 1068/1130/1121 308/331/1120 1073/1135/1133 +f 1071/1133/1132 1778/1877/1131 1073/1135/1133 339/369/1134 +f 307/328/1135 1075/1137/1136 1779/1878/1137 1074/1136/1138 +f 1075/1137/1136 308/330/1120 1067/1128/1123 1779/1878/1137 +f 1779/1878/1137 1067/1128/1123 338/368/1128 1076/1139/1139 +f 1074/1136/1138 1779/1878/1137 1076/1139/1139 336/366/1140 +f 339/369/1134 1073/1135/1133 1780/1879/1141 1077/1140/1142 +f 1073/1135/1133 308/331/1120 1075/1138/1136 1780/1879/1141 +f 1780/1879/1141 1075/1138/1136 307/329/1135 1078/1141/1143 +f 1077/1140/1142 1780/1879/1141 1078/1141/1143 337/367/1144 +f 306/327/1145 1080/1143/1146 1781/1880/1147 1079/1142/1148 +f 1080/1143/1146 307/328/1135 1074/1136/1138 1781/1880/1147 +f 1781/1880/1147 1074/1136/1138 336/366/1140 1081/1145/1149 +f 1079/1142/1148 1781/1880/1147 1081/1145/1149 340/370/1150 +f 337/367/1144 1078/1141/1143 1782/1881/1151 1082/1146/1152 +f 1078/1141/1143 307/329/1135 1080/1144/1146 1782/1881/1151 +f 1782/1881/1151 1080/1144/1146 306/327/1145 1083/1147/1153 +f 1082/1146/1152 1782/1881/1151 1083/1147/1153 341/371/1154 +f 89/96/259 636/685/262 1783/1882/1155 1084/1148/1156 +f 636/685/262 91/98/267 1085/1149/1157 1783/1882/1155 +f 1783/1882/1155 1085/1149/1157 306/327/1145 1079/1142/1148 +f 1084/1148/1156 1783/1882/1155 1079/1142/1148 340/370/1150 +f 306/327/1145 1085/1149/1157 1784/1883/1158 1083/1147/1153 +f 1085/1149/1157 91/98/267 642/691/273 1784/1883/1158 +f 1784/1883/1158 642/691/273 90/97/272 1086/1150/1159 +f 1083/1147/1153 1784/1883/1158 1086/1150/1159 341/371/1154 +f 87/94/274 643/692/277 1785/1884/1160 1087/1151/1161 +f 643/692/277 89/96/259 1084/1148/1156 1785/1884/1160 +f 1785/1884/1160 1084/1148/1156 340/370/1150 1088/1152/1162 +f 1087/1151/1161 1785/1884/1160 1088/1152/1162 334/364/1163 +f 341/371/1154 1086/1150/1159 1786/1885/1164 1089/1153/1165 +f 1086/1150/1159 90/97/272 648/697/285 1786/1885/1164 +f 1786/1885/1164 648/697/285 88/95/284 1090/1154/1166 +f 1089/1153/1165 1786/1885/1164 1090/1154/1166 335/365/1167 +f 85/92/286 649/698/289 1787/1886/1168 1091/1155/1169 +f 649/698/289 87/94/274 1087/1151/1161 1787/1886/1168 +f 1787/1886/1168 1087/1151/1161 334/364/1163 1092/1156/1170 +f 1091/1155/1169 1787/1886/1168 1092/1156/1170 330/360/1171 +f 335/365/1167 1090/1154/1166 1788/1887/1172 1093/1157/1173 +f 1090/1154/1166 88/95/284 654/703/297 1788/1887/1172 +f 1788/1887/1172 654/703/297 86/93/296 1094/1158/1174 +f 1093/1157/1173 1788/1887/1172 1094/1158/1174 331/361/1175 +f 83/90/298 655/704/301 1789/1888/1176 1095/1159/1177 +f 655/704/301 85/92/286 1091/1155/1169 1789/1888/1176 +f 1789/1888/1176 1091/1155/1169 330/360/1171 1096/1160/1178 +f 1095/1159/1177 1789/1888/1176 1096/1160/1178 332/362/1179 +f 331/361/1175 1094/1158/1174 1790/1889/1180 1097/1161/1181 +f 1094/1158/1174 86/93/296 660/709/309 1790/1889/1180 +f 1790/1889/1180 660/709/309 84/91/308 1098/1162/1182 +f 1097/1161/1181 1790/1889/1180 1098/1162/1182 333/363/1183 +f 330/360/1171 1099/1163/1184 1791/1890/1185 1096/1160/1178 +f 1099/1163/1184 336/366/1140 1076/1139/1139 1791/1890/1185 +f 1791/1890/1185 1076/1139/1139 338/368/1128 1100/1164/1186 +f 1096/1160/1178 1791/1890/1185 1100/1164/1186 332/362/1179 +f 339/369/1134 1077/1140/1142 1792/1891/1187 1101/1165/1188 +f 1077/1140/1142 337/367/1144 1102/1166/1189 1792/1891/1187 +f 1792/1891/1187 1102/1166/1189 331/361/1175 1097/1161/1181 +f 1101/1165/1188 1792/1891/1187 1097/1161/1181 333/363/1183 +f 330/360/1171 1092/1156/1170 1793/1892/1190 1099/1163/1184 +f 1092/1156/1170 334/364/1163 1088/1152/1162 1793/1892/1190 +f 1793/1892/1190 1088/1152/1162 340/370/1150 1081/1145/1149 +f 1099/1163/1184 1793/1892/1190 1081/1145/1149 336/366/1140 +f 341/371/1154 1089/1153/1165 1794/1893/1191 1082/1146/1152 +f 1089/1153/1165 335/365/1167 1093/1157/1173 1794/1893/1191 +f 1794/1893/1191 1093/1157/1173 331/361/1175 1102/1166/1189 +f 1082/1146/1152 1794/1893/1191 1102/1166/1189 337/367/1144 +f 326/356/1192 1104/1168/1193 1795/1894/1194 1103/1167/1195 +f 1104/1168/1193 332/362/1179 1100/1164/1186 1795/1894/1194 +f 1795/1894/1194 1100/1164/1186 338/368/1128 1070/1132/1127 +f 1103/1167/1195 1795/1894/1194 1070/1132/1127 328/358/1126 +f 339/369/1134 1101/1165/1188 1796/1895/1196 1071/1133/1132 +f 1101/1165/1188 333/363/1183 1105/1169/1197 1796/1895/1196 +f 1796/1895/1196 1105/1169/1197 327/357/1198 1106/1170/1199 +f 1071/1133/1132 1796/1895/1196 1106/1170/1199 329/359/1129 +f 81/88/310 661/710/313 1797/1896/1200 1107/1171/1201 +f 661/710/313 83/90/298 1095/1159/1177 1797/1896/1200 +f 1797/1896/1200 1095/1159/1177 332/362/1179 1104/1168/1193 +f 1107/1171/1201 1797/1896/1200 1104/1168/1193 326/356/1192 +f 333/363/1183 1098/1162/1182 1798/1897/1202 1105/1169/1197 +f 1098/1162/1182 84/91/308 666/715/321 1798/1897/1202 +f 1798/1897/1202 666/715/321 82/89/320 1108/1172/1203 +f 1105/1169/1197 1798/1897/1202 1108/1172/1203 327/357/1198 +f 209/216/749 1109/1173/1204 1799/1898/1205 885/934/755 +f 1109/1173/1204 342/372/1206 1110/1174/1207 1799/1898/1205 +f 1799/1898/1205 1110/1174/1207 344/374/1208 1111/1175/1209 +f 885/934/755 1799/1898/1205 1111/1175/1209 215/222/757 +f 345/375/1210 1113/1177/1211 1800/1899/1212 1112/1176/1213 +f 1113/1177/1211 343/373/1214 1114/1178/1215 1800/1899/1212 +f 1800/1899/1212 1114/1178/1215 210/217/753 888/937/762 +f 1112/1176/1213 1800/1899/1212 888/937/762 216/223/761 +f 81/88/310 1107/1171/1201 1801/1900/1216 881/930/747 +f 1107/1171/1201 326/356/1192 1115/1179/1217 1801/1900/1216 +f 1801/1900/1216 1115/1179/1217 342/372/1206 1109/1173/1204 +f 881/930/747 1801/1900/1216 1109/1173/1204 209/216/749 +f 343/373/1214 1116/1180/1218 1802/1901/1219 1114/1178/1215 +f 1116/1180/1218 327/357/1198 1108/1172/1203 1802/1901/1219 +f 1802/1901/1219 1108/1172/1203 82/89/320 884/933/754 +f 1114/1178/1215 1802/1901/1219 884/933/754 210/217/753 +f 79/86/322 889/938/764 1803/1902/1220 1117/1181/1221 +f 889/938/764 215/222/757 1111/1175/1209 1803/1902/1220 +f 1803/1902/1220 1111/1175/1209 344/374/1208 1118/1182/1222 +f 1117/1181/1221 1803/1902/1220 1118/1182/1222 346/376/1223 +f 345/375/1210 1112/1176/1213 1804/1903/1224 1119/1183/1225 +f 1112/1176/1213 216/223/761 890/939/766 1804/1903/1224 +f 1804/1903/1224 890/939/766 80/87/337 1120/1184/1226 +f 1119/1183/1225 1804/1903/1224 1120/1184/1226 347/377/1227 +f 79/86/322 1117/1181/1221 1805/1904/1228 668/717/323 +f 1117/1181/1221 346/376/1223 1121/1185/1229 1805/1904/1228 +f 1805/1904/1228 1121/1185/1229 300/317/1114 1063/1124/1113 +f 668/717/323 1805/1904/1228 1063/1124/1113 92/99/326 +f 301/318/1116 1122/1186/1230 1806/1905/1231 1066/1127/1117 +f 1122/1186/1230 347/377/1227 1120/1184/1226 1806/1905/1231 +f 1806/1905/1231 1120/1184/1226 80/87/337 673/722/336 +f 1066/1127/1117 1806/1905/1231 673/722/336 93/100/335 +f 77/82/1232 1124/1189/1233 1807/1906/1234 1123/1187/1235 +f 1124/1189/1233 324/354/1236 1125/1190/1237 1807/1906/1234 +f 1807/1906/1234 1125/1190/1237 352/382/1238 1126/1191/1239 +f 1123/1187/1235 1807/1906/1234 1126/1191/1239 304/323/1240 +f 353/383/1241 1128/1193/1242 1808/1907/1243 1127/1192/1244 +f 1128/1193/1242 325/355/1245 1129/1194/1246 1808/1907/1243 +f 1808/1907/1243 1129/1194/1246 77/83/1232 1123/1188/1235 +f 1127/1192/1244 1808/1907/1243 1123/1188/1235 304/324/1240 +f 304/323/1240 1126/1191/1239 1809/1908/1247 1130/1195/1248 +f 1126/1191/1239 352/382/1238 1131/1197/1249 1809/1908/1247 +f 1809/1908/1247 1131/1197/1249 350/380/1250 1132/1198/1251 +f 1130/1195/1248 1809/1908/1247 1132/1198/1251 78/84/1252 +f 351/381/1253 1134/1200/1254 1810/1909/1255 1133/1199/1256 +f 1134/1200/1254 353/383/1241 1127/1192/1244 1810/1909/1255 +f 1810/1909/1255 1127/1192/1244 304/324/1240 1130/1196/1248 +f 1133/1199/1256 1810/1909/1255 1130/1196/1248 78/85/1252 +f 78/84/1252 1132/1198/1251 1811/1910/1257 1135/1201/1258 +f 1132/1198/1251 350/380/1250 1136/1203/1259 1811/1910/1257 +f 1811/1910/1257 1136/1203/1259 348/378/1260 1137/1204/1261 +f 1135/1201/1258 1811/1910/1257 1137/1204/1261 305/325/1262 +f 349/379/1263 1139/1206/1264 1812/1911/1265 1138/1205/1266 +f 1139/1206/1264 351/381/1253 1133/1199/1256 1812/1911/1265 +f 1812/1911/1265 1133/1199/1256 78/85/1252 1135/1202/1258 +f 1138/1205/1266 1812/1911/1265 1135/1202/1258 305/326/1262 +f 305/325/1262 1137/1204/1261 1813/1912/1267 1140/1207/1268 +f 1137/1204/1261 348/378/1260 1141/1209/1269 1813/1912/1267 +f 1813/1912/1267 1141/1209/1269 328/358/1126 1069/1131/1125 +f 1140/1207/1268 1813/1912/1267 1069/1131/1125 309/332/1124 +f 329/359/1129 1142/1210/1270 1814/1913/1271 1072/1134/1130 +f 1142/1210/1270 349/379/1263 1138/1205/1266 1814/1913/1271 +f 1814/1913/1271 1138/1205/1266 305/326/1262 1140/1208/1268 +f 1072/1134/1130 1814/1913/1271 1140/1208/1268 309/333/1124 +f 326/356/1192 1103/1167/1195 1815/1914/1272 1115/1179/1217 +f 1103/1167/1195 328/358/1126 1141/1209/1269 1815/1914/1272 +f 1815/1914/1272 1141/1209/1269 348/378/1260 1143/1211/1273 +f 1115/1179/1217 1815/1914/1272 1143/1211/1273 342/372/1206 +f 349/379/1263 1142/1210/1270 1816/1915/1274 1144/1212/1275 +f 1142/1210/1270 329/359/1129 1106/1170/1199 1816/1915/1274 +f 1816/1915/1274 1106/1170/1199 327/357/1198 1116/1180/1218 +f 1144/1212/1275 1816/1915/1274 1116/1180/1218 343/373/1214 +f 296/313/1098 1060/1121/1107 1817/1916/1276 1145/1213/1277 +f 1060/1121/1107 298/315/1106 1146/1214/1278 1817/1916/1276 +f 1817/1916/1276 1146/1214/1278 318/344/1279 1147/1215/1280 +f 1145/1213/1277 1817/1916/1276 1147/1215/1280 310/334/1281 +f 319/345/1282 1149/1217/1283 1818/1917/1284 1148/1216/1285 +f 1149/1217/1283 299/316/1108 1061/1122/1111 1818/1917/1284 +f 1818/1917/1284 1061/1122/1111 297/314/1100 1150/1218/1286 +f 1148/1216/1285 1818/1917/1284 1150/1218/1286 311/335/1287 +f 76/80/1288 1152/1221/1289 1819/1918/1290 1151/1219/1291 +f 1152/1221/1289 316/342/1292 1153/1222/1293 1819/1918/1290 +f 1819/1918/1290 1153/1222/1293 324/354/1236 1124/1189/1233 +f 1151/1219/1291 1819/1918/1290 1124/1189/1233 77/82/1232 +f 325/355/1245 1154/1223/1294 1820/1919/1295 1129/1194/1246 +f 1154/1223/1294 317/343/1296 1155/1224/1297 1820/1919/1295 +f 1820/1919/1295 1155/1224/1297 76/81/1288 1151/1220/1291 +f 1129/1194/1246 1820/1919/1295 1151/1220/1291 77/83/1232 +f 302/319/1298 1157/1227/1299 1821/1920/1300 1156/1225/1301 +f 1157/1227/1299 358/388/1302 1158/1228/1303 1821/1920/1300 +f 1821/1920/1300 1158/1228/1303 356/386/1304 1159/1229/1305 +f 1156/1225/1301 1821/1920/1300 1159/1229/1305 303/321/1306 +f 357/387/1307 1161/1231/1308 1822/1921/1309 1160/1230/1310 +f 1161/1231/1308 359/389/1311 1162/1232/1312 1822/1921/1309 +f 1822/1921/1309 1162/1232/1312 302/320/1298 1156/1226/1301 +f 1160/1230/1310 1822/1921/1309 1156/1226/1301 303/322/1306 +f 303/321/1306 1159/1229/1305 1823/1922/1313 1163/1233/1314 +f 1159/1229/1305 356/386/1304 1164/1235/1315 1823/1922/1313 +f 1823/1922/1313 1164/1235/1315 354/384/1316 1165/1236/1317 +f 1163/1233/1314 1823/1922/1313 1165/1236/1317 75/78/1318 +f 355/385/1319 1167/1238/1320 1824/1923/1321 1166/1237/1322 +f 1167/1238/1320 357/387/1307 1160/1230/1310 1824/1923/1321 +f 1824/1923/1321 1160/1230/1310 303/322/1306 1163/1234/1314 +f 1166/1237/1322 1824/1923/1321 1163/1234/1314 75/79/1318 +f 75/78/1318 1165/1236/1317 1825/1924/1323 1168/1239/1324 +f 1165/1236/1317 354/384/1316 1169/1241/1325 1825/1924/1323 +f 1825/1924/1323 1169/1241/1325 316/342/1292 1152/1221/1289 +f 1168/1239/1324 1825/1924/1323 1152/1221/1289 76/80/1288 +f 317/343/1296 1170/1242/1326 1826/1925/1327 1155/1224/1297 +f 1170/1242/1326 355/385/1319 1166/1237/1322 1826/1925/1327 +f 1826/1925/1327 1166/1237/1322 75/79/1318 1168/1240/1324 +f 1155/1224/1297 1826/1925/1327 1168/1240/1324 76/81/1288 +f 292/308/1082 1052/1112/1091 1827/1926/1328 1171/1243/1329 +f 1052/1112/1091 294/311/1090 1172/1244/1330 1827/1926/1328 +f 1827/1926/1328 1172/1244/1330 362/392/1331 1173/1245/1332 +f 1171/1243/1329 1827/1926/1328 1173/1245/1332 364/394/1333 +f 363/393/1334 1175/1247/1335 1828/1927/1336 1174/1246/1337 +f 1175/1247/1335 295/312/1092 1053/1114/1095 1828/1927/1336 +f 1828/1927/1336 1053/1114/1095 293/310/1084 1176/1248/1338 +f 1174/1246/1337 1828/1927/1336 1176/1248/1338 365/395/1339 +f 364/394/1333 1173/1245/1332 1829/1928/1340 1177/1249/1341 +f 1173/1245/1332 362/392/1331 1178/1250/1342 1829/1928/1340 +f 1829/1928/1340 1178/1250/1342 368/398/1343 1179/1251/1344 +f 1177/1249/1341 1829/1928/1340 1179/1251/1344 366/396/1345 +f 369/399/1346 1181/1253/1347 1830/1929/1348 1180/1252/1349 +f 1181/1253/1347 363/393/1334 1174/1246/1337 1830/1929/1348 +f 1830/1929/1348 1174/1246/1337 365/395/1339 1182/1254/1350 +f 1180/1252/1349 1830/1929/1348 1182/1254/1350 367/397/1351 +f 366/396/1345 1179/1251/1344 1831/1930/1352 1183/1255/1353 +f 1179/1251/1344 368/398/1343 1184/1256/1354 1831/1930/1352 +f 1831/1930/1352 1184/1256/1354 370/400/1355 1185/1257/1356 +f 1183/1255/1353 1831/1930/1352 1185/1257/1356 372/402/1357 +f 371/401/1358 1187/1259/1359 1832/1931/1360 1186/1258/1361 +f 1187/1259/1359 369/399/1346 1180/1252/1349 1832/1931/1360 +f 1832/1931/1360 1180/1252/1349 367/397/1351 1188/1260/1362 +f 1186/1258/1361 1832/1931/1360 1188/1260/1362 373/403/1363 +f 372/402/1357 1185/1257/1356 1833/1932/1364 1189/1261/1365 +f 1185/1257/1356 370/400/1355 1190/1262/1366 1833/1932/1364 +f 1833/1932/1364 1190/1262/1366 376/406/1367 1191/1263/1368 +f 1189/1261/1365 1833/1932/1364 1191/1263/1368 374/404/1369 +f 377/407/1370 1193/1265/1371 1834/1933/1372 1192/1264/1373 +f 1193/1265/1371 371/401/1358 1186/1258/1361 1834/1933/1372 +f 1834/1933/1372 1186/1258/1361 373/403/1363 1194/1266/1374 +f 1192/1264/1373 1834/1933/1372 1194/1266/1374 375/405/1375 +f 314/338/1376 1196/1268/1377 1835/1934/1378 1195/1267/1379 +f 1196/1268/1377 378/408/1380 1197/1269/1381 1835/1934/1378 +f 1835/1934/1378 1197/1269/1381 374/404/1369 1191/1263/1368 +f 1195/1267/1379 1835/1934/1378 1191/1263/1368 376/406/1367 +f 375/405/1375 1198/1270/1382 1836/1935/1383 1192/1264/1373 +f 1198/1270/1382 379/409/1384 1199/1271/1385 1836/1935/1383 +f 1836/1935/1383 1199/1271/1385 315/340/1386 1200/1272/1387 +f 1192/1264/1373 1836/1935/1383 1200/1272/1387 377/407/1370 +f 316/342/1292 1169/1241/1325 1837/1936/1388 1201/1273/1389 +f 1169/1241/1325 354/384/1316 1202/1274/1390 1837/1936/1388 +f 1837/1936/1388 1202/1274/1390 374/404/1369 1197/1269/1381 +f 1201/1273/1389 1837/1936/1388 1197/1269/1381 378/408/1380 +f 375/405/1375 1203/1275/1391 1838/1937/1392 1198/1270/1382 +f 1203/1275/1391 355/385/1319 1170/1242/1326 1838/1937/1392 +f 1838/1937/1392 1170/1242/1326 317/343/1296 1204/1276/1393 +f 1198/1270/1382 1838/1937/1392 1204/1276/1393 379/409/1384 +f 354/384/1316 1164/1235/1315 1839/1938/1394 1202/1274/1390 +f 1164/1235/1315 356/386/1304 1205/1277/1395 1839/1938/1394 +f 1839/1938/1394 1205/1277/1395 372/402/1357 1189/1261/1365 +f 1202/1274/1390 1839/1938/1394 1189/1261/1365 374/404/1369 +f 373/403/1363 1206/1278/1396 1840/1939/1397 1194/1266/1374 +f 1206/1278/1396 357/387/1307 1167/1238/1320 1840/1939/1397 +f 1840/1939/1397 1167/1238/1320 355/385/1319 1203/1275/1391 +f 1194/1266/1374 1840/1939/1397 1203/1275/1391 375/405/1375 +f 356/386/1304 1158/1228/1303 1841/1940/1398 1205/1277/1395 +f 1158/1228/1303 358/388/1302 1207/1279/1399 1841/1940/1398 +f 1841/1940/1398 1207/1279/1399 366/396/1345 1183/1255/1353 +f 1205/1277/1395 1841/1940/1398 1183/1255/1353 372/402/1357 +f 367/397/1351 1208/1280/1400 1842/1941/1401 1188/1260/1362 +f 1208/1280/1400 359/389/1311 1161/1231/1308 1842/1941/1401 +f 1842/1941/1401 1161/1231/1308 357/387/1307 1206/1278/1396 +f 1188/1260/1362 1842/1941/1401 1206/1278/1396 373/403/1363 +f 358/388/1302 1209/1281/1402 1843/1942/1403 1207/1279/1399 +f 1209/1281/1402 360/390/1404 1210/1282/1405 1843/1942/1403 +f 1843/1942/1403 1210/1282/1405 364/394/1333 1177/1249/1341 +f 1207/1279/1399 1843/1942/1403 1177/1249/1341 366/396/1345 +f 365/395/1339 1211/1283/1406 1844/1943/1407 1182/1254/1350 +f 1211/1283/1406 361/391/1408 1212/1284/1409 1844/1943/1407 +f 1844/1943/1407 1212/1284/1409 359/389/1311 1208/1280/1400 +f 1182/1254/1350 1844/1943/1407 1208/1280/1400 367/397/1351 +f 290/304/1074 1048/1106/1083 1845/1944/1410 1213/1285/1411 +f 1048/1106/1083 292/308/1082 1171/1243/1329 1845/1944/1410 +f 1845/1944/1410 1171/1243/1329 364/394/1333 1210/1282/1405 +f 1213/1285/1411 1845/1944/1410 1210/1282/1405 360/390/1404 +f 365/395/1339 1176/1248/1338 1846/1945/1412 1211/1283/1406 +f 1176/1248/1338 293/310/1084 1049/1108/1087 1846/1945/1412 +f 1846/1945/1412 1049/1108/1087 291/306/1076 1214/1286/1413 +f 1211/1283/1406 1846/1945/1412 1214/1286/1413 361/391/1408 +f 74/76/1414 1216/1289/1415 1847/1946/1416 1215/1287/1417 +f 1216/1289/1415 360/390/1404 1209/1281/1402 1847/1946/1416 +f 1847/1946/1416 1209/1281/1402 358/388/1302 1157/1227/1299 +f 1215/1287/1417 1847/1946/1416 1157/1227/1299 302/319/1298 +f 359/389/1311 1212/1284/1409 1848/1947/1418 1162/1232/1312 +f 1212/1284/1409 361/391/1408 1217/1290/1419 1848/1947/1418 +f 1848/1947/1418 1217/1290/1419 74/77/1414 1215/1288/1417 +f 1162/1232/1312 1848/1947/1418 1215/1288/1417 302/320/1298 +f 284/292/1049 1036/1088/1059 1849/1948/1420 1218/1291/1421 +f 1036/1088/1059 286/296/1058 1040/1094/1067 1849/1948/1420 +f 1849/1948/1420 1040/1094/1067 288/300/1066 1044/1100/1075 +f 1218/1291/1421 1849/1948/1420 1044/1100/1075 290/304/1074 +f 289/302/1068 1041/1096/1071 1850/1949/1422 1045/1102/1079 +f 1041/1096/1071 287/298/1060 1037/1090/1063 1850/1949/1422 +f 1850/1949/1422 1037/1090/1063 285/294/1052 1219/1292/1423 +f 1045/1102/1079 1850/1949/1422 1219/1292/1423 291/306/1076 +f 284/292/1049 1218/1291/1421 1851/1950/1424 1220/1293/1425 +f 1218/1291/1421 290/304/1074 1213/1285/1411 1851/1950/1424 +f 1851/1950/1424 1213/1285/1411 360/390/1404 1216/1289/1415 +f 1220/1293/1425 1851/1950/1424 1216/1289/1415 74/76/1414 +f 361/391/1408 1214/1286/1413 1852/1951/1426 1217/1290/1419 +f 1214/1286/1413 291/306/1076 1219/1292/1423 1852/1951/1426 +f 1852/1951/1426 1219/1292/1423 285/294/1052 1221/1294/1427 +f 1217/1290/1419 1852/1951/1426 1221/1294/1427 74/77/1414 +f 73/74/1051 1032/1082/1050 1853/1952/1428 1222/1295/1429 +f 284/292/1049 1220/1293/1425 1853/1952/1428 1032/1082/1050 +f 74/76/1414 1222/1295/1429 1853/1952/1428 1220/1293/1425 +f 74/77/1414 1221/1294/1427 1854/1953/1430 1222/1296/1429 +f 285/294/1052 1033/1084/1055 1854/1953/1430 1221/1294/1427 +f 73/75/1051 1222/1296/1429 1854/1953/1430 1033/1084/1055 +f 294/311/1090 1056/1117/1099 1855/1954/1431 1172/1244/1330 +f 1056/1117/1099 296/313/1098 1145/1213/1277 1855/1954/1431 +f 1855/1954/1431 1145/1213/1277 310/334/1281 1223/1297/1432 +f 1172/1244/1330 1855/1954/1431 1223/1297/1432 362/392/1331 +f 311/335/1287 1150/1218/1286 1856/1955/1433 1224/1298/1434 +f 1150/1218/1286 297/314/1100 1057/1118/1103 1856/1955/1433 +f 1856/1955/1433 1057/1118/1103 295/312/1092 1175/1247/1335 +f 1224/1298/1434 1856/1955/1433 1175/1247/1335 363/393/1334 +f 310/334/1281 1225/1299/1435 1857/1956/1436 1223/1297/1432 +f 1225/1299/1435 312/336/1437 1226/1300/1438 1857/1956/1436 +f 1857/1956/1436 1226/1300/1438 368/398/1343 1178/1250/1342 +f 1223/1297/1432 1857/1956/1436 1178/1250/1342 362/392/1331 +f 369/399/1346 1227/1301/1439 1858/1957/1440 1181/1253/1347 +f 1227/1301/1439 313/337/1441 1228/1302/1442 1858/1957/1440 +f 1858/1957/1440 1228/1302/1442 311/335/1287 1224/1298/1434 +f 1181/1253/1347 1858/1957/1440 1224/1298/1434 363/393/1334 +f 312/336/1437 1229/1303/1443 1859/1958/1444 1226/1300/1438 +f 1229/1303/1443 382/413/1445 1230/1304/1446 1859/1958/1444 +f 1859/1958/1444 1230/1304/1446 370/400/1355 1184/1256/1354 +f 1226/1300/1438 1859/1958/1444 1184/1256/1354 368/398/1343 +f 371/401/1358 1231/1305/1447 1860/1959/1448 1187/1259/1359 +f 1231/1305/1447 383/415/1449 1232/1306/1450 1860/1959/1448 +f 1860/1959/1448 1232/1306/1450 313/337/1441 1227/1301/1439 +f 1187/1259/1359 1860/1959/1448 1227/1301/1439 369/399/1346 +f 314/338/1376 1195/1267/1379 1861/1960/1451 1233/1307/1452 +f 1195/1267/1379 376/406/1367 1190/1262/1366 1861/1960/1451 +f 1861/1960/1451 1190/1262/1366 370/400/1355 1230/1304/1446 +f 1233/1307/1452 1861/1960/1451 1230/1304/1446 382/413/1445 +f 371/401/1358 1193/1265/1371 1862/1961/1453 1231/1305/1447 +f 1193/1265/1371 377/407/1370 1200/1272/1387 1862/1961/1453 +f 1862/1961/1453 1200/1272/1387 315/340/1386 1234/1308/1454 +f 1231/1305/1447 1862/1961/1453 1234/1308/1454 383/415/1449 +f 348/378/1260 1136/1203/1259 1863/1962/1455 1235/1310/1456 +f 1136/1203/1259 350/380/1250 1236/1311/1457 1863/1962/1455 +f 1863/1962/1455 1236/1311/1457 386/419/1458 1237/1312/1459 +f 1235/1310/1456 1863/1962/1455 1237/1312/1459 384/417/1460 +f 387/420/1461 1239/1314/1462 1864/1963/1463 1238/1313/1464 +f 1239/1314/1462 351/381/1253 1139/1206/1264 1864/1963/1463 +f 1864/1963/1463 1139/1206/1264 349/379/1263 1240/1315/1465 +f 1238/1313/1464 1864/1963/1463 1240/1315/1465 385/418/1466 +f 318/344/1279 1242/1317/1467 1865/1964/1468 1241/1316/1469 +f 1242/1317/1467 384/417/1460 1237/1312/1459 1865/1964/1468 +f 1865/1964/1468 1237/1312/1459 386/419/1458 1243/1318/1470 +f 1241/1316/1469 1865/1964/1468 1243/1318/1470 320/346/1471 +f 387/420/1461 1238/1313/1464 1866/1965/1472 1244/1319/1473 +f 1238/1313/1464 385/418/1466 1245/1320/1474 1866/1965/1472 +f 1866/1965/1472 1245/1320/1474 319/345/1282 1246/1321/1475 +f 1244/1319/1473 1866/1965/1472 1246/1321/1475 321/348/1476 +f 298/315/1106 1064/1125/1115 1867/1966/1477 1146/1214/1278 +f 1064/1125/1115 300/317/1114 1247/1322/1478 1867/1966/1477 +f 1867/1966/1477 1247/1322/1478 384/417/1460 1242/1317/1467 +f 1146/1214/1278 1867/1966/1477 1242/1317/1467 318/344/1279 +f 385/418/1466 1248/1323/1479 1868/1967/1480 1245/1320/1474 +f 1248/1323/1479 301/318/1116 1065/1126/1119 1868/1967/1480 +f 1868/1967/1480 1065/1126/1119 299/316/1108 1149/1217/1283 +f 1245/1320/1474 1868/1967/1480 1149/1217/1283 319/345/1282 +f 300/317/1114 1249/1324/1481 1869/1968/1482 1247/1322/1478 +f 1249/1324/1481 344/374/1208 1110/1174/1207 1869/1968/1482 +f 1869/1968/1482 1110/1174/1207 342/372/1206 1250/1325/1483 +f 1247/1322/1478 1869/1968/1482 1250/1325/1483 384/417/1460 +f 343/373/1214 1113/1177/1211 1870/1969/1484 1251/1326/1485 +f 1113/1177/1211 345/375/1210 1252/1327/1486 1870/1969/1484 +f 1870/1969/1484 1252/1327/1486 301/318/1116 1248/1323/1479 +f 1251/1326/1485 1870/1969/1484 1248/1323/1479 385/418/1466 +f 342/372/1206 1143/1211/1273 1871/1970/1487 1250/1325/1483 +f 348/378/1260 1235/1310/1456 1871/1970/1487 1143/1211/1273 +f 384/417/1460 1250/1325/1483 1871/1970/1487 1235/1310/1456 +f 385/418/1466 1240/1315/1465 1872/1971/1488 1251/1326/1485 +f 349/379/1263 1144/1212/1275 1872/1971/1488 1240/1315/1465 +f 343/373/1214 1251/1326/1485 1872/1971/1488 1144/1212/1275 +f 300/317/1114 1121/1185/1229 1873/1972/1489 1249/1324/1481 +f 346/376/1223 1118/1182/1222 1873/1972/1489 1121/1185/1229 +f 344/374/1208 1249/1324/1481 1873/1972/1489 1118/1182/1222 +f 345/375/1210 1119/1183/1225 1874/1973/1490 1252/1327/1486 +f 347/377/1227 1122/1186/1230 1874/1973/1490 1119/1183/1225 +f 301/318/1116 1252/1327/1486 1874/1973/1490 1122/1186/1230 +f 314/338/1376 1253/1328/1491 1875/1974/1492 1196/1268/1377 +f 1253/1328/1491 322/350/1493 1254/1330/1494 1875/1974/1492 +f 1875/1974/1492 1254/1330/1494 380/410/1495 1255/1331/1496 +f 1196/1268/1377 1875/1974/1492 1255/1331/1496 378/408/1380 +f 381/411/1497 1257/1333/1498 1876/1975/1499 1256/1332/1500 +f 1257/1333/1498 323/352/1501 1258/1334/1502 1876/1975/1499 +f 1876/1975/1499 1258/1334/1502 315/340/1386 1199/1271/1385 +f 1256/1332/1500 1876/1975/1499 1199/1271/1385 379/409/1384 +f 316/342/1292 1201/1273/1389 1877/1976/1503 1153/1222/1293 +f 1201/1273/1389 378/408/1380 1255/1331/1496 1877/1976/1503 +f 1877/1976/1503 1255/1331/1496 380/410/1495 1259/1336/1504 +f 1153/1222/1293 1877/1976/1503 1259/1336/1504 324/354/1236 +f 381/411/1497 1256/1332/1500 1878/1977/1505 1260/1337/1506 +f 1256/1332/1500 379/409/1384 1204/1276/1393 1878/1977/1505 +f 1878/1977/1505 1204/1276/1393 317/343/1296 1154/1223/1294 +f 1260/1337/1506 1878/1977/1505 1154/1223/1294 325/355/1245 +f 320/346/1471 1243/1318/1470 1879/1978/1507 1261/1338/1508 +f 1243/1318/1470 386/419/1458 1262/1340/1509 1879/1978/1507 +f 1879/1978/1507 1262/1340/1509 380/410/1495 1254/1330/1494 +f 1261/1338/1508 1879/1978/1507 1254/1330/1494 322/350/1493 +f 381/411/1497 1263/1341/1510 1880/1979/1511 1257/1333/1498 +f 1263/1341/1510 387/420/1461 1244/1319/1473 1880/1979/1511 +f 1880/1979/1511 1244/1319/1473 321/348/1476 1264/1342/1512 +f 1257/1333/1498 1880/1979/1511 1264/1342/1512 323/352/1501 +f 350/380/1250 1131/1197/1249 1881/1980/1513 1236/1311/1457 +f 1131/1197/1249 352/382/1238 1265/1344/1514 1881/1980/1513 +f 1881/1980/1513 1265/1344/1514 380/410/1495 1262/1340/1509 +f 1236/1311/1457 1881/1980/1513 1262/1340/1509 386/419/1458 +f 381/411/1497 1266/1345/1515 1882/1981/1516 1263/1341/1510 +f 1266/1345/1515 353/383/1241 1134/1200/1254 1882/1981/1516 +f 1882/1981/1516 1134/1200/1254 351/381/1253 1239/1314/1462 +f 1263/1341/1510 1882/1981/1516 1239/1314/1462 387/420/1461 +f 324/354/1236 1259/1336/1504 1883/1982/1517 1125/1190/1237 +f 380/410/1495 1265/1344/1514 1883/1982/1517 1259/1336/1504 +f 352/382/1238 1125/1190/1237 1883/1982/1517 1265/1344/1514 +f 353/383/1241 1266/1345/1515 1884/1983/1518 1128/1193/1242 +f 381/411/1497 1260/1337/1506 1884/1983/1518 1266/1345/1515 +f 325/355/1245 1128/1193/1242 1884/1983/1518 1260/1337/1506 +f 400/438/1519 1268/1347/1520 1885/1984/1521 1267/1346/1522 +f 1268/1347/1520 388/421/1523 1269/1349/1524 1885/1984/1521 +f 1885/1984/1521 1269/1349/1524 414/454/1525 1270/1350/1526 +f 1267/1346/1522 1885/1984/1521 1270/1350/1526 402/442/1527 +f 415/455/1528 1272/1352/1529 1886/1985/1530 1271/1351/1531 +f 1272/1352/1529 389/424/1532 1273/1353/1533 1886/1985/1530 +f 1886/1985/1530 1273/1353/1533 401/440/1534 1274/1355/1535 +f 1271/1351/1531 1886/1985/1530 1274/1355/1535 403/443/1536 +f 400/438/1519 1267/1346/1522 1887/1986/1537 1275/1356/1538 +f 1267/1346/1522 402/442/1527 1276/1358/1539 1887/1986/1537 +f 1887/1986/1537 1276/1358/1539 404/444/1540 1277/1359/1541 +f 1275/1356/1538 1887/1986/1537 1277/1359/1541 398/434/1542 +f 405/445/1543 1279/1361/1544 1888/1987/1545 1278/1360/1546 +f 1279/1361/1544 403/443/1536 1274/1355/1535 1888/1987/1545 +f 1888/1987/1545 1274/1355/1535 401/440/1534 1280/1362/1547 +f 1278/1360/1546 1888/1987/1545 1280/1362/1547 399/436/1548 +f 398/434/1542 1277/1359/1541 1889/1988/1549 1281/1364/1550 +f 1277/1359/1541 404/444/1540 1282/1366/1551 1889/1988/1549 +f 1889/1988/1549 1282/1366/1551 406/446/1552 1283/1367/1553 +f 1281/1364/1550 1889/1988/1549 1283/1367/1553 396/432/1554 +f 407/447/1555 1285/1369/1556 1890/1989/1557 1284/1368/1558 +f 1285/1369/1556 405/445/1543 1278/1360/1546 1890/1989/1557 +f 1890/1989/1557 1278/1360/1546 399/436/1548 1286/1370/1559 +f 1284/1368/1558 1890/1989/1557 1286/1370/1559 397/433/1560 +f 396/432/1554 1283/1367/1553 1891/1990/1561 1287/1372/1562 +f 1283/1367/1553 406/446/1552 1288/1373/1563 1891/1990/1561 +f 1891/1990/1561 1288/1373/1563 408/448/1564 1289/1374/1565 +f 1287/1372/1562 1891/1990/1561 1289/1374/1565 394/430/1566 +f 409/449/1567 1291/1376/1568 1892/1991/1569 1290/1375/1570 +f 1291/1376/1568 407/447/1555 1284/1368/1558 1892/1991/1569 +f 1892/1991/1569 1284/1368/1558 397/433/1560 1292/1377/1571 +f 1290/1375/1570 1892/1991/1569 1292/1377/1571 395/431/1572 +f 394/430/1566 1289/1374/1565 1893/1992/1573 1293/1378/1574 +f 1289/1374/1565 408/448/1564 1294/1379/1575 1893/1992/1573 +f 1893/1992/1573 1294/1379/1575 410/450/1576 1295/1380/1577 +f 1293/1378/1574 1893/1992/1573 1295/1380/1577 392/428/1578 +f 411/451/1579 1297/1382/1580 1894/1993/1581 1296/1381/1582 +f 1297/1382/1580 409/449/1567 1290/1375/1570 1894/1993/1581 +f 1894/1993/1581 1290/1375/1570 395/431/1572 1298/1383/1583 +f 1296/1381/1582 1894/1993/1581 1298/1383/1583 393/429/1584 +f 392/428/1578 1295/1380/1577 1895/1994/1585 1299/1384/1586 +f 1295/1380/1577 410/450/1576 1300/1385/1587 1895/1994/1585 +f 1895/1994/1585 1300/1385/1587 412/452/1588 1301/1386/1589 +f 1299/1384/1586 1895/1994/1585 1301/1386/1589 390/426/1590 +f 413/453/1591 1303/1388/1592 1896/1995/1593 1302/1387/1594 +f 1303/1388/1592 411/451/1579 1296/1381/1582 1896/1995/1593 +f 1896/1995/1593 1296/1381/1582 393/429/1584 1304/1389/1595 +f 1302/1387/1594 1896/1995/1593 1304/1389/1595 391/427/1596 +f 410/450/1576 1305/1390/1597 1897/1996/1598 1300/1385/1587 +f 1305/1390/1597 420/460/1599 1306/1391/1600 1897/1996/1598 +f 1897/1996/1598 1306/1391/1600 418/458/1601 1307/1392/1602 +f 1300/1385/1587 1897/1996/1598 1307/1392/1602 412/452/1588 +f 419/459/1603 1309/1394/1604 1898/1997/1605 1308/1393/1606 +f 1309/1394/1604 421/461/1607 1310/1395/1608 1898/1997/1605 +f 1898/1997/1605 1310/1395/1608 411/451/1579 1303/1388/1592 +f 1308/1393/1606 1898/1997/1605 1303/1388/1592 413/453/1591 +f 408/448/1564 1311/1396/1609 1899/1998/1610 1294/1379/1575 +f 1311/1396/1609 422/462/1611 1312/1397/1612 1899/1998/1610 +f 1899/1998/1610 1312/1397/1612 420/460/1599 1305/1390/1597 +f 1294/1379/1575 1899/1998/1610 1305/1390/1597 410/450/1576 +f 421/461/1607 1313/1398/1613 1900/1999/1614 1310/1395/1608 +f 1313/1398/1613 423/463/1615 1314/1399/1616 1900/1999/1614 +f 1900/1999/1614 1314/1399/1616 409/449/1567 1297/1382/1580 +f 1310/1395/1608 1900/1999/1614 1297/1382/1580 411/451/1579 +f 406/446/1552 1315/1400/1617 1901/2000/1618 1288/1373/1563 +f 1315/1400/1617 424/464/1619 1316/1401/1620 1901/2000/1618 +f 1901/2000/1618 1316/1401/1620 422/462/1611 1311/1396/1609 +f 1288/1373/1563 1901/2000/1618 1311/1396/1609 408/448/1564 +f 423/463/1615 1317/1402/1621 1902/2001/1622 1314/1399/1616 +f 1317/1402/1621 425/465/1623 1318/1403/1624 1902/2001/1622 +f 1902/2001/1622 1318/1403/1624 407/447/1555 1291/1376/1568 +f 1314/1399/1616 1902/2001/1622 1291/1376/1568 409/449/1567 +f 404/444/1540 1319/1404/1625 1903/2002/1626 1282/1366/1551 +f 1319/1404/1625 426/466/1627 1320/1405/1628 1903/2002/1626 +f 1903/2002/1626 1320/1405/1628 424/464/1619 1315/1400/1617 +f 1282/1366/1551 1903/2002/1626 1315/1400/1617 406/446/1552 +f 425/465/1623 1321/1406/1629 1904/2003/1630 1318/1403/1624 +f 1321/1406/1629 427/467/1631 1322/1407/1632 1904/2003/1630 +f 1904/2003/1630 1322/1407/1632 405/445/1543 1285/1369/1556 +f 1318/1403/1624 1904/2003/1630 1285/1369/1556 407/447/1555 +f 402/442/1527 1323/1408/1633 1905/2004/1634 1276/1358/1539 +f 1323/1408/1633 428/468/1635 1324/1409/1636 1905/2004/1634 +f 1905/2004/1634 1324/1409/1636 426/466/1627 1319/1404/1625 +f 1276/1358/1539 1905/2004/1634 1319/1404/1625 404/444/1540 +f 427/467/1631 1325/1410/1637 1906/2005/1638 1322/1407/1632 +f 1325/1410/1637 429/469/1639 1326/1411/1640 1906/2005/1638 +f 1906/2005/1638 1326/1411/1640 403/443/1536 1279/1361/1544 +f 1322/1407/1632 1906/2005/1638 1279/1361/1544 405/445/1543 +f 402/442/1527 1270/1350/1526 1907/2006/1641 1323/1408/1633 +f 1270/1350/1526 414/454/1525 1327/1412/1642 1907/2006/1641 +f 1907/2006/1641 1327/1412/1642 416/456/1643 1328/1413/1644 +f 1323/1408/1633 1907/2006/1641 1328/1413/1644 428/468/1635 +f 417/457/1645 1330/1415/1646 1908/2007/1647 1329/1414/1648 +f 1330/1415/1646 415/455/1528 1271/1351/1531 1908/2007/1647 +f 1908/2007/1647 1271/1351/1531 403/443/1536 1326/1411/1640 +f 1329/1414/1648 1908/2007/1647 1326/1411/1640 429/469/1639 +f 318/344/1279 1241/1316/1469 1909/2008/1649 1331/1416/1650 +f 1241/1316/1469 320/346/1471 1332/1417/1651 1909/2008/1649 +f 1909/2008/1649 1332/1417/1651 444/487/1652 1333/1419/1653 +f 1331/1416/1650 1909/2008/1649 1333/1419/1653 442/484/1654 +f 445/489/1655 1335/1421/1656 1910/2009/1657 1334/1420/1658 +f 1335/1421/1656 321/348/1476 1246/1321/1475 1910/2009/1657 +f 1910/2009/1657 1246/1321/1475 319/345/1282 1336/1423/1659 +f 1334/1420/1658 1910/2009/1657 1336/1423/1659 443/485/1660 +f 320/347/1471 1337/1424/1661 1911/2010/1662 1332/1418/1651 +f 1337/1424/1661 390/426/1590 1301/1386/1589 1911/2010/1662 +f 1911/2010/1662 1301/1386/1589 412/452/1588 1338/1425/1663 +f 1332/1418/1651 1911/2010/1662 1338/1425/1663 444/486/1652 +f 413/453/1591 1302/1387/1594 1912/2011/1664 1339/1426/1665 +f 1302/1387/1594 391/427/1596 1340/1427/1666 1912/2011/1664 +f 1912/2011/1664 1340/1427/1666 321/349/1476 1335/1422/1656 +f 1339/1426/1665 1912/2011/1664 1335/1422/1656 445/488/1655 +f 310/334/1281 1147/1215/1280 1913/2012/1667 1225/1299/1435 +f 1147/1215/1280 318/344/1279 1331/1416/1650 1913/2012/1667 +f 1913/2012/1667 1331/1416/1650 442/484/1654 1341/1428/1668 +f 1225/1299/1435 1913/2012/1667 1341/1428/1668 312/336/1437 +f 443/485/1660 1336/1423/1659 1914/2013/1669 1342/1429/1670 +f 1336/1423/1659 319/345/1282 1148/1216/1285 1914/2013/1669 +f 1914/2013/1669 1148/1216/1285 311/335/1287 1228/1302/1442 +f 1342/1429/1670 1914/2013/1669 1228/1302/1442 313/337/1441 +f 382/412/1445 1344/1432/1671 1915/2014/1672 1343/1430/1673 +f 1344/1432/1671 430/470/1674 1345/1434/1675 1915/2014/1672 +f 1915/2014/1672 1345/1434/1675 414/454/1525 1269/1349/1524 +f 1343/1430/1673 1915/2014/1672 1269/1349/1524 388/421/1523 +f 415/455/1528 1346/1435/1676 1916/2015/1677 1272/1352/1529 +f 1346/1435/1676 431/472/1678 1347/1436/1679 1916/2015/1677 +f 1916/2015/1677 1347/1436/1679 383/414/1449 1348/1438/1680 +f 1272/1352/1529 1916/2015/1677 1348/1438/1680 389/424/1532 +f 412/452/1588 1307/1392/1602 1917/2016/1681 1338/1425/1663 +f 1307/1392/1602 418/458/1601 1349/1440/1682 1917/2016/1681 +f 1917/2016/1681 1349/1440/1682 440/482/1683 1350/1441/1684 +f 1338/1425/1663 1917/2016/1681 1350/1441/1684 444/486/1652 +f 441/483/1685 1352/1443/1686 1918/2017/1687 1351/1442/1688 +f 1352/1443/1686 419/459/1603 1308/1393/1606 1918/2017/1687 +f 1918/2017/1687 1308/1393/1606 413/453/1591 1339/1426/1665 +f 1351/1442/1688 1918/2017/1687 1339/1426/1665 445/488/1655 +f 438/480/1689 1354/1445/1690 1919/2018/1691 1353/1444/1692 +f 1354/1445/1690 446/490/1693 1355/1446/1694 1919/2018/1691 +f 1919/2018/1691 1355/1446/1694 444/486/1652 1350/1441/1684 +f 1353/1444/1692 1919/2018/1691 1350/1441/1684 440/482/1683 +f 445/488/1655 1356/1448/1695 1920/2019/1696 1351/1442/1688 +f 1356/1448/1695 447/492/1697 1357/1450/1698 1920/2019/1696 +f 1920/2019/1696 1357/1450/1698 439/481/1699 1358/1451/1700 +f 1351/1442/1688 1920/2019/1696 1358/1451/1700 441/483/1685 +f 434/476/1701 1360/1453/1702 1921/2020/1703 1359/1452/1704 +f 1360/1453/1702 446/490/1693 1354/1445/1690 1921/2020/1703 +f 1921/2020/1703 1354/1445/1690 438/480/1689 1361/1454/1705 +f 1359/1452/1704 1921/2020/1703 1361/1454/1705 436/478/1706 +f 439/481/1699 1357/1450/1698 1922/2021/1707 1362/1455/1708 +f 1357/1450/1698 447/492/1697 1363/1456/1709 1922/2021/1707 +f 1922/2021/1707 1363/1456/1709 435/477/1710 1364/1457/1711 +f 1362/1455/1708 1922/2021/1707 1364/1457/1711 437/479/1712 +f 432/474/1713 1366/1459/1714 1923/2022/1715 1365/1458/1716 +f 1366/1459/1714 448/494/1717 1367/1460/1718 1923/2022/1715 +f 1923/2022/1715 1367/1460/1718 446/490/1693 1360/1453/1702 +f 1365/1458/1716 1923/2022/1715 1360/1453/1702 434/476/1701 +f 447/492/1697 1368/1462/1719 1924/2023/1720 1363/1456/1709 +f 1368/1462/1719 449/496/1721 1369/1464/1722 1924/2023/1720 +f 1924/2023/1720 1369/1464/1722 433/475/1723 1370/1465/1724 +f 1363/1456/1709 1924/2023/1720 1370/1465/1724 435/477/1710 +f 430/470/1674 1372/1467/1725 1925/2024/1726 1371/1466/1727 +f 1372/1467/1725 448/494/1717 1366/1459/1714 1925/2024/1726 +f 1925/2024/1726 1366/1459/1714 432/474/1713 1373/1469/1728 +f 1371/1466/1727 1925/2024/1726 1373/1469/1728 450/498/1729 +f 433/475/1723 1369/1464/1722 1926/2025/1730 1374/1470/1731 +f 1369/1464/1722 449/496/1721 1375/1471/1732 1926/2025/1730 +f 1926/2025/1730 1375/1471/1732 431/472/1678 1376/1473/1733 +f 1374/1470/1731 1926/2025/1730 1376/1473/1733 451/499/1734 +f 414/454/1525 1345/1434/1675 1927/2026/1735 1327/1412/1642 +f 1345/1434/1675 430/470/1674 1371/1466/1727 1927/2026/1735 +f 1927/2026/1735 1371/1466/1727 450/498/1729 1377/1474/1736 +f 1327/1412/1642 1927/2026/1735 1377/1474/1736 416/456/1643 +f 451/499/1734 1376/1473/1733 1928/2027/1737 1378/1475/1738 +f 1376/1473/1733 431/472/1678 1346/1435/1676 1928/2027/1737 +f 1928/2027/1737 1346/1435/1676 415/455/1528 1330/1415/1646 +f 1378/1475/1738 1928/2027/1737 1330/1415/1646 417/457/1645 +f 312/336/1437 1379/1476/1739 1929/2028/1740 1229/1303/1443 +f 1379/1476/1739 448/495/1717 1372/1468/1725 1929/2028/1740 +f 1929/2028/1740 1372/1468/1725 430/471/1674 1344/1433/1671 +f 1229/1303/1443 1929/2028/1740 1344/1433/1671 382/413/1445 +f 431/473/1678 1375/1472/1732 1930/2029/1741 1347/1437/1679 +f 1375/1472/1732 449/497/1721 1380/1477/1742 1930/2029/1741 +f 1930/2029/1741 1380/1477/1742 313/337/1441 1232/1306/1450 +f 1347/1437/1679 1930/2029/1741 1232/1306/1450 383/415/1449 +f 312/336/1437 1341/1428/1668 1931/2030/1743 1379/1476/1739 +f 1341/1428/1668 442/484/1654 1381/1478/1744 1931/2030/1743 +f 1931/2030/1743 1381/1478/1744 446/491/1693 1367/1461/1718 +f 1379/1476/1739 1931/2030/1743 1367/1461/1718 448/495/1717 +f 447/493/1697 1382/1479/1745 1932/2031/1746 1368/1463/1719 +f 1382/1479/1745 443/485/1660 1342/1429/1670 1932/2031/1746 +f 1932/2031/1746 1342/1429/1670 313/337/1441 1380/1477/1742 +f 1368/1463/1719 1932/2031/1746 1380/1477/1742 449/497/1721 +f 442/484/1654 1333/1419/1653 1933/2032/1747 1381/1478/1744 +f 444/487/1652 1355/1447/1694 1933/2032/1747 1333/1419/1653 +f 446/491/1693 1381/1478/1744 1933/2032/1747 1355/1447/1694 +f 447/493/1697 1356/1449/1695 1934/2033/1748 1382/1479/1745 +f 445/489/1655 1334/1420/1658 1934/2033/1748 1356/1449/1695 +f 443/485/1660 1382/1479/1745 1934/2033/1748 1334/1420/1658 +f 416/456/1643 1377/1474/1736 1935/2034/1749 1383/1480/1750 +f 1377/1474/1736 450/498/1729 1384/1481/1751 1935/2034/1749 +f 1935/2034/1749 1384/1481/1751 452/500/1752 1385/1482/1753 +f 1383/1480/1750 1935/2034/1749 1385/1482/1753 476/524/1754 +f 453/501/1755 1387/1484/1756 1936/2035/1757 1386/1483/1758 +f 1387/1484/1756 451/499/1734 1378/1475/1738 1936/2035/1757 +f 1936/2035/1757 1378/1475/1738 417/457/1645 1388/1485/1759 +f 1386/1483/1758 1936/2035/1757 1388/1485/1759 477/525/1760 +f 450/498/1729 1373/1469/1728 1937/2036/1761 1384/1481/1751 +f 1373/1469/1728 432/474/1713 1389/1486/1762 1937/2036/1761 +f 1937/2036/1761 1389/1486/1762 462/510/1763 1390/1487/1764 +f 1384/1481/1751 1937/2036/1761 1390/1487/1764 452/500/1752 +f 463/511/1765 1392/1489/1766 1938/2037/1767 1391/1488/1768 +f 1392/1489/1766 433/475/1723 1374/1470/1731 1938/2037/1767 +f 1938/2037/1767 1374/1470/1731 451/499/1734 1387/1484/1756 +f 1391/1488/1768 1938/2037/1767 1387/1484/1756 453/501/1755 +f 432/474/1713 1365/1458/1716 1939/2038/1769 1389/1486/1762 +f 1365/1458/1716 434/476/1701 1393/1490/1770 1939/2038/1769 +f 1939/2038/1769 1393/1490/1770 460/508/1771 1394/1491/1772 +f 1389/1486/1762 1939/2038/1769 1394/1491/1772 462/510/1763 +f 461/509/1773 1396/1493/1774 1940/2039/1775 1395/1492/1776 +f 1396/1493/1774 435/477/1710 1370/1465/1724 1940/2039/1775 +f 1940/2039/1775 1370/1465/1724 433/475/1723 1392/1489/1766 +f 1395/1492/1776 1940/2039/1775 1392/1489/1766 463/511/1765 +f 434/476/1701 1359/1452/1704 1941/2040/1777 1393/1490/1770 +f 1359/1452/1704 436/478/1706 1397/1494/1778 1941/2040/1777 +f 1941/2040/1777 1397/1494/1778 458/506/1779 1398/1495/1780 +f 1393/1490/1770 1941/2040/1777 1398/1495/1780 460/508/1771 +f 459/507/1781 1400/1497/1782 1942/2041/1783 1399/1496/1784 +f 1400/1497/1782 437/479/1712 1364/1457/1711 1942/2041/1783 +f 1942/2041/1783 1364/1457/1711 435/477/1710 1396/1493/1774 +f 1399/1496/1784 1942/2041/1783 1396/1493/1774 461/509/1773 +f 436/478/1706 1361/1454/1705 1943/2042/1785 1397/1494/1778 +f 1361/1454/1705 438/480/1689 1401/1498/1786 1943/2042/1785 +f 1943/2042/1785 1401/1498/1786 456/504/1787 1402/1499/1788 +f 1397/1494/1778 1943/2042/1785 1402/1499/1788 458/506/1779 +f 457/505/1789 1404/1501/1790 1944/2043/1791 1403/1500/1792 +f 1404/1501/1790 439/481/1699 1362/1455/1708 1944/2043/1791 +f 1944/2043/1791 1362/1455/1708 437/479/1712 1400/1497/1782 +f 1403/1500/1792 1944/2043/1791 1400/1497/1782 459/507/1781 +f 438/480/1689 1353/1444/1692 1945/2044/1793 1401/1498/1786 +f 1353/1444/1692 440/482/1683 1405/1502/1794 1945/2044/1793 +f 1945/2044/1793 1405/1502/1794 454/502/1795 1406/1503/1796 +f 1401/1498/1786 1945/2044/1793 1406/1503/1796 456/504/1787 +f 455/503/1797 1408/1505/1798 1946/2045/1799 1407/1504/1800 +f 1408/1505/1798 441/483/1685 1358/1451/1700 1946/2045/1799 +f 1946/2045/1799 1358/1451/1700 439/481/1699 1404/1501/1790 +f 1407/1504/1800 1946/2045/1799 1404/1501/1790 457/505/1789 +f 440/482/1683 1349/1440/1682 1947/2046/1801 1405/1502/1794 +f 1349/1440/1682 418/458/1601 1409/1506/1802 1947/2046/1801 +f 1947/2046/1801 1409/1506/1802 474/522/1803 1410/1507/1804 +f 1405/1502/1794 1947/2046/1801 1410/1507/1804 454/502/1795 +f 475/523/1805 1412/1509/1806 1948/2047/1807 1411/1508/1808 +f 1412/1509/1806 419/459/1603 1352/1443/1686 1948/2047/1807 +f 1948/2047/1807 1352/1443/1686 441/483/1685 1408/1505/1798 +f 1411/1508/1808 1948/2047/1807 1408/1505/1798 455/503/1797 +f 428/468/1635 1328/1413/1644 1949/2048/1809 1413/1510/1810 +f 1328/1413/1644 416/456/1643 1383/1480/1750 1949/2048/1809 +f 1949/2048/1809 1383/1480/1750 476/524/1754 1414/1511/1811 +f 1413/1510/1810 1949/2048/1809 1414/1511/1811 464/512/1812 +f 477/525/1760 1388/1485/1759 1950/2049/1813 1415/1512/1814 +f 1388/1485/1759 417/457/1645 1329/1414/1648 1950/2049/1813 +f 1950/2049/1813 1329/1414/1648 429/469/1639 1416/1513/1815 +f 1415/1512/1814 1950/2049/1813 1416/1513/1815 465/513/1816 +f 426/466/1627 1324/1409/1636 1951/2050/1817 1417/1514/1818 +f 1324/1409/1636 428/468/1635 1413/1510/1810 1951/2050/1817 +f 1951/2050/1817 1413/1510/1810 464/512/1812 1418/1515/1819 +f 1417/1514/1818 1951/2050/1817 1418/1515/1819 466/514/1820 +f 465/513/1816 1416/1513/1815 1952/2051/1821 1419/1516/1822 +f 1416/1513/1815 429/469/1639 1325/1410/1637 1952/2051/1821 +f 1952/2051/1821 1325/1410/1637 427/467/1631 1420/1517/1823 +f 1419/1516/1822 1952/2051/1821 1420/1517/1823 467/515/1824 +f 424/464/1619 1320/1405/1628 1953/2052/1825 1421/1518/1826 +f 1320/1405/1628 426/466/1627 1417/1514/1818 1953/2052/1825 +f 1953/2052/1825 1417/1514/1818 466/514/1820 1422/1519/1827 +f 1421/1518/1826 1953/2052/1825 1422/1519/1827 468/516/1828 +f 467/515/1824 1420/1517/1823 1954/2053/1829 1423/1520/1830 +f 1420/1517/1823 427/467/1631 1321/1406/1629 1954/2053/1829 +f 1954/2053/1829 1321/1406/1629 425/465/1623 1424/1521/1831 +f 1423/1520/1830 1954/2053/1829 1424/1521/1831 469/517/1832 +f 422/462/1611 1316/1401/1620 1955/2054/1833 1425/1522/1834 +f 1316/1401/1620 424/464/1619 1421/1518/1826 1955/2054/1833 +f 1955/2054/1833 1421/1518/1826 468/516/1828 1426/1523/1835 +f 1425/1522/1834 1955/2054/1833 1426/1523/1835 470/518/1836 +f 469/517/1832 1424/1521/1831 1956/2055/1837 1427/1524/1838 +f 1424/1521/1831 425/465/1623 1317/1402/1621 1956/2055/1837 +f 1956/2055/1837 1317/1402/1621 423/463/1615 1428/1525/1839 +f 1427/1524/1838 1956/2055/1837 1428/1525/1839 471/519/1840 +f 420/460/1599 1312/1397/1612 1957/2056/1841 1429/1526/1842 +f 1312/1397/1612 422/462/1611 1425/1522/1834 1957/2056/1841 +f 1957/2056/1841 1425/1522/1834 470/518/1836 1430/1527/1843 +f 1429/1526/1842 1957/2056/1841 1430/1527/1843 472/520/1844 +f 471/519/1840 1428/1525/1839 1958/2057/1845 1431/1528/1846 +f 1428/1525/1839 423/463/1615 1313/1398/1613 1958/2057/1845 +f 1958/2057/1845 1313/1398/1613 421/461/1607 1432/1529/1847 +f 1431/1528/1846 1958/2057/1845 1432/1529/1847 473/521/1848 +f 418/458/1601 1306/1391/1600 1959/2058/1849 1409/1506/1802 +f 1306/1391/1600 420/460/1599 1429/1526/1842 1959/2058/1849 +f 1959/2058/1849 1429/1526/1842 472/520/1844 1433/1530/1850 +f 1409/1506/1802 1959/2058/1849 1433/1530/1850 474/522/1803 +f 473/521/1848 1432/1529/1847 1960/2059/1851 1434/1531/1852 +f 1432/1529/1847 421/461/1607 1309/1394/1604 1960/2059/1851 +f 1960/2059/1851 1309/1394/1604 419/459/1603 1412/1509/1806 +f 1434/1531/1852 1960/2059/1851 1412/1509/1806 475/523/1805 +f 458/506/1779 1402/1499/1788 1961/2060/1853 1435/1532/1854 +f 1402/1499/1788 456/504/1787 1436/1533/1855 1961/2060/1853 +f 1961/2060/1853 1436/1533/1855 480/528/1856 1437/1534/1857 +f 1435/1532/1854 1961/2060/1853 1437/1534/1857 478/526/1858 +f 481/529/1859 1439/1536/1860 1962/2061/1861 1438/1535/1862 +f 1439/1536/1860 457/505/1789 1403/1500/1792 1962/2061/1861 +f 1962/2061/1861 1403/1500/1792 459/507/1781 1440/1537/1863 +f 1438/1535/1862 1962/2061/1861 1440/1537/1863 479/527/1864 +f 478/526/1858 1437/1534/1857 1963/2062/1865 1441/1538/1866 +f 1437/1534/1857 480/528/1856 1442/1539/1867 1963/2062/1865 +f 1963/2062/1865 1442/1539/1867 482/530/1868 1443/1540/1869 +f 1441/1538/1866 1963/2062/1865 1443/1540/1869 484/532/1870 +f 483/531/1871 1445/1542/1872 1964/2063/1873 1444/1541/1874 +f 1445/1542/1872 481/529/1859 1438/1535/1862 1964/2063/1873 +f 1964/2063/1873 1438/1535/1862 479/527/1864 1446/1543/1875 +f 1444/1541/1874 1964/2063/1873 1446/1543/1875 485/533/1876 +f 484/532/1870 1443/1540/1869 1965/2064/1877 1447/1544/1878 +f 1443/1540/1869 482/530/1868 1448/1545/1879 1965/2064/1877 +f 1965/2064/1877 1448/1545/1879 488/536/1880 1449/1546/1881 +f 1447/1544/1878 1965/2064/1877 1449/1546/1881 486/534/1882 +f 489/537/1883 1451/1548/1884 1966/2065/1885 1450/1547/1886 +f 1451/1548/1884 483/531/1871 1444/1541/1874 1966/2065/1885 +f 1966/2065/1885 1444/1541/1874 485/533/1876 1452/1549/1887 +f 1450/1547/1886 1966/2065/1885 1452/1549/1887 487/535/1888 +f 486/534/1882 1449/1546/1881 1967/2066/1889 1453/1550/1890 +f 1449/1546/1881 488/536/1880 1454/1551/1891 1967/2066/1889 +f 1967/2066/1889 1454/1551/1891 490/538/1892 1455/1552/1893 +f 1453/1550/1890 1967/2066/1889 1455/1552/1893 492/540/1894 +f 491/539/1895 1457/1554/1896 1968/2067/1897 1456/1553/1898 +f 1457/1554/1896 489/537/1883 1450/1547/1886 1968/2067/1897 +f 1968/2067/1897 1450/1547/1886 487/535/1888 1458/1555/1899 +f 1456/1553/1898 1968/2067/1897 1458/1555/1899 493/541/1900 +f 464/512/1812 1414/1511/1811 1969/2068/1901 1459/1556/1902 +f 1414/1511/1811 476/524/1754 1460/1557/1903 1969/2068/1901 +f 1969/2068/1901 1460/1557/1903 486/534/1882 1453/1550/1890 +f 1459/1556/1902 1969/2068/1901 1453/1550/1890 492/540/1894 +f 487/535/1888 1461/1558/1904 1970/2069/1905 1458/1555/1899 +f 1461/1558/1904 477/525/1760 1415/1512/1814 1970/2069/1905 +f 1970/2069/1905 1415/1512/1814 465/513/1816 1462/1559/1906 +f 1458/1555/1899 1970/2069/1905 1462/1559/1906 493/541/1900 +f 452/500/1752 1463/1560/1907 1971/2070/1908 1385/1482/1753 +f 1463/1560/1907 484/532/1870 1447/1544/1878 1971/2070/1908 +f 1971/2070/1908 1447/1544/1878 486/534/1882 1460/1557/1903 +f 1385/1482/1753 1971/2070/1908 1460/1557/1903 476/524/1754 +f 487/535/1888 1452/1549/1887 1972/2071/1909 1461/1558/1904 +f 1452/1549/1887 485/533/1876 1464/1561/1910 1972/2071/1909 +f 1972/2071/1909 1464/1561/1910 453/501/1755 1386/1483/1758 +f 1461/1558/1904 1972/2071/1909 1386/1483/1758 477/525/1760 +f 452/500/1752 1390/1487/1764 1973/2072/1911 1463/1560/1907 +f 1390/1487/1764 462/510/1763 1465/1562/1912 1973/2072/1911 +f 1973/2072/1911 1465/1562/1912 478/526/1858 1441/1538/1866 +f 1463/1560/1907 1973/2072/1911 1441/1538/1866 484/532/1870 +f 479/527/1864 1466/1563/1913 1974/2073/1914 1446/1543/1875 +f 1466/1563/1913 463/511/1765 1391/1488/1768 1974/2073/1914 +f 1974/2073/1914 1391/1488/1768 453/501/1755 1464/1561/1910 +f 1446/1543/1875 1974/2073/1914 1464/1561/1910 485/533/1876 +f 458/506/1779 1435/1532/1854 1975/2074/1915 1398/1495/1780 +f 1435/1532/1854 478/526/1858 1465/1562/1912 1975/2074/1915 +f 1975/2074/1915 1465/1562/1912 462/510/1763 1394/1491/1772 +f 1398/1495/1780 1975/2074/1915 1394/1491/1772 460/508/1771 +f 463/511/1765 1466/1563/1913 1976/2075/1916 1395/1492/1776 +f 1466/1563/1913 479/527/1864 1440/1537/1863 1976/2075/1916 +f 1976/2075/1916 1440/1537/1863 459/507/1781 1399/1496/1784 +f 1395/1492/1776 1976/2075/1916 1399/1496/1784 461/509/1773 +f 454/502/1795 1410/1507/1804 1977/2076/1917 1406/1503/1796 +f 1410/1507/1804 474/522/1803 1467/1564/1918 1977/2076/1917 +f 1977/2076/1917 1467/1564/1918 480/528/1856 1436/1533/1855 +f 1406/1503/1796 1977/2076/1917 1436/1533/1855 456/504/1787 +f 481/529/1859 1468/1565/1919 1978/2077/1920 1439/1536/1860 +f 1468/1565/1919 475/523/1805 1411/1508/1808 1978/2077/1920 +f 1978/2077/1920 1411/1508/1808 455/503/1797 1407/1504/1800 +f 1439/1536/1860 1978/2077/1920 1407/1504/1800 457/505/1789 +f 472/520/1844 1469/1566/1921 1979/2078/1922 1433/1530/1850 +f 1469/1566/1921 482/530/1868 1442/1539/1867 1979/2078/1922 +f 1979/2078/1922 1442/1539/1867 480/528/1856 1467/1564/1918 +f 1433/1530/1850 1979/2078/1922 1467/1564/1918 474/522/1803 +f 481/529/1859 1445/1542/1872 1980/2079/1923 1468/1565/1919 +f 1445/1542/1872 483/531/1871 1470/1567/1924 1980/2079/1923 +f 1980/2079/1923 1470/1567/1924 473/521/1848 1434/1531/1852 +f 1468/1565/1919 1980/2079/1923 1434/1531/1852 475/523/1805 +f 470/518/1836 1471/1568/1925 1981/2080/1926 1430/1527/1843 +f 1471/1568/1925 488/536/1880 1448/1545/1879 1981/2080/1926 +f 1981/2080/1926 1448/1545/1879 482/530/1868 1469/1566/1921 +f 1430/1527/1843 1981/2080/1926 1469/1566/1921 472/520/1844 +f 483/531/1871 1451/1548/1884 1982/2081/1927 1470/1567/1924 +f 1451/1548/1884 489/537/1883 1472/1569/1928 1982/2081/1927 +f 1982/2081/1927 1472/1569/1928 471/519/1840 1431/1528/1846 +f 1470/1567/1924 1982/2081/1927 1431/1528/1846 473/521/1848 +f 468/516/1828 1473/1570/1929 1983/2082/1930 1426/1523/1835 +f 1473/1570/1929 490/538/1892 1454/1551/1891 1983/2082/1930 +f 1983/2082/1930 1454/1551/1891 488/536/1880 1471/1568/1925 +f 1426/1523/1835 1983/2082/1930 1471/1568/1925 470/518/1836 +f 489/537/1883 1457/1554/1896 1984/2083/1931 1472/1569/1928 +f 1457/1554/1896 491/539/1895 1474/1571/1932 1984/2083/1931 +f 1984/2083/1931 1474/1571/1932 469/517/1832 1427/1524/1838 +f 1472/1569/1928 1984/2083/1931 1427/1524/1838 471/519/1840 +f 466/514/1820 1475/1572/1933 1985/2084/1934 1422/1519/1827 +f 1475/1572/1933 492/540/1894 1455/1552/1893 1985/2084/1934 +f 1985/2084/1934 1455/1552/1893 490/538/1892 1473/1570/1929 +f 1422/1519/1827 1985/2084/1934 1473/1570/1929 468/516/1828 +f 491/539/1895 1456/1553/1898 1986/2085/1935 1474/1571/1932 +f 1456/1553/1898 493/541/1900 1476/1573/1936 1986/2085/1935 +f 1986/2085/1935 1476/1573/1936 467/515/1824 1423/1520/1830 +f 1474/1571/1932 1986/2085/1935 1423/1520/1830 469/517/1832 +f 464/512/1812 1459/1556/1902 1987/2086/1937 1418/1515/1819 +f 492/540/1894 1475/1572/1933 1987/2086/1937 1459/1556/1902 +f 466/514/1820 1418/1515/1819 1987/2086/1937 1475/1572/1933 +f 467/515/1824 1476/1573/1936 1988/2087/1938 1419/1516/1822 +f 493/541/1900 1462/1559/1906 1988/2087/1938 1476/1573/1936 +f 465/513/1816 1419/1516/1822 1988/2087/1938 1462/1559/1906 +f 392/428/1578 1299/1384/1586 1989/2088/1939 1477/1574/1940 +f 1299/1384/1586 390/426/1590 1478/1575/1941 1989/2088/1939 +f 1989/2088/1939 1478/1575/1941 504/552/1942 1479/1576/1943 +f 1477/1574/1940 1989/2088/1939 1479/1576/1943 502/550/1944 +f 505/553/1945 1481/1578/1946 1990/2089/1947 1480/1577/1948 +f 1481/1578/1946 391/427/1596 1304/1389/1595 1990/2089/1947 +f 1990/2089/1947 1304/1389/1595 393/429/1584 1482/1579/1949 +f 1480/1577/1948 1990/2089/1947 1482/1579/1949 503/551/1950 +f 394/430/1566 1293/1378/1574 1991/2090/1951 1483/1580/1952 +f 1293/1378/1574 392/428/1578 1477/1574/1940 1991/2090/1951 +f 1991/2090/1951 1477/1574/1940 502/550/1944 1484/1581/1953 +f 1483/1580/1952 1991/2090/1951 1484/1581/1953 500/548/1954 +f 503/551/1950 1482/1579/1949 1992/2091/1955 1485/1582/1956 +f 1482/1579/1949 393/429/1584 1298/1383/1583 1992/2091/1955 +f 1992/2091/1955 1298/1383/1583 395/431/1572 1486/1583/1957 +f 1485/1582/1956 1992/2091/1955 1486/1583/1957 501/549/1958 +f 396/432/1554 1287/1372/1562 1993/2092/1959 1487/1584/1960 +f 1287/1372/1562 394/430/1566 1483/1580/1952 1993/2092/1959 +f 1993/2092/1959 1483/1580/1952 500/548/1954 1488/1585/1961 +f 1487/1584/1960 1993/2092/1959 1488/1585/1961 498/546/1962 +f 501/549/1958 1486/1583/1957 1994/2093/1963 1489/1586/1964 +f 1486/1583/1957 395/431/1572 1292/1377/1571 1994/2093/1963 +f 1994/2093/1963 1292/1377/1571 397/433/1560 1490/1587/1965 +f 1489/1586/1964 1994/2093/1963 1490/1587/1965 499/547/1966 +f 398/435/1542 1281/1365/1550 1995/2094/1967 1491/1588/1968 +f 1281/1365/1550 396/432/1554 1487/1584/1960 1995/2094/1967 +f 1995/2094/1967 1487/1584/1960 498/546/1962 1492/1589/1969 +f 1491/1588/1968 1995/2094/1967 1492/1589/1969 496/544/1970 +f 499/547/1966 1490/1587/1965 1996/2095/1971 1493/1590/1972 +f 1490/1587/1965 397/433/1560 1286/1371/1559 1996/2095/1971 +f 1996/2095/1971 1286/1371/1559 399/437/1548 1494/1591/1973 +f 1493/1590/1972 1996/2095/1971 1494/1591/1973 497/545/1974 +f 400/439/1519 1275/1357/1538 1997/2096/1975 1495/1592/1976 +f 1275/1357/1538 398/435/1542 1491/1588/1968 1997/2096/1975 +f 1997/2096/1975 1491/1588/1968 496/544/1970 1496/1593/1977 +f 1495/1592/1976 1997/2096/1975 1496/1593/1977 494/542/1978 +f 497/545/1974 1494/1591/1973 1998/2097/1979 1497/1594/1980 +f 1494/1591/1973 399/437/1548 1280/1363/1547 1998/2097/1979 +f 1998/2097/1979 1280/1363/1547 401/441/1534 1498/1595/1981 +f 1497/1594/1980 1998/2097/1979 1498/1595/1981 495/543/1982 +f 388/422/1523 1268/1348/1520 1999/2098/1983 1499/1596/1984 +f 1268/1348/1520 400/439/1519 1495/1592/1976 1999/2098/1983 +f 1999/2098/1983 1495/1592/1976 494/542/1978 1500/1598/1985 +f 1499/1596/1984 1999/2098/1983 1500/1598/1985 506/555/1986 +f 495/543/1982 1498/1595/1981 2000/2099/1987 1501/1599/1988 +f 1498/1595/1981 401/441/1534 1273/1354/1533 2000/2099/1987 +f 2000/2099/1987 1273/1354/1533 389/425/1532 1502/1600/1989 +f 1501/1599/1988 2000/2099/1987 1502/1600/1989 507/556/1990 +f 494/542/1978 1503/1601/1991 2001/2100/1992 1500/1598/1985 +f 1503/1601/1991 502/550/1944 1479/1576/1943 2001/2100/1992 +f 2001/2100/1992 1479/1576/1943 504/552/1942 1504/1602/1993 +f 1500/1598/1985 2001/2100/1992 1504/1602/1993 506/555/1986 +f 505/553/1945 1480/1577/1948 2002/2101/1994 1505/1603/1995 +f 1480/1577/1948 503/551/1950 1506/1604/1996 2002/2101/1994 +f 2002/2101/1994 1506/1604/1996 495/543/1982 1501/1599/1988 +f 1505/1603/1995 2002/2101/1994 1501/1599/1988 507/556/1990 +f 494/542/1978 1496/1593/1977 2003/2102/1997 1503/1601/1991 +f 1496/1593/1977 496/544/1970 1507/1605/1998 2003/2102/1997 +f 2003/2102/1997 1507/1605/1998 500/548/1954 1484/1581/1953 +f 1503/1601/1991 2003/2102/1997 1484/1581/1953 502/550/1944 +f 501/549/1958 1508/1606/1999 2004/2103/2000 1485/1582/1956 +f 1508/1606/1999 497/545/1974 1497/1594/1980 2004/2103/2000 +f 2004/2103/2000 1497/1594/1980 495/543/1982 1506/1604/1996 +f 1485/1582/1956 2004/2103/2000 1506/1604/1996 503/551/1950 +f 496/544/1970 1492/1589/1969 2005/2104/2001 1507/1605/1998 +f 498/546/1962 1488/1585/1961 2005/2104/2001 1492/1589/1969 +f 500/548/1954 1507/1605/1998 2005/2104/2001 1488/1585/1961 +f 501/549/1958 1489/1586/1964 2006/2105/2002 1508/1606/1999 +f 499/547/1966 1493/1590/1972 2006/2105/2002 1489/1586/1964 +f 497/545/1974 1508/1606/1999 2006/2105/2002 1493/1590/1972 +f 314/338/1376 1233/1307/1452 2007/2106/2003 1509/1607/2004 +f 1233/1307/1452 382/413/1445 1343/1431/1673 2007/2106/2003 +f 2007/2106/2003 1343/1431/1673 388/423/1523 1499/1597/1984 +f 1509/1607/2004 2007/2106/2003 1499/1597/1984 506/554/1986 +f 389/425/1532 1348/1439/1680 2008/2107/2005 1502/1600/1989 +f 1348/1439/1680 383/416/1449 1234/1309/1454 2008/2107/2005 +f 2008/2107/2005 1234/1309/1454 315/341/1386 1510/1609/2006 +f 1502/1600/1989 2008/2107/2005 1510/1609/2006 507/556/1990 +f 314/339/1376 1509/1608/2004 2009/2108/2007 1253/1329/1491 +f 1509/1608/2004 506/555/1986 1504/1602/1993 2009/2108/2007 +f 2009/2108/2007 1504/1602/1993 504/552/1942 1511/1610/2008 +f 1253/1329/1491 2009/2108/2007 1511/1610/2008 322/351/1493 +f 505/553/1945 1505/1603/1995 2010/2109/2009 1512/1611/2010 +f 1505/1603/1995 507/556/1990 1510/1609/2006 2010/2109/2009 +f 2010/2109/2009 1510/1609/2006 315/341/1386 1258/1335/1502 +f 1512/1611/2010 2010/2109/2009 1258/1335/1502 323/353/1501 +f 320/347/1471 1261/1339/1508 2011/2110/2011 1337/1424/1661 +f 1261/1339/1508 322/351/1493 1511/1610/2008 2011/2110/2011 +f 2011/2110/2011 1511/1610/2008 504/552/1942 1478/1575/1941 +f 1337/1424/1661 2011/2110/2011 1478/1575/1941 390/426/1590 +f 505/553/1945 1512/1611/2010 2012/2111/2012 1481/1578/1946 +f 1512/1611/2010 323/353/1501 1264/1343/1512 2012/2111/2012 +f 2012/2111/2012 1264/1343/1512 321/349/1476 1340/1427/1666 +f 1481/1578/1946 2012/2111/2012 1340/1427/1666 391/427/1596 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj.import new file mode 100644 index 0000000..1549bd2 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj.import @@ -0,0 +1,21 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://dsgni0xlkinot" +path="res://.godot/imported/suzanne_high_poly.obj-8ab0a95ff7200a59fcdea7f04af6a3e8.mesh" + +[deps] + +files=["res://.godot/imported/suzanne_high_poly.obj-8ab0a95ff7200a59fcdea7f04af6a3e8.mesh"] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj" +dest_files=["res://.godot/imported/suzanne_high_poly.obj-8ab0a95ff7200a59fcdea7f04af6a3e8.mesh", "res://.godot/imported/suzanne_high_poly.obj-8ab0a95ff7200a59fcdea7f04af6a3e8.mesh"] + +[params] + +generate_tangents=true +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +optimize_mesh=true diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/CC0LICENCE.txt b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/CC0LICENCE.txt new file mode 100644 index 0000000..4b3d1e4 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/CC0LICENCE.txt @@ -0,0 +1,320 @@ +Creative Commons Legal Code + +Attribution 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + e. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + f. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + g. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + h. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + i. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(b), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(b), as requested. + b. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4 (b) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + c. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. + diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png new file mode 100644 index 0000000..d479ce9 Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png.import new file mode 100644 index 0000000..7f43dd9 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhfswrmammtnt" +path.s3tc="res://.godot/imported/moss_orm_albedo.png-c8acb6d13a013d9b15804d23ea5fc898.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" +dest_files=["res://.godot/imported/moss_orm_albedo.png-c8acb6d13a013d9b15804d23ea5fc898.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png new file mode 100644 index 0000000..4ee737a Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png.import new file mode 100644 index 0000000..87457b1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfqtmhy5iwqak" +path.s3tc="res://.godot/imported/moss_orm_heightmap.png-d24f17278ec7c8f315aabe6e814f6ce9.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_heightmap.png" +dest_files=["res://.godot/imported/moss_orm_heightmap.png-d24f17278ec7c8f315aabe6e814f6ce9.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=7 +roughness/src_normal="res://addons/VisualShaderExtras/dbat/dev/materials/moss_orm_normal.png" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png new file mode 100644 index 0000000..c09c9ad Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png.import new file mode 100644 index 0000000..11ee84f --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ms6yr1tx6aq8" +path.s3tc="res://.godot/imported/moss_orm_normal.png-9a26f298d887fee67464771459244bba.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png" +dest_files=["res://.godot/imported/moss_orm_normal.png-9a26f298d887fee67464771459244bba.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://addons/VisualShaderExtras/dbat/dev/materials/moss_orm_normal.png" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png new file mode 100644 index 0000000..863c774 Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png.import new file mode 100644 index 0000000..e3bff0b --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqtpccn3wemel" +path.s3tc="res://.godot/imported/moss_orm_orm.png-468ca1feb8d411ee321feb7f8ada844a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png" +dest_files=["res://.godot/imported/moss_orm_orm.png-468ca1feb8d411ee321feb7f8ada844a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png new file mode 100644 index 0000000..92d086a Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png.import new file mode 100644 index 0000000..c9d7d5c --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq3jk3ga3vpy8" +path.s3tc="res://.godot/imported/rock_orm_albedo.png-6996258c6b7373c785b1b87d9f76865f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" +dest_files=["res://.godot/imported/rock_orm_albedo.png-6996258c6b7373c785b1b87d9f76865f.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png new file mode 100644 index 0000000..5bf36c4 Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png.import new file mode 100644 index 0000000..48da2f7 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://33ty6m6q8j0k" +path.s3tc="res://.godot/imported/rock_orm_heightmap.png-66d270ec5c1efff8d8aee6efaa76a826.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png" +dest_files=["res://.godot/imported/rock_orm_heightmap.png-66d270ec5c1efff8d8aee6efaa76a826.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=7 +roughness/src_normal="res://addons/VisualShaderExtras/dbat/dev/materials/rock_orm_normal.png" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png new file mode 100644 index 0000000..8b2eccd Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png.import new file mode 100644 index 0000000..bd85719 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq1popjjfe6u8" +path.s3tc="res://.godot/imported/rock_orm_normal.png-513200012d426804642358de46ecfa39.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" +dest_files=["res://.godot/imported/rock_orm_normal.png-513200012d426804642358de46ecfa39.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://addons/VisualShaderExtras/dbat/dev/materials/rock_orm_normal.png" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png new file mode 100644 index 0000000..db72ea4 Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png.import new file mode 100644 index 0000000..e2cf411 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccra6c4ccwuya" +path.s3tc="res://.godot/imported/rock_orm_orm.png-5729f3a6adc7915b4fc8e3b9314828ae.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png" +dest_files=["res://.godot/imported/rock_orm_orm.png-5729f3a6adc7915b4fc8e3b9314828ae.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tres new file mode 100644 index 0000000..01e573b --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tres @@ -0,0 +1,84 @@ +[gd_resource type="VisualShader" load_steps=8 format=3 uid="uid://dslnddtvc43tl"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Filters/LodBlur.gd" id="1_nbohf"] + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_jfkp4"] +parameter_name = "Texture2DParameter" +texture_type = 1 +texture_filter = 6 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_8pvek"] +default_input_values = [2, 1.115] +initialized = true +script = ExtResource("1_nbohf") + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_r8lli"] +input_name = "time" + +[sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_q7lk4"] +function = 1 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_4wbml"] +default_input_values = [0, 0.0, 1, 10.0] +operator = 2 + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_o5xae"] +size = Vector2(398.8, 431.5) +description = "Be sure to choose a Filter that mentions Mimaps, +like Linear Mipmap or Nearest Mipmap." + +[resource] +code = "shader_type canvas_item; +uniform sampler2D Texture2DParameter : source_color, filter_linear_mipmap_anisotropic; + + + +void fragment() { +// Input:5 + float n_out5p0 = TIME; + + +// FloatFunc:6 + float n_out6p0 = cos(n_out5p0); + + +// FloatOp:7 + float n_in7p1 = 10.00000; + float n_out7p0 = n_out6p0 * n_in7p1; + + + vec3 n_out3p0; +// LoDBlur:3 + { + + //When the sampler is set to Linear Mipmap it works best. + //The Bias will cause blurring. + vec4 color = textureLod(Texture2DParameter, UV, n_out7p0); + n_out3p0 = color.rgb; + + } + + +// Output:0 + COLOR.rgb = n_out3p0; + + +} +" +graph_offset = Vector2(-557.787, -57.854) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(500, 120) +nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_jfkp4") +nodes/fragment/2/position = Vector2(-280, 280) +nodes/fragment/3/node = SubResource("VisualShaderNodeCustom_8pvek") +nodes/fragment/3/position = Vector2(220, 180) +nodes/fragment/5/node = SubResource("VisualShaderNodeInput_r8lli") +nodes/fragment/5/position = Vector2(-560, 40) +nodes/fragment/6/node = SubResource("VisualShaderNodeFloatFunc_q7lk4") +nodes/fragment/6/position = Vector2(-260, 20) +nodes/fragment/7/node = SubResource("VisualShaderNodeFloatOp_4wbml") +nodes/fragment/7/position = Vector2(-47.2, 39.6) +nodes/fragment/8/node = SubResource("VisualShaderNodeComment_o5xae") +nodes/fragment/8/position = Vector2(-340, 180) +nodes/fragment/connections = PackedInt32Array(2, 0, 3, 1, 3, 0, 0, 0, 5, 0, 6, 0, 6, 0, 7, 0, 7, 0, 3, 2) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tscn new file mode 100644 index 0000000..068f7b5 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=4 format=3 uid="uid://o0jl88m0fgfa"] + +[ext_resource type="Shader" uid="uid://dslnddtvc43tl" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_2d_demo.tres" id="1_6t74a"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" id="1_wby0f"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_gswws"] +shader = ExtResource("1_6t74a") +shader_parameter/Texture2DParameter = ExtResource("1_wby0f") + +[node name="blur_2d_demo" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_gswws") +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("1_wby0f") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_demo.tscn new file mode 100644 index 0000000..64d0fc6 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_demo.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=5 format=3 uid="uid://c701c1dkmygbt"] + +[ext_resource type="Shader" uid="uid://kettq437klka" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_vshader_demo.tres" id="1_8qkj1"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" id="2_64tgo"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_xbehk"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mjkcc"] +render_priority = 0 +shader = ExtResource("1_8qkj1") +shader_parameter/Blur = 2.238 +shader_parameter/Texture2DParameter = ExtResource("2_64tgo") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +mesh = SubResource("PlaneMesh_xbehk") +surface_material_override/0 = SubResource("ShaderMaterial_mjkcc") + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.591145, 0, 0.612761) +omni_range = 1.28321 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_vshader_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_vshader_demo.tres new file mode 100644 index 0000000..bbe43e1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/blur/blur_3d_vshader_demo.tres @@ -0,0 +1,66 @@ +[gd_resource type="VisualShader" load_steps=6 format=3 uid="uid://kettq437klka"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Filters/LodBlur.gd" id="1_u5y11"] + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_qxj8l"] +parameter_name = "Texture2DParameter" +texture_type = 1 +texture_filter = 4 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_e5pk6"] +default_input_values = [2, 1.115] +initialized = true +script = ExtResource("1_u5y11") + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_k3rmt"] +parameter_name = "Blur" +hint = 1 +max = 10.0 +default_value_enabled = true + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_kmo4s"] +size = Vector2(315.035, 321.918) +description = "Be sure to choose a Filter that mentions Mimaps, +like Linear Mipmap or Nearest Mipmap." + +[resource] +code = "shader_type spatial; +uniform sampler2D Texture2DParameter : source_color, filter_linear_mipmap; +uniform float Blur : hint_range(0, 10) = 0; + + + +void fragment() { +// FloatParameter:23 + float n_out23p0 = Blur; + + + vec3 n_out22p0; +// LoDBlur:22 + { + + //When the sampler is set to Linear Mipmap it works best. + //The Bias will cause blurring. + vec4 color = textureLod(Texture2DParameter, UV, n_out23p0); + n_out22p0 = color.rgb; + + } + + +// Output:0 + ALBEDO = n_out22p0; + + +} +" +graph_offset = Vector2(-854.796, 594.999) +nodes/fragment/0/position = Vector2(-220, 1060) +nodes/fragment/18/node = SubResource("VisualShaderNodeTexture2DParameter_qxj8l") +nodes/fragment/18/position = Vector2(-980, 1240) +nodes/fragment/22/node = SubResource("VisualShaderNodeCustom_e5pk6") +nodes/fragment/22/position = Vector2(-580, 1140) +nodes/fragment/23/node = SubResource("VisualShaderNodeFloatParameter_k3rmt") +nodes/fragment/23/position = Vector2(-980, 960) +nodes/fragment/24/node = SubResource("VisualShaderNodeComment_kmo4s") +nodes/fragment/24/position = Vector2(-680, 1040) +nodes/fragment/connections = PackedInt32Array(18, 0, 22, 1, 23, 0, 22, 2, 22, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tres new file mode 100644 index 0000000..76b2450 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tres @@ -0,0 +1,101 @@ +[gd_resource type="VisualShader" load_steps=10 format=3 uid="uid://b2cetgw0m1pcp"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Usability/ColorMask.gd" id="1_8hvao"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" id="2_lfyqb"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_ipv1k"] +output_port_for_preview = 0 +default_input_values = [2, 0.401] +initialized = true +script = ExtResource("1_8hvao") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_j6g58"] +source = 5 +texture = ExtResource("2_lfyqb") + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_p8f0m"] +constant = Color(0.258824, 0.556863, 0.741176, 1) + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_2i2pe"] +constant = Color(0.910156, 0.842927, 0.061996, 1) + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_0172k"] +constant = Color(0.1, 0.075, 1, 1) + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_jdtvy"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 0.5] +op_type = 4 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_ticoq"] +parameter_name = "Texture2DParameter" +texture_type = 1 +texture_filter = 2 + +[resource] +code = "shader_type canvas_item; +uniform sampler2D Texture2DParameter : source_color, filter_linear; + + +// ColorMask + +float compare_VisualShaderNodeCustomColorMask(vec4 in1, vec4 in2, float fuzz) +{ + return dot(abs(in1-in2), vec4(fuzz)); +} + + +void fragment() { +// ColorConstant:7 + vec4 n_out7p0 = vec4(0.100000, 0.075000, 1.000000, 1.000000); + + +// ColorConstant:5 + vec4 n_out5p0 = vec4(0.910156, 0.842927, 0.061996, 1.000000); + + + vec4 n_out3p0; +// Texture2D:3 + n_out3p0 = texture(Texture2DParameter, UV); + + +// ColorConstant:4 + vec4 n_out4p0 = vec4(0.258824, 0.556863, 0.741176, 1.000000); + + + float n_out10p0; +// ColorMask:10 + float n_in10p2 = 0.40100; + { + n_out10p0 = compare_VisualShaderNodeCustomColorMask(n_out3p0,n_out4p0,n_in10p2); + } + + +// Mix:8 + vec3 n_out8p0 = mix(vec3(n_out7p0.xyz), vec3(n_out5p0.xyz), n_out10p0); + + +// Output:0 + COLOR.rgb = n_out8p0; + + +} +" +graph_offset = Vector2(-251.532, 99.1847) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(720, 140) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_j6g58") +nodes/fragment/3/position = Vector2(-180, 60) +nodes/fragment/4/node = SubResource("VisualShaderNodeColorConstant_p8f0m") +nodes/fragment/4/position = Vector2(-120, 340) +nodes/fragment/5/node = SubResource("VisualShaderNodeColorConstant_2i2pe") +nodes/fragment/5/position = Vector2(280, 60) +nodes/fragment/7/node = SubResource("VisualShaderNodeColorConstant_0172k") +nodes/fragment/7/position = Vector2(360, 320) +nodes/fragment/8/node = SubResource("VisualShaderNodeMix_jdtvy") +nodes/fragment/8/position = Vector2(540, 140) +nodes/fragment/9/node = SubResource("VisualShaderNodeTexture2DParameter_ticoq") +nodes/fragment/9/position = Vector2(-580, 100) +nodes/fragment/10/node = SubResource("VisualShaderNodeCustom_ipv1k") +nodes/fragment/10/position = Vector2(60, 180) +nodes/fragment/connections = PackedInt32Array(9, 0, 3, 2, 7, 0, 8, 0, 5, 0, 8, 1, 8, 0, 0, 0, 3, 0, 10, 0, 4, 0, 10, 1, 10, 0, 8, 2) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tscn new file mode 100644 index 0000000..2fb7eb9 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=4 format=3 uid="uid://d0lrqgqpsrv3c"] + +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_2d_demo.tres" id="1_yj4qn"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" id="2_k005x"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_sgbdy"] +shader = ExtResource("1_yj4qn") +shader_parameter/Texture2DParameter = ExtResource("2_k005x") + +[node name="compare_2d_demo" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_sgbdy") +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_k005x") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_demo.tscn new file mode 100644 index 0000000..c1c42ac --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_demo.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Shader" uid="uid://24d7sb5fq4d1" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/color_mask/color_mask_3d_vshader.tres" id="1_04drd"] +[ext_resource type="ArrayMesh" uid="uid://bcv4ug57hcmnt" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/suzanne.obj" id="1_b56b5"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_pcei7"] +render_priority = 0 +shader = ExtResource("1_04drd") + +[node name="Node3D" type="Node3D"] + +[node name="suzanne" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.566285, 0.0365433, 0.0734995) +mesh = ExtResource("1_b56b5") +surface_material_override/0 = SubResource("ShaderMaterial_pcei7") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_vshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_vshader.tres new file mode 100644 index 0000000..78717eb --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/color_mask_3d_vshader.tres @@ -0,0 +1,141 @@ +[gd_resource type="VisualShader" load_steps=14 format=3 uid="uid://24d7sb5fq4d1"] + +[ext_resource type="Texture2D" uid="uid://x3a0rntfqelx" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/color_mask/ids.png" id="1_ebv2o"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Usability/ColorMask.gd" id="2_x61a6"] + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_818w5"] +expanded_output_ports = [0] +constant = Color(1, 0, 0.122976, 1) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_p3lqc"] +texture = ExtResource("1_ebv2o") + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_ft6g2"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] +op_type = 3 + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_8go02"] +expanded_output_ports = [0] +constant = Color(0, 1, 0, 1) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ex3cp"] +texture = ExtResource("1_ebv2o") + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_e7w87"] +expanded_output_ports = [0] +constant = Color(0.753906, 0.0638833, 0.21712, 1) + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_ecxay"] +default_input_values = [2, 1.0] +initialized = true +script = ExtResource("2_x61a6") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_jbyxt"] +default_input_values = [2, 1.0] +initialized = true +script = ExtResource("2_x61a6") + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_25vsa"] +expanded_output_ports = [0] +constant = Color(0.927566, 1, 0.317803, 1) + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_yt6sb"] +expanded_output_ports = [0] +constant = Color(0.342032, 0.532908, 1, 1) + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_b21m3"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] +op_type = 3 + +[resource] +code = "shader_type spatial; +uniform sampler2D tex_frg_15; +uniform sampler2D tex_frg_19; + + +// ColorMask + +float compare_VisualShaderNodeCustomColorMask(vec4 in1, vec4 in2, float fuzz) +{ + return dot(abs(in1-in2), vec4(fuzz)); +} + + +void fragment() { +// ColorConstant:21 + vec4 n_out21p0 = vec4(0.753906, 0.063883, 0.217120, 1.000000); + + +// ColorConstant:5 + vec4 n_out5p0 = vec4(0.342032, 0.532908, 1.000000, 1.000000); + + +// ColorConstant:4 + vec4 n_out4p0 = vec4(0.927566, 1.000000, 0.317803, 1.000000); + + +// Texture2D:15 + vec4 n_out15p0 = texture(tex_frg_15, UV); + + +// ColorConstant:13 + vec4 n_out13p0 = vec4(1.000000, 0.000000, 0.122976, 1.000000); + + + float n_out24p0; +// ColorMask:24 + float n_in24p2 = 1.00000; + + +// Mix:8 + vec3 n_out8p0 = mix(vec3(n_out5p0.xyz), vec3(n_out4p0.xyz), vec3(n_out24p0)); + + +// Texture2D:19 + vec4 n_out19p0 = texture(tex_frg_19, UV); + + +// ColorConstant:18 + vec4 n_out18p0 = vec4(0.000000, 1.000000, 0.000000, 1.000000); + + + float n_out25p0; +// ColorMask:25 + float n_in25p2 = 1.00000; + + +// Mix:16 + vec3 n_out16p0 = mix(vec3(n_out21p0.xyz), n_out8p0, vec3(n_out25p0)); + + +// Output:0 + ALBEDO = n_out16p0; + + +} +" +graph_offset = Vector2(-366.242, 238.839) +nodes/fragment/0/position = Vector2(400, 200) +nodes/fragment/4/node = SubResource("VisualShaderNodeColorConstant_25vsa") +nodes/fragment/4/position = Vector2(-720, 280) +nodes/fragment/5/node = SubResource("VisualShaderNodeColorConstant_yt6sb") +nodes/fragment/5/position = Vector2(-720, 80) +nodes/fragment/8/node = SubResource("VisualShaderNodeMix_b21m3") +nodes/fragment/8/position = Vector2(-380, 200) +nodes/fragment/13/node = SubResource("VisualShaderNodeColorConstant_818w5") +nodes/fragment/13/position = Vector2(-920, 760) +nodes/fragment/15/node = SubResource("VisualShaderNodeTexture_p3lqc") +nodes/fragment/15/position = Vector2(-1000, 460) +nodes/fragment/16/node = SubResource("VisualShaderNodeMix_ft6g2") +nodes/fragment/16/position = Vector2(120, 340) +nodes/fragment/18/node = SubResource("VisualShaderNodeColorConstant_8go02") +nodes/fragment/18/position = Vector2(-320, 660) +nodes/fragment/19/node = SubResource("VisualShaderNodeTexture_ex3cp") +nodes/fragment/19/position = Vector2(-380, 400) +nodes/fragment/21/node = SubResource("VisualShaderNodeColorConstant_e7w87") +nodes/fragment/21/position = Vector2(-40, 140) +nodes/fragment/24/node = SubResource("VisualShaderNodeCustom_ecxay") +nodes/fragment/24/position = Vector2(-700, 560) +nodes/fragment/25/node = SubResource("VisualShaderNodeCustom_jbyxt") +nodes/fragment/25/position = Vector2(-120, 520) +nodes/fragment/connections = PackedInt32Array(5, 0, 8, 0, 16, 0, 0, 0, 21, 0, 16, 0, 8, 0, 16, 1, 4, 0, 8, 1, 15, 0, 24, 0, 13, 0, 24, 1, 24, 0, 8, 2, 19, 0, 25, 0, 18, 0, 25, 1, 25, 0, 16, 2) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png new file mode 100644 index 0000000..eb823e9 Binary files /dev/null and b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png differ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png.import b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png.import new file mode 100644 index 0000000..d5297e4 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x3a0rntfqelx" +path.s3tc="res://.godot/imported/ids.png-ed052388bc058ed5bbf311fd75b7e4e7.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/color_mask/ids.png" +dest_files=["res://.godot/imported/ids.png-ed052388bc058ed5bbf311fd75b7e4e7.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_2d_demo.tscn new file mode 100644 index 0000000..419aa1b --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_2d_demo.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=5 format=3 uid="uid://dtb5yrmgc2oew"] + +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_demo.tres" id="1_8i6o1"] +[ext_resource type="Texture2D" uid="uid://dhfswrmammtnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" id="3_8270c"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/icon.svg" id="4_fftsb"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tv3gx"] +shader = ExtResource("1_8i6o1") +shader_parameter/ForeGroundAlbedo = ExtResource("3_8270c") + +[node name="Node2D" type="Node2D"] +metadata/_edit_horizontal_guides_ = [38.0] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_tv3gx") +offset_right = 64.0 +offset_bottom = 64.0 +texture = ExtResource("4_fftsb") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_demo.tres new file mode 100644 index 0000000..ebf8293 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/mask_blend/mask_blend_demo.tres @@ -0,0 +1,126 @@ +[gd_resource type="VisualShader" load_steps=13 format=3 uid="uid://g43soywhstow"] + +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_1sqgn"] +[ext_resource type="Texture2D" uid="uid://dhfswrmammtnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" id="2_814ee"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/MaskBlend.gd" id="3_52467"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_5sxjw"] +output_port_for_preview = 0 +default_input_values = [0, 0.0, 1, 0.1, 2, 0.969] +initialized = true +script = ExtResource("3_52467") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_3k2pa"] +texture = ExtResource("2_1sqgn") + +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_kxghh"] + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_rov27"] +output_port_for_preview = 0 +default_input_values = [0, 1.337, 1, 0.425] +operator = 1 + +[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_dbcma"] +constant = 0.064 + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_f7ewi"] +constant = Color(0.986059, 1, 0.115219, 1) + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_338pd"] +source = 5 +texture = ExtResource("2_814ee") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_orcc3"] +parameter_name = "ForeGroundAlbedo" +texture_type = 1 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_3p70w"] +default_input_values = [0, Vector2(0, 0), 1, Vector2(1, 1), 2, Vector2(0, 0)] +op_type = 1 + +[resource] +code = "shader_type canvas_item; +uniform sampler2D ForeGroundAlbedo : source_color, filter_linear; +uniform sampler2D tex_frg_18; + + +// MaskBlend + +float mask_blend_VisualShaderNodeMaskBlend(float offset, float fade, float mask_in) { + offset *= -1.; + return smoothstep(offset - fade, offset + fade, mask_in); +} + +void fragment() { + vec4 n_out4p0; +// Texture2D:4 + n_out4p0 = texture(ForeGroundAlbedo, UV); + + +// ColorConstant:25 + vec4 n_out25p0 = vec4(0.986059, 1.000000, 0.115219, 1.000000); + + +// Texture2D:18 + vec4 n_out18p0 = texture(tex_frg_18, UV); + + +// VectorDecompose:20 + float n_out20p0 = vec3(n_out18p0.xyz).x; + float n_out20p1 = vec3(n_out18p0.xyz).y; + float n_out20p2 = vec3(n_out18p0.xyz).z; + + +// FloatOp:21 + float n_in21p1 = 0.42500; + float n_out21p0 = n_out20p0 - n_in21p1; + + +// FloatConstant:24 + float n_out24p0 = 0.064000; + + + float n_out17p0; +// MaskBlend:17 + float n_in17p1 = 0.10000; + { + + n_out17p0 = mask_blend_VisualShaderNodeMaskBlend(n_in17p1, n_out24p0, n_out21p0); + } + + +// Mix:9 + vec2 n_out9p0 = mix(vec2(n_out4p0.xy), vec2(n_out25p0.xy), vec2(n_out17p0)); + + +// Output:0 + COLOR.rgb = vec3(n_out9p0, 0.0); + + +} +" +graph_offset = Vector2(-241.826, -17.4916) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(960, 380) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture_338pd") +nodes/fragment/4/position = Vector2(20, 440) +nodes/fragment/5/node = SubResource("VisualShaderNodeTexture2DParameter_orcc3") +nodes/fragment/5/position = Vector2(-400, 360) +nodes/fragment/9/node = SubResource("VisualShaderNodeMix_3p70w") +nodes/fragment/9/position = Vector2(740, 320) +nodes/fragment/17/node = SubResource("VisualShaderNodeCustom_5sxjw") +nodes/fragment/17/position = Vector2(400, 280) +nodes/fragment/18/node = SubResource("VisualShaderNodeTexture_3k2pa") +nodes/fragment/18/position = Vector2(-300, 40) +nodes/fragment/20/node = SubResource("VisualShaderNodeVectorDecompose_kxghh") +nodes/fragment/20/position = Vector2(-40, 140) +nodes/fragment/21/node = SubResource("VisualShaderNodeFloatOp_rov27") +nodes/fragment/21/position = Vector2(200, 20) +nodes/fragment/24/node = SubResource("VisualShaderNodeFloatConstant_dbcma") +nodes/fragment/24/position = Vector2(140, 340) +nodes/fragment/25/node = SubResource("VisualShaderNodeColorConstant_f7ewi") +nodes/fragment/25/position = Vector2(460, 580) +nodes/fragment/connections = PackedInt32Array(5, 0, 4, 2, 4, 0, 9, 0, 9, 0, 0, 0, 18, 0, 20, 0, 21, 0, 17, 0, 20, 0, 21, 0, 24, 0, 17, 2, 17, 0, 9, 2, 25, 0, 9, 1) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_3d_demo.tscn new file mode 100644 index 0000000..517c0eb --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_3d_demo.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=5 format=3 uid="uid://5ru3wh11ggej"] + +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_demo.tres" id="1_pviys"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" id="2_8lq7g"] + +[sub_resource type="SphereMesh" id="SphereMesh_27ab8"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_n806v"] +render_priority = 0 +shader = ExtResource("1_pviys") +shader_parameter/BackgroundNormalMap = ExtResource("2_8lq7g") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("SphereMesh_27ab8") +surface_material_override/0 = SubResource("ShaderMaterial_n806v") + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.822552) +light_color = Color(0.392157, 0.584314, 1, 1) +light_energy = 5.392 +omni_range = 0.981 +omni_attenuation = 0.68302 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_demo.tres new file mode 100644 index 0000000..4672f83 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/normalmap_z/normalmap_z_demo.tres @@ -0,0 +1,105 @@ +[gd_resource type="VisualShader" load_steps=8 format=3 uid="uid://bipfyvih68a8j"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/NormalMapZ.gd" id="1_e7ynp"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="2_r8ej1"] +[ext_resource type="Texture2D" uid="uid://33ty6m6q8j0k" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_heightmap.png" id="3_d5ylu"] + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_i7wow"] +parameter_name = "BackgroundNormalMap" +texture_type = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_574f2"] +default_input_values = [2, 0.0] +initialized = true +script = ExtResource("1_e7ynp") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_oxktn"] +texture = ExtResource("2_r8ej1") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_eihfq"] +texture = ExtResource("3_d5ylu") + +[resource] +code = "shader_type spatial; +uniform sampler2D tex_frg_15 : source_color; +uniform sampler2D BackgroundNormalMap : hint_normal, filter_linear; +uniform sampler2D tex_frg_16; + + +// RestoreNormalMapZ + +// Godot strips the z value from imported Normal Maps. +// It does this for two reasons: +// 1. Obtaining better compression because the z can be calculated by shader. +// Compression boosts speed of CPU to GPU transfer. +// 2. On mobile devices they do not do that calculation. They either ignore the z +// or do some other calculation, but the normal one (below) is apparently too slow +// or power-hungry for mobile devices. +// +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +vec3 normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + vec3 normal_map_texture, + vec2 inuv, + vec3 _TANGENT, + vec3 _BINORMAL, + vec3 _NORMAL) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + + // Unpack the background normal map. + vec3 bg_normal = normal_map_texture * 2.0 - 1.0; + + // Recalculate z-component of the normal map with the Pythagorean theorem. + bg_normal.z = sqrt(1.0 - bg_normal.x * bg_normal.x - bg_normal.y * bg_normal.y); + + // Apply the tangent-space normal map to the view-space normals. + vec3 normal_applied = bg_normal.x * _TANGENT + bg_normal.y * _BINORMAL + bg_normal.z * _NORMAL; + return normal_applied; +} + +void fragment() { +// Texture2D:15 + vec4 n_out15p0 = texture(tex_frg_15, UV); + + + vec3 n_out14p0; +// RestoreNormalMapZ:14 + { + + vec3 normal_map_texture = textureLod(BackgroundNormalMap, UV, 0.).rgb; + + n_out14p0 = normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + normal_map_texture, + UV, + TANGENT, + BINORMAL, + NORMAL); + + } + + +// Texture2D:16 + vec4 n_out16p0 = texture(tex_frg_16, UV); + + +// Output:0 + ALBEDO = vec3(n_out15p0.xyz); + NORMAL_MAP = n_out14p0; + NORMAL_MAP_DEPTH = n_out16p0.x; + + +} +" +graph_offset = Vector2(380.796, -134.965) +nodes/fragment/0/position = Vector2(1540, -80) +nodes/fragment/12/node = SubResource("VisualShaderNodeTexture2DParameter_i7wow") +nodes/fragment/12/position = Vector2(580, 40) +nodes/fragment/14/node = SubResource("VisualShaderNodeCustom_574f2") +nodes/fragment/14/position = Vector2(1080, 140) +nodes/fragment/15/node = SubResource("VisualShaderNodeTexture_oxktn") +nodes/fragment/15/position = Vector2(1140, -120) +nodes/fragment/16/node = SubResource("VisualShaderNodeTexture_eihfq") +nodes/fragment/16/position = Vector2(1080, 240) +nodes/fragment/connections = PackedInt32Array(12, 0, 14, 1, 14, 0, 0, 9, 15, 0, 0, 0, 16, 0, 0, 10) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pm_demo_3d.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pm_demo_3d.tres new file mode 100644 index 0000000..7eecdf1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pm_demo_3d.tres @@ -0,0 +1,149 @@ +[gd_resource type="VisualShader" load_steps=10 format=3 uid="uid://6gmb8xxcbpq"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/UV/ParallaxMapping.gd" id="1_l416p"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/TextureStack.gd" id="2_i20sn"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_qibuv"] +default_input_values = [2, 32.0, 3, 2, 4, 32, 5, Vector2(1, 1)] +initialized = true +script = ExtResource("1_l416p") + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_clofw"] +parameter_name = "RockHeight" +color_default = 1 +texture_filter = 4 +texture_repeat = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_g6kfu"] +parameter_name = "RockAlbedo" +texture_type = 1 +texture_filter = 4 +texture_repeat = 1 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_yygue"] +initialized = true +script = ExtResource("2_i20sn") + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_qnp5j"] +parameter_name = "RockNormalMap" +texture_type = 2 +texture_filter = 4 +texture_repeat = 1 + +[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_7fnxx"] +default_input_values = [1, Vector2(8, 8), 2, Vector2(0, 0)] +function = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_hw5fa"] +parameter_name = "RockORM" +texture_filter = 4 +texture_repeat = 1 + +[resource] +code = "shader_type spatial; +uniform sampler2D RockHeight : hint_default_black, filter_linear_mipmap, repeat_enable; +uniform sampler2D RockAlbedo : source_color, filter_linear_mipmap, repeat_enable; +uniform sampler2D RockORM : filter_linear_mipmap, repeat_enable; +uniform sampler2D RockNormalMap : hint_normal, filter_linear_mipmap, repeat_enable; + + + +void fragment() { +// UVFunc:7 + vec2 n_in7p1 = vec2(8.00000, 8.00000); + vec2 n_in7p2 = vec2(0.00000, 0.00000); + vec2 n_out7p0 = (UV - n_in7p2) * n_in7p1 + n_in7p2; + + + vec2 n_out2p0; + float n_out2p1; +// ParallaxMapping:2 + float n_in2p2 = 32.00000; + int n_in2p3 = 2; + int n_in2p4 = 32; + vec2 n_in2p5 = vec2(1.00000, 1.00000); + { + + // Code taken from Godot's Spatial Shader + float heightmap_scale = n_in2p2; + int heightmap_min_layers = n_in2p3; + int heightmap_max_layers = n_in2p4; + vec2 heightmap_flip = n_in2p5; + vec2 base_uv = n_out7p0; + { + vec3 view_dir = normalize(normalize(-VERTEX)*mat3(TANGENT*heightmap_flip.x,-BINORMAL*heightmap_flip.y,NORMAL)); + float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir))); + float layer_depth = 1.0 / num_layers; + float current_layer_depth = 0.0; + vec2 P = view_dir.xy * heightmap_scale * 0.01; + vec2 delta = P / num_layers; + vec2 ofs = base_uv; + float depth = 1.0 - texture(RockHeight, ofs).r; + float current_depth = 0.0; + while(current_depth < depth) { + ofs -= delta; + depth = 1.0 - texture(RockHeight, ofs).r; + current_depth += layer_depth; + } + vec2 prev_ofs = ofs + delta; + float after_depth = depth - current_depth; + float before_depth = ( 1.0 - texture(RockHeight, prev_ofs).r ) - current_depth + layer_depth; + float weight = after_depth / (after_depth - before_depth); + ofs = mix(ofs,prev_ofs,weight); + + n_out2p0 = ofs; + n_out2p1 = layer_depth; + } + } + + + vec2 n_out5p0; + vec4 n_out5p1; + vec3 n_out5p2; + float n_out5p3; + float n_out5p4; + float n_out5p5; + vec3 n_out5p6; + float n_out5p7; +// TextureStack:5 + { + n_out5p1 = textureLod(RockAlbedo, n_out2p0, 0.); + + n_out5p3 = textureLod(RockORM, n_out2p0, 0.).r; + n_out5p4 = textureLod(RockORM, n_out2p0, 0.).g; + n_out5p5 = textureLod(RockORM, n_out2p0, 0.).b; + + n_out5p6 = textureLod(RockNormalMap, n_out2p0, 0.).rgb; + + + n_out5p0 = n_out2p0; + } + + +// Output:0 + ALBEDO = vec3(n_out5p1.xyz); + METALLIC = n_out5p5; + ROUGHNESS = n_out5p4; + AO = n_out5p3; + NORMAL_MAP = n_out5p6; + NORMAL_MAP_DEPTH = n_out2p1; + + +} +" +graph_offset = Vector2(-327.691, 71.7735) +nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_qibuv") +nodes/fragment/2/position = Vector2(-260, 180) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_clofw") +nodes/fragment/3/position = Vector2(-840, 80) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture2DParameter_g6kfu") +nodes/fragment/4/position = Vector2(-840, 360) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_yygue") +nodes/fragment/5/position = Vector2(60, 260) +nodes/fragment/6/node = SubResource("VisualShaderNodeTexture2DParameter_qnp5j") +nodes/fragment/6/position = Vector2(-840, 920) +nodes/fragment/7/node = SubResource("VisualShaderNodeUVFunc_7fnxx") +nodes/fragment/7/position = Vector2(-520, 80) +nodes/fragment/8/node = SubResource("VisualShaderNodeTexture2DParameter_hw5fa") +nodes/fragment/8/position = Vector2(-840, 640) +nodes/fragment/connections = PackedInt32Array(3, 0, 2, 1, 5, 1, 0, 0, 4, 0, 5, 1, 2, 1, 0, 10, 6, 0, 5, 6, 5, 6, 0, 9, 8, 0, 5, 2, 5, 3, 0, 6, 5, 4, 0, 3, 5, 5, 0, 2, 2, 0, 5, 0, 7, 0, 2, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pmap_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pmap_3d_demo.tscn new file mode 100644 index 0000000..66ecd0c --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/parallax_mapping/pmap_3d_demo.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=8 format=3] + +[ext_resource type="ArrayMesh" uid="uid://dsgni0xlkinot" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/suzanne_high_poly.obj" id="1_73xfj"] +[ext_resource type="Shader" uid="uid://6gmb8xxcbpq" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/parallax_mapping/pm_demo_3d.tres" id="2_5wjnb"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_aah15"] +[ext_resource type="Texture2D" uid="uid://33ty6m6q8j0k" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_heightmap.png" id="4_nn2is"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_normal.png" id="5_nmwjw"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_orm.png" id="6_vqudy"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_jltqy"] +render_priority = 0 +shader = ExtResource("2_5wjnb") +shader_parameter/RockHeight = ExtResource("4_nn2is") +shader_parameter/RockAlbedo = ExtResource("3_aah15") +shader_parameter/RockORM = ExtResource("6_vqudy") +shader_parameter/RockNormalMap = ExtResource("5_nmwjw") + +[node name="Node3D" type="Node3D"] + +[node name="Suzanne" type="MeshInstance3D" parent="."] +mesh = ExtResource("1_73xfj") +surface_material_override/0 = SubResource("ShaderMaterial_jltqy") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.797005, 0, -0.603973, 0, 1, 0, 0.603973, 0, 0.797005, -0.377201, 0.974168, 1.60467) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn new file mode 100644 index 0000000..1e431e5 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_hk26s"] +[ext_resource type="Shader" uid="uid://o5p3xjges15i" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres" id="3_15e5f"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_1wqry"] +shader = ExtResource("3_15e5f") + +[node name="Node2D" type="Node2D"] + +[node name="TextureRect2" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_1wqry") +offset_right = 189.0 +offset_bottom = 180.0 +texture = ExtResource("2_hk26s") + +[node name="Label2" type="Label" parent="."] +offset_left = 10.0 +offset_top = 185.0 +offset_right = 176.0 +offset_bottom = 315.0 +text = "Rerouters Demo: +Shows Reroute and RerouteTransform nodes. +See the shader." +autowrap_mode = 2 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres new file mode 100644 index 0000000..f2dbbea --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres @@ -0,0 +1,149 @@ +[gd_resource type="VisualShader" load_steps=19 format=3 uid="uid://o5p3xjges15i"] + +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_cvh7q"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Usability/Rerouter.gd" id="2_oul58"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Usability/RerouteTransform.gd" id="3_q3ajf"] + +[sub_resource type="VisualShaderNodeVec2Constant" id="VisualShaderNodeVec2Constant_ha5ap"] +constant = Vector2(0.5, 0.3) + +[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_v1480"] +constant = 0.5 + +[sub_resource type="VisualShaderNodeIntConstant" id="VisualShaderNodeIntConstant_4p474"] + +[sub_resource type="VisualShaderNodeVec3Constant" id="VisualShaderNodeVec3Constant_uutbx"] +constant = Vector3(1, 1, 0) + +[sub_resource type="VisualShaderNodeVec4Constant" id="VisualShaderNodeVec4Constant_61tys"] +constant = Quaternion(-200, 0, -11.2, 100) + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_6r16i"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_sb1v3"] +initialized = true +script = ExtResource("2_oul58") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_a3wpn"] +texture = ExtResource("2_cvh7q") + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_b115i"] +default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(1, 1, 1, 1), 2, Quaternion(0.5, 0.5, 0.5, 0.5)] +op_type = 5 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_g7m7u"] +initialized = true +script = ExtResource("2_oul58") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_bntpv"] +initialized = true +script = ExtResource("3_q3ajf") + +[sub_resource type="VisualShaderNodeTransformFunc" id="VisualShaderNodeTransformFunc_1u1pl"] + +[sub_resource type="VisualShaderNodeTransformDecompose" id="VisualShaderNodeTransformDecompose_ntqfp"] + +[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_dd5ua"] +constant = Color(1, 0.386878, 0.342078, 1) + +[sub_resource type="VisualShaderNodeBooleanConstant" id="VisualShaderNodeBooleanConstant_yq66k"] + +[resource] +code = "shader_type canvas_item; +uniform sampler2D tex_frg_20; + + + +void fragment() { +// Texture2D:20 + vec4 n_out20p0 = texture(tex_frg_20, UV); + + +// ColorConstant:3 + vec4 n_out3p0 = vec4(1.000000, 0.386878, 0.342078, 1.000000); + + + vec4 n_out19p0; +// Reroute:19 + { + n_out19p0 = n_out3p0; + } + + +// FloatConstant:13 + float n_out13p0 = 0.500000; + + + vec4 n_out22p0; +// Reroute:22 + { + n_out22p0 = vec4(n_out13p0); + } + + +// Mix:21 + vec4 n_out21p0 = mix(n_out20p0, n_out19p0, n_out22p0); + + +// TransformFunc:25 + mat4 n_in25p0 = mat4(vec4(1.00000, 0.00000, 0.00000, 0.0), vec4(0.00000, 1.00000, 0.00000, 0.0), vec4(0.00000, 0.00000, 1.00000, 0.0), vec4(0.00000, 0.00000, 0.00000, 1.0)); + mat4 n_out25p0 = inverse(n_in25p0); + + + mat4 n_out24p0; +// RerouteTransform:24 + { + n_out24p0 = n_out25p0; + } + + +// TransformDecompose:26 + vec3 n_out26p0 = n_out24p0[0].xyz; + vec3 n_out26p1 = n_out24p0[1].xyz; + vec3 n_out26p2 = n_out24p0[2].xyz; + vec3 n_out26p3 = n_out24p0[3].xyz; + + +// Output:0 + COLOR.rgb = vec3(n_out21p0.xyz); + COLOR.a = n_out26p0.x; + + +} +" +graph_offset = Vector2(-147.082, -103.972) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(980, 200) +nodes/fragment/3/node = SubResource("VisualShaderNodeColorConstant_dd5ua") +nodes/fragment/3/position = Vector2(-60, 140) +nodes/fragment/8/node = SubResource("VisualShaderNodeBooleanConstant_yq66k") +nodes/fragment/8/position = Vector2(-40, 440) +nodes/fragment/12/node = SubResource("VisualShaderNodeVec2Constant_ha5ap") +nodes/fragment/12/position = Vector2(-20, 600) +nodes/fragment/13/node = SubResource("VisualShaderNodeFloatConstant_v1480") +nodes/fragment/13/position = Vector2(-40, 280) +nodes/fragment/14/node = SubResource("VisualShaderNodeIntConstant_4p474") +nodes/fragment/14/position = Vector2(0, 520) +nodes/fragment/15/node = SubResource("VisualShaderNodeVec3Constant_uutbx") +nodes/fragment/15/position = Vector2(-160, 700) +nodes/fragment/17/node = SubResource("VisualShaderNodeVec4Constant_61tys") +nodes/fragment/17/position = Vector2(-220, 800) +nodes/fragment/18/node = SubResource("VisualShaderNodeInput_6r16i") +nodes/fragment/18/position = Vector2(-160, 360) +nodes/fragment/19/node = SubResource("VisualShaderNodeCustom_sb1v3") +nodes/fragment/19/position = Vector2(380, 200) +nodes/fragment/20/node = SubResource("VisualShaderNodeTexture_a3wpn") +nodes/fragment/20/position = Vector2(240, -80) +nodes/fragment/21/node = SubResource("VisualShaderNodeMix_b115i") +nodes/fragment/21/position = Vector2(620, 100) +nodes/fragment/22/node = SubResource("VisualShaderNodeCustom_g7m7u") +nodes/fragment/22/position = Vector2(460, 320) +nodes/fragment/24/node = SubResource("VisualShaderNodeCustom_bntpv") +nodes/fragment/24/position = Vector2(360, 520) +nodes/fragment/25/node = SubResource("VisualShaderNodeTransformFunc_1u1pl") +nodes/fragment/25/position = Vector2(0, 900) +nodes/fragment/26/node = SubResource("VisualShaderNodeTransformDecompose_ntqfp") +nodes/fragment/26/position = Vector2(680, 380) +nodes/fragment/connections = PackedInt32Array(3, 0, 19, 0, 20, 0, 21, 0, 19, 0, 21, 1, 13, 0, 22, 0, 21, 0, 0, 0, 25, 0, 24, 0, 24, 0, 26, 0, 26, 0, 0, 1, 22, 0, 21, 2) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotate_uv_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotate_uv_2d_demo.tscn new file mode 100644 index 0000000..00510b0 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotate_uv_2d_demo.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Shader" uid="uid://b8sek0nh63rhw" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotateuvshader.tres" id="1_k13un"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_2cm2h"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ihqfp"] +shader = ExtResource("1_k13un") +shader_parameter/Texture2DParameter = ExtResource("2_2cm2h") + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_ihqfp") +layout_mode = 0 +offset_right = 128.0 +offset_bottom = 128.0 +texture = ExtResource("2_2cm2h") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotateuvshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotateuvshader.tres new file mode 100644 index 0000000..6db1af3 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rotateuv/rotateuvshader.tres @@ -0,0 +1,107 @@ +[gd_resource type="VisualShader" load_steps=10 format=3] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/UV/UVRotate.gd" id="1_lmtvb"] +[ext_resource type="Texture2D" uid="uid://ba7cojxxohdjb" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_2acqy"] + +[sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_kxpbt"] +function = 1 + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_oy211"] +default_input_values = [0, 0.0, 1, 0.691] +operator = 2 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_vwuqj"] +parameter_name = "Texture2DParameter" +texture_type = 1 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_2xe3x"] +source = 5 +texture = ExtResource("2_2acqy") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_1s4vi"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 1.235] +initialized = true +script = ExtResource("1_lmtvb") + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_h280l"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_cydmw"] +input_name = "time" + +[resource] +code = "shader_type canvas_item; +uniform sampler2D Texture2DParameter : source_color, filter_linear; + + +// UVRotateV2 + +// _angle in radians +vec2 vec2_rotate_VisualShaderExtrasUvUvRotateV2(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} + + +void fragment() { +// Input:6 + vec2 n_out6p0 = UV; + + +// Input:7 + float n_out7p0 = TIME; + + +// FloatFunc:10 + float n_out10p0 = cos(n_out7p0); + + +// FloatOp:11 + float n_in11p1 = 0.69100; + float n_out11p0 = n_out10p0 * n_in11p1; + + + vec2 n_out4p0; +// UVRotateV2:4 + vec2 n_in4p1 = vec2(0.50000, 0.50000); + { + + vec2 rotated_uv = n_out6p0; + rotated_uv = vec2_rotate_VisualShaderExtrasUvUvRotateV2(n_out6p0, n_out11p0, n_in4p1); + n_out4p0 = rotated_uv; + + } + + + vec4 n_out3p0; +// Texture2D:3 + n_out3p0 = texture(Texture2DParameter, n_out4p0); + + +// Output:0 + COLOR.rgb = vec3(n_out3p0.xyz); + + +} +" +mode = 1 +flags/light_only = false +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_2xe3x") +nodes/fragment/3/position = Vector2(100, 160) +nodes/fragment/4/node = SubResource("VisualShaderNodeCustom_1s4vi") +nodes/fragment/4/position = Vector2(-180, 380) +nodes/fragment/6/node = SubResource("VisualShaderNodeInput_h280l") +nodes/fragment/6/position = Vector2(-700, 360) +nodes/fragment/7/node = SubResource("VisualShaderNodeInput_cydmw") +nodes/fragment/7/position = Vector2(-1000, 520) +nodes/fragment/10/node = SubResource("VisualShaderNodeFloatFunc_kxpbt") +nodes/fragment/10/position = Vector2(-680, 520) +nodes/fragment/11/node = SubResource("VisualShaderNodeFloatOp_oy211") +nodes/fragment/11/position = Vector2(-440, 480) +nodes/fragment/13/node = SubResource("VisualShaderNodeTexture2DParameter_vwuqj") +nodes/fragment/13/position = Vector2(-440, 80) +nodes/fragment/connections = PackedInt32Array(3, 0, 0, 0, 4, 0, 3, 0, 7, 0, 10, 0, 10, 0, 11, 0, 13, 0, 3, 2, 11, 0, 4, 2, 6, 0, 4, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagonal_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagonal_demo.tscn new file mode 100644 index 0000000..ebb4c2a --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagonal_demo.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=7 format=3 uid="uid://cnp7esemvil82"] + +[ext_resource type="Shader" uid="uid://v87grr5fun73" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/seamless_tiling/hexagonal_tiler/hexagons.tres" id="1_ib0cf"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_normal.png" id="2_5ej5n"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_h8ynm"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_orm.png" id="4_ls4bk"] + +[sub_resource type="BoxMesh" id="BoxMesh_15qja"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ovuym"] +render_priority = 0 +shader = ExtResource("1_ib0cf") +shader_parameter/albedo = ExtResource("3_h8ynm") +shader_parameter/orm = ExtResource("4_ls4bk") +shader_parameter/NormMap = ExtResource("2_5ej5n") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0463536, 0.0254474, -0.0286323) +mesh = SubResource("BoxMesh_15qja") +surface_material_override/0 = SubResource("ShaderMaterial_ovuym") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagons.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagons.tres new file mode 100644 index 0000000..fbdce03 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/hexagonal_tiler/hexagons.tres @@ -0,0 +1,258 @@ +[gd_resource type="VisualShader" load_steps=8 format=3 uid="uid://v87grr5fun73"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/SeamlessTiling/seamless_hexagonal_tiler.gd" id="1_fkrro"] + +[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_cnrot"] +constant = 3.0 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_egcue"] +default_input_values = [4, Vector2(64, 64), 5, 32.0] +initialized = true +script = ExtResource("1_fkrro") + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_vcklp"] +parameter_name = "albedo" +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_g41qx"] +parameter_name = "orm" +texture_type = 1 + +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_74ftc"] + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_g0xj7"] +parameter_name = "NormMap" +texture_type = 2 + +[resource] +code = "shader_type spatial; +uniform sampler2D albedo : source_color; +uniform sampler2D orm : source_color; +uniform sampler2D NormMap : hint_normal; + + +// SeamlessHexagonTiling + +vec2 HTD_Translate(vec2 _UV, vec2 amount){ return _UV + amount; } +vec2 HTD_Scale(vec2 _UV, vec2 amount){ return _UV * amount; } + +vec2 HTD_Rotate(vec2 _uv, float _angle){ + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + return _uv ; +} +vec3 HTD_Hash2(vec2 _UV){ + return fract(sin(vec3( + dot(vec3(_UV.x, _UV.y, _UV.x), vec3(127.09, 311.7, 74.69)), + dot(vec3(_UV.y, _UV.x, _UV.x), vec3(269.5, 183.3, 246.1)), + dot(vec3(_UV.x, _UV.y, _UV.y), vec3(113.5, 271.89, 124.59)) + )) * 43758.5453); +} +vec2 HTD_Transform(vec2 _UV, float rotation, vec2 scale, vec2 translation){ + return HTD_Translate( + HTD_Scale( + HTD_Rotate(_UV, rotation), + scale), + translation); +} + +vec2 HTD_FixNormalMap(vec2 _rg, float _unrot) { + float rot = TAU -_unrot; + _rg -= vec2(0.5); //This is the special voodoo. Rodzilla said NormalMaps are centered in color space. Shrug. + _rg = HTD_Rotate(_rg, rot); + _rg += vec2(0.5); + return _rg; +} + +vec2 HTD_Transform_uv(vec2 _uv, vec2 seed, out float out_rotation) { + vec3 hash = HTD_Hash2(seed); + float rot = mix(-PI, PI, fract(hash.b*16.)); + float scl = mix(.8, 1.2, hash.b); + out_rotation = rot; + return HTD_Transform(_uv, rot, vec2(scl), hash.xy); +} + + + +void fragment() { + vec3 n_out13p0; + vec3 n_out13p1; + vec3 n_out13p2; +// SeamlessHexagonTiling:13 + vec2 n_in13p4 = vec2(64.00000, 64.00000); + float n_in13p5 = 32.00000; + { + + vec2 uv_tiled = UV * n_in13p4; + + /////////////////////////////// + //STEP 0 : Unskew the uv map + float magic_number = 1.73200 / 2.000; //magic numbers + float tmp_60p0 = uv_tiled.y * (0.5 / magic_number); + float tmp_61p0 = uv_tiled.x - tmp_60p0; + float tmp_57p0 = 1.0 / (magic_number); + float tmp_59p0 = uv_tiled.y * tmp_57p0; + vec2 tmp_62p0 = vec2(tmp_61p0, tmp_59p0); + vec2 becooln_in63p1 = vec2(2.00000, 2.00000); + vec2 uv_fixed = tmp_62p0 / becooln_in63p1; + + + //////////////////////////////////////////// + //Step 1 - the repeating grid from floor to round + vec2 repeating_grid_floor = floor(uv_fixed); + vec2 fract_of_step_2 = fract(uv_fixed); + float tmp_28p0 = fract_of_step_2.x + fract_of_step_2.y - 1.00;//becooln_in28p1; + //bool tmp_35p0 = tmp_28p0 > 0.00; + float tmp_71p0; + float tmp_12p0 = repeating_grid_floor.x - repeating_grid_floor.y; + vec3 tmp_13p0 = vec3(tmp_12p0) + vec3(0.00000, 1.00000, 2.00000); + float tmp_var = 3.00000; // this var is vital for the line below + float tmp_16p0 = 1.0 / (tmp_var); //this line is weird. Using a hard 3.0 in fails! + vec3 tmp_15p0 = tmp_13p0 * vec3(tmp_16p0); + float becooln_in19p0 = 5.00000; + float becooln_in19p1 = 3.00000; + float tmp_19p0 = becooln_in19p0 / becooln_in19p1; + vec3 tmp_17p0 = tmp_15p0 + vec3(tmp_19p0); + vec3 tmp_20p0 = fract(tmp_17p0); + vec3 end_round_of_step_1 = round(tmp_20p0); + + ///////////////////////////////////////////////////////// + //Step 2 : From fract to channels out to masks + vec2 step_02_fract = fract(uv_fixed); + float stuff = step_02_fract.x + step_02_fract.y; + float to_abs = stuff - 1.00; + // Compare + bool greater_than_zero_test = to_abs > 0.00; + float tmp_29p0 = abs(to_abs); //ABS + vec2 tmp_32p0 = vec2(1.0) - step_02_fract.yx; + vec2 tmp_36p0; + tmp_36p0 = mix(step_02_fract, tmp_32p0, float(greater_than_zero_test)); + vec4 tmp_37p0 = vec4(tmp_29p0, tmp_36p0.x, tmp_36p0.y, 0.00); + + // Making the Channel Masks + float tmp_44p0 = dot(end_round_of_step_1.zxy, vec3(tmp_37p0.xyz)); + float tmp_45p0 = dot(end_round_of_step_1.yzx, vec3(tmp_37p0.xyz)); + float tmp_46p0 = dot(end_round_of_step_1, vec3(tmp_37p0.xyz)); + vec3 tmp_47p0 = vec3(tmp_44p0, tmp_45p0, tmp_46p0); + vec3 tmp_49p0 = pow(tmp_47p0, vec3(n_in13p5)); + vec3 vec111 = vec3(1.00000, 1.00000, 1.00000); + float tmp_51p0 = dot(tmp_49p0, vec111); + vec3 channel_masks = tmp_49p0 / vec3(tmp_51p0); + + ////////////////////// + // Make the seeds + float a_one_or_zero = mix(0.00, 1.00, float(greater_than_zero_test));// Switch 0 or 1 + vec3 tmp_70p0 = vec3(a_one_or_zero) * end_round_of_step_1; + + // SEED 1 + vec2 tmp_83p0 = repeating_grid_floor + vec2(tmp_70p0.z); //Z + vec2 seed_1 = tmp_83p0 + end_round_of_step_1.xy; + + // SEED 2 + vec2 tmp_82p0 = repeating_grid_floor + vec2(tmp_70p0.y); //Y + vec2 seed_2 = tmp_82p0 + end_round_of_step_1.zx; + + // SEED 3 + vec2 tmp_81p0 = repeating_grid_floor + vec2(tmp_70p0.x); //X + vec2 seed_3 = tmp_81p0 + end_round_of_step_1.yz; + + ////////////////////// + float out_rotation_1; + float out_rotation_2; + float out_rotation_3; + vec3 _rgb_1; + vec3 _rgb_2; + vec3 _rgb_3; + + ////////////////////// + // rotate and sample + vec2 uv_transformed_1 = HTD_Transform_uv(uv_tiled, seed_1, out_rotation_1); + vec2 uv_transformed_2 = HTD_Transform_uv(uv_tiled, seed_2, out_rotation_2); + vec2 uv_transformed_3 = HTD_Transform_uv(uv_tiled, seed_3, out_rotation_3); + + // Now output all the rgb for the maps coming in + vec4 _read_rgb; + + _read_rgb = vec4(0.); + _read_rgb = texture(albedo, uv_transformed_1); + _rgb_1 = _read_rgb.rgb * vec3(channel_masks.x); + + _read_rgb = texture(albedo, uv_transformed_2); + _rgb_2 = _read_rgb.rgb * vec3(channel_masks.y); + + _read_rgb = texture(albedo, uv_transformed_3); + _rgb_3 = _read_rgb.rgb * vec3(channel_masks.z); + + //Add them + n_out13p0 = _rgb_1 + _rgb_2 + _rgb_3; + + _read_rgb = vec4(0.); + _read_rgb = texture(orm, uv_transformed_1); + _rgb_1 = _read_rgb.rgb * vec3(channel_masks.x); + + _read_rgb = texture(orm, uv_transformed_2); + _rgb_2 = _read_rgb.rgb * vec3(channel_masks.y); + + _read_rgb = texture(orm, uv_transformed_3); + _rgb_3 = _read_rgb.rgb * vec3(channel_masks.z); + + //Add them + n_out13p1 = _rgb_1 + _rgb_2 + _rgb_3; + + _read_rgb = vec4(0.); vec2 fixed_rg; + _read_rgb = texture(NormMap, uv_transformed_1); + fixed_rg = vec2(0.0, 0.0); + fixed_rg = HTD_FixNormalMap(_read_rgb.rg, out_rotation_1); + _rgb_1 = vec3(fixed_rg, 0.) * vec3(channel_masks.x); + + _read_rgb = texture(NormMap, uv_transformed_2); + fixed_rg = vec2(0.0, 0.0); + fixed_rg = HTD_FixNormalMap(_read_rgb.rg, out_rotation_2); + _rgb_2 = vec3(fixed_rg, 0.) * vec3(channel_masks.y); + + _read_rgb = texture(NormMap, uv_transformed_3); + fixed_rg = vec2(0.0, 0.0); + fixed_rg = HTD_FixNormalMap(_read_rgb.rg, out_rotation_3); + _rgb_3 = vec3(fixed_rg, 0.) * vec3(channel_masks.z); + + //Add them + n_out13p2 = _rgb_1 + _rgb_2 + _rgb_3; + + } + + +// VectorDecompose:7 + float n_out7p0 = n_out13p1.x; + float n_out7p1 = n_out13p1.y; + float n_out7p2 = n_out13p1.z; + + +// FloatConstant:10 + float n_out10p0 = 3.000000; + + +// Output:0 + ALBEDO = n_out13p0; + METALLIC = n_out7p2; + ROUGHNESS = n_out7p1; + AO = n_out7p0; + NORMAL_MAP = n_out13p2; + NORMAL_MAP_DEPTH = n_out10p0; + + +} +" +graph_offset = Vector2(-394.352, 78.3043) +nodes/fragment/0/position = Vector2(340, 140) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_vcklp") +nodes/fragment/3/position = Vector2(-680, 40) +nodes/fragment/5/node = SubResource("VisualShaderNodeTexture2DParameter_g41qx") +nodes/fragment/5/position = Vector2(-660, 420) +nodes/fragment/7/node = SubResource("VisualShaderNodeVectorDecompose_74ftc") +nodes/fragment/7/position = Vector2(60, 220) +nodes/fragment/8/node = SubResource("VisualShaderNodeTexture2DParameter_g0xj7") +nodes/fragment/8/position = Vector2(-880, 200) +nodes/fragment/10/node = SubResource("VisualShaderNodeFloatConstant_cnrot") +nodes/fragment/10/position = Vector2(60, 420) +nodes/fragment/13/node = SubResource("VisualShaderNodeCustom_egcue") +nodes/fragment/13/position = Vector2(-220, 220) +nodes/fragment/connections = PackedInt32Array(7, 1, 0, 3, 10, 0, 0, 10, 3, 0, 13, 1, 5, 0, 13, 2, 8, 0, 13, 3, 7, 2, 0, 2, 13, 0, 0, 0, 13, 1, 7, 0, 13, 2, 0, 9, 7, 0, 0, 6) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn new file mode 100644 index 0000000..f3d004f --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=7 format=3 uid="uid://d3l5jysmci50t"] + +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres" id="1_5kigc"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png" id="2_ppe3l"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_tt8ec"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" id="4_ca1x4"] + +[sub_resource type="BoxMesh" id="BoxMesh_7exsq"] +size = Vector3(4.528, 1, 9.163) +subdivide_height = 2 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_34fmc"] +render_priority = 0 +shader = ExtResource("1_5kigc") +shader_parameter/albedo = ExtResource("3_tt8ec") +shader_parameter/norm = ExtResource("4_ca1x4") +shader_parameter/ORM = ExtResource("2_ppe3l") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_7exsq") +surface_material_override/0 = SubResource("ShaderMaterial_34fmc") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.0221929, 0.148879, -0.988606, -0.00334136, 0.988855, 0.148842, 0.999748, 6.70721e-08, 0.022443, -2.57942, 5.36721, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres new file mode 100644 index 0000000..b1f5a90 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres @@ -0,0 +1,117 @@ +[gd_resource type="VisualShader" load_steps=7 format=3 uid="uid://w2mc4iohmivr"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/SeamlessTiling/seamless_tiler_technique1.gd" id="1_bpdut"] + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_qimeh"] +parameter_name = "albedo" +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_bd6lt"] +parameter_name = "norm" +texture_type = 2 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_e1gub"] +default_input_values = [0, 8.0] +initialized = true +script = ExtResource("1_bpdut") + +[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_grwja"] +constant = 2.0 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_1q02o"] +parameter_name = "ORM" + +[resource] +code = "shader_type spatial; +uniform sampler2D albedo : source_color; +uniform sampler2D norm : hint_normal; +uniform sampler2D ORM; + + +// IQSeamlessTilingTechnique1 + +// The MIT License +// Copyright © 2015 Inigo Quilez +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +vec4 hash4_VisualShaderNodeIQSeamlessTilingTechnique1( vec2 p ) { return fract(sin(vec4( 1.0+dot(p,vec2(37.0,17.0)), + 2.0+dot(p,vec2(11.0,47.0)), + 3.0+dot(p,vec2(41.0,29.0)), + 4.0+dot(p,vec2(23.0,31.0))))*103.0); } + +vec4 textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1( sampler2D samp, in vec2 uv ) +{ + + // OK + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + vec4 ofa = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(0.0,0.0) ); + vec4 ofb = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(1.0,0.0) ); + vec4 ofc = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(0.0,1.0) ); + vec4 ofd = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(1.0,1.0) ); + + vec2 ddx = dFdx( uv ); + vec2 ddy = dFdy( uv ); + + // transform per-tile uvs + ofa.zw = sign(ofa.zw-0.5); + ofb.zw = sign(ofb.zw-0.5); + ofc.zw = sign(ofc.zw-0.5); + ofd.zw = sign(ofd.zw-0.5); + + // uv's, and derivarives (for correct mipmapping) + vec2 uva = uv*ofa.zw + ofa.xy; vec2 ddxa = ddx*ofa.zw; vec2 ddya = ddy*ofa.zw; + vec2 uvb = uv*ofb.zw + ofb.xy; vec2 ddxb = ddx*ofb.zw; vec2 ddyb = ddy*ofb.zw; + vec2 uvc = uv*ofc.zw + ofc.xy; vec2 ddxc = ddx*ofc.zw; vec2 ddyc = ddy*ofc.zw; + vec2 uvd = uv*ofd.zw + ofd.xy; vec2 ddxd = ddx*ofd.zw; vec2 ddyd = ddy*ofd.zw; + + // fetch and blend + vec2 b = smoothstep(0.25,0.75,fuv); + return mix( mix( textureGrad( samp, uva, ddxa, ddya ), + textureGrad( samp, uvb, ddxb, ddyb ), b.x ), + mix( textureGrad( samp, uvc, ddxc, ddyc ), + textureGrad( samp, uvd, ddxd, ddyd ), b.x), b.y ); +} + +void fragment() { + vec3 n_out5p0; + vec3 n_out5p1; + float n_out5p2; + float n_out5p3; + float n_out5p4; +// IQSeamlessTilingTechnique1:5 + float n_in5p0 = 8.00000; + { + + vec2 uv = UV * n_in5p0; + n_out5p0 = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1(albedo, uv).rgb;n_out5p1 = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1(norm, uv).rgb;n_out5p2 = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1(ORM, uv).r;n_out5p3 = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1(ORM, uv).g;n_out5p4 = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1(ORM, uv).b; + } + + +// FloatConstant:6 + float n_out6p0 = 2.000000; + + +// Output:0 + ALBEDO = n_out5p0; + METALLIC = n_out5p4; + ROUGHNESS = n_out5p3; + AO = n_out5p2; + NORMAL_MAP = n_out5p1; + NORMAL_MAP_DEPTH = n_out6p0; + + +} +" +nodes/fragment/0/position = Vector2(540, 200) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_qimeh") +nodes/fragment/3/position = Vector2(-520, 60) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture2DParameter_bd6lt") +nodes/fragment/4/position = Vector2(-520, 360) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_e1gub") +nodes/fragment/5/position = Vector2(0, 280) +nodes/fragment/6/node = SubResource("VisualShaderNodeFloatConstant_grwja") +nodes/fragment/6/position = Vector2(100, 460) +nodes/fragment/7/node = SubResource("VisualShaderNodeTexture2DParameter_1q02o") +nodes/fragment/7/position = Vector2(-540, 600) +nodes/fragment/connections = PackedInt32Array(3, 0, 5, 1, 4, 0, 5, 2, 7, 0, 5, 3, 5, 0, 0, 0, 5, 1, 0, 9, 5, 2, 0, 6, 5, 3, 0, 3, 5, 4, 0, 2, 6, 0, 0, 10) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn new file mode 100644 index 0000000..cbe3e05 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=4 format=3 uid="uid://c0p7nvdikjypn"] + +[ext_resource type="Shader" uid="uid://cyaiien7casfl" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres" id="1_27p0t"] +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_n7xmv"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_0ajk8"] +shader = ExtResource("1_27p0t") + +[node name="Node2D" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_0ajk8") +offset_right = 64.0 +offset_bottom = 64.0 +texture = ExtResource("2_n7xmv") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres new file mode 100644 index 0000000..6aa4d52 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres @@ -0,0 +1,84 @@ +[gd_resource type="VisualShader" load_steps=5 format=3 uid="uid://cyaiien7casfl"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Box.gd" id="2_fi760"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dmth8"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.667, 0.5), 2, Vector2(0.194, 0.25), 3, 0.032] +initialized = true +script = ExtResource("2_fi760") + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_6k8wk"] +output_port_for_preview = 0 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dj0k4"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25), 3, 0.0] +initialized = true +script = ExtResource("2_fi760") + +[resource] +code = "shader_type canvas_item; + + +// Box + +float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) { + vec2 d = abs(_pos) - _proportions; + float outside = length(max(d, 0.)); + float inside = min(max(d.x, d.y), 0.); + float both = outside + inside; + + //float f = outside - _feather; //makes a kind of outline + + // ok! smoothness is v sensitive tho. + // when f is 0 the edge is sharp + float f = _feather; + + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black +} + + +void fragment() { + float n_out9p0; +// Box:9 + vec2 n_in9p1 = vec2(0.50000, 0.50000); + vec2 n_in9p2 = vec2(0.25000, 0.25000); + float n_in9p3 = 0.00000; + { + n_out9p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in9p1, n_in9p2, n_in9p3); + } + + + float n_out11p0; +// Box:11 + vec2 n_in11p1 = vec2(0.66700, 0.50000); + vec2 n_in11p2 = vec2(0.19400, 0.25000); + float n_in11p3 = 0.03200; + { + n_out11p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in11p1, n_in11p2, n_in11p3); + } + + +// FloatOp:14 + float n_out14p0 = n_out9p0 + n_out11p0; + + +// Output:0 + COLOR.rgb = vec3(n_out14p0); + + +} +" +graph_offset = Vector2(-206.179, 205.056) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(780, 120) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_dj0k4") +nodes/fragment/9/position = Vector2(-180, -20) +nodes/fragment/11/node = SubResource("VisualShaderNodeCustom_dmth8") +nodes/fragment/11/position = Vector2(-20, 200) +nodes/fragment/14/node = SubResource("VisualShaderNodeFloatOp_6k8wk") +nodes/fragment/14/position = Vector2(311.727, 68.9091) +nodes/fragment/connections = PackedInt32Array(9, 0, 14, 0, 11, 0, 14, 1, 14, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn new file mode 100644 index 0000000..9e062ca --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=4 format=3 uid="uid://bc7pruowuvxel"] + +[ext_resource type="Shader" uid="uid://cxui2its7mir8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres" id="1_t1sjd"] +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_a4dbu"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4d508"] +shader = ExtResource("1_t1sjd") + +[node name="Node2D" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_4d508") +offset_right = 64.0 +offset_bottom = 64.0 +texture = ExtResource("2_a4dbu") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres new file mode 100644 index 0000000..9c3f993 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres @@ -0,0 +1,115 @@ +[gd_resource type="VisualShader" load_steps=7 format=3 uid="uid://cxui2its7mir8"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Circle.gd" id="1_3evrx"] + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_fukdh"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_n6kkt"] +default_input_values = [0, Vector2(0, 0)] +op_type = 0 + +[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_jjsoh"] +output_port_for_preview = 0 +default_input_values = [0, 0.0, 1, 0.5, 2, 0.001, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_ksvn0"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.988] +initialized = true +script = ExtResource("1_3evrx") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_2fxko"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.001] +initialized = true +script = ExtResource("1_3evrx") + +[resource] +code = "shader_type canvas_item; + + +// Circle + +//Original code +//float sdCircle(vec2 pos, float r) { +// return step(length(pos) - r, pos).x; +//} + +//New hack - faster than using length func +float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) +{ + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); +} + + +void fragment() { +// Input:2 + vec2 n_out2p0 = UV; + + +// VectorDecompose:3 + float n_out3p0 = n_out2p0.x; + float n_out3p1 = n_out2p0.y; + + + float n_out5p0; +// Circle:5 + vec2 n_in5p1 = vec2(0.50000, 0.50000); + float n_in5p2 = 0.27600; + float n_in5p3 = 0.98800; + { + n_out5p0 = VisualShaderNodeCircle_circle(UV - n_in5p1, n_in5p2, n_in5p3); + } + + + float n_out6p0; +// Circle:6 + vec2 n_in6p1 = vec2(0.50000, 0.50000); + float n_in6p2 = 0.27600; + float n_in6p3 = 0.00100; + { + n_out6p0 = VisualShaderNodeCircle_circle(UV - n_in6p1, n_in6p2, n_in6p3); + } + + + vec3 n_out4p0; +// If:4 + float n_in4p1 = 0.50000; + float n_in4p2 = 0.00100; + vec3 n_in4p3 = vec3(0.00000, 0.00000, 0.00000); + if(abs(n_out3p0 - n_in4p1) < n_in4p2) + { + n_out4p0 = n_in4p3; + } + else if(n_out3p0 < n_in4p1) + { + n_out4p0 = vec3(n_out6p0); + } + else + { + n_out4p0 = vec3(n_out5p0); + } + + +// Output:0 + COLOR.rgb = n_out4p0; + + +} +" +graph_offset = Vector2(-86.5636, -75.4656) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(780, 120) +nodes/fragment/2/node = SubResource("VisualShaderNodeInput_fukdh") +nodes/fragment/2/position = Vector2(-83.7461, -30.5869) +nodes/fragment/3/node = SubResource("VisualShaderNodeVectorDecompose_n6kkt") +nodes/fragment/3/position = Vector2(316.254, -10.5869) +nodes/fragment/4/node = SubResource("VisualShaderNodeIf_jjsoh") +nodes/fragment/4/position = Vector2(556.254, 129.413) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_ksvn0") +nodes/fragment/5/position = Vector2(56.2539, 109.413) +nodes/fragment/6/node = SubResource("VisualShaderNodeCustom_2fxko") +nodes/fragment/6/position = Vector2(256.254, 289.413) +nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 3, 0, 4, 0, 5, 0, 4, 4, 6, 0, 4, 5, 4, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/TextureStack_backup.gd.bak b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/TextureStack_backup.gd.bak new file mode 100644 index 0000000..9fa9c51 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/TextureStack_backup.gd.bak @@ -0,0 +1,152 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name TempVisualShaderNodeTextureStack + +func _get_name(): + return "TextureStack" + +func _get_version(): + return "1" + +func _get_category(): + return "VisualShaderExtras/Utility" + +func _get_description(): + return LizardShaderLibrary.format_description(self, + """....""") + +#func _is_available(mode, type): +# return mode == VisualShader.MODE_SPATIAL + +func _is_highend(): + return true #mark as PC only. + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_count(): + return 7 + +func _get_output_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 2: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 3: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 4: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 5: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 6: return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_name(port: int): + match port: + 0: return "UV" + 1: return "A rgb" + 2: return "O rgb" + 3: return "R rgb" + 4: return "M rgb" + 5: return "Norm rgb" + 6: return "Height" + +#func _init() -> void: +# set_input_port_default_value(2, Vector3.UP) +# set_input_port_default_value(3, 0.) +# set_input_port_default_value(4, 0.) + +func _get_input_port_count(): + return 7 + +func _get_input_port_name(port): + match port: + 0: return "UV in" + 1: return "Albedo" + 2: return "Occlusion" + 3: return "Roughness" + 4: return "Metallic" + 5: return "Normalmap" + 6: return "Height" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 2: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 3: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 4: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 5: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 6: return VisualShaderNode.PORT_TYPE_SAMPLER + +#func _get_global_code(mode): +# return LizardShaderLibrary.normal_map_add_z \ +# + LizardShaderLibrary.world_normal_mask \ +# + LizardShaderLibrary.mask_blend +# + +func tlod(invar,key): + var s + if invar: + s = "vec3 tex_%s = textureLod({sampler_%s}, {inuv}, 0.).rgb;" % [key,key] + if key == "H": + s+="{out_%s} = tex_%s.r;" % [key,key] + else: + s+= "{out_%s} = tex_%s;" % [key,key] + s+="\n" + return s + return "" + +func _get_code(input_vars, output_vars, mode, type): + var inuv = "UV" + if input_vars[0]: + inuv = input_vars[0] + + var s = tlod(input_vars[1],"A") + s += tlod(input_vars[2],"O") + s += tlod(input_vars[3],"R") + s += tlod(input_vars[4],"M") + s += tlod(input_vars[5],"NM") + s += tlod(input_vars[6],"H") + + s = s.format({ + "inuv" : inuv, + "sampler_A": input_vars[1], + "sampler_O": input_vars[2], + "sampler_R": input_vars[3], + "sampler_M": input_vars[4], + "sampler_NM": input_vars[5], + "sampler_H": input_vars[6], + + "out_A": output_vars[1], + "out_O": output_vars[2], + "out_R": output_vars[3], + "out_M": output_vars[4], + "out_NM": output_vars[5], + "out_H": output_vars[6] + }) + return s + """ +{uv_out} = {inuv}; +""".format( +{ +"inuv" : inuv, +"uv_out": output_vars[0], +}) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack.tres new file mode 100644 index 0000000..a172f93 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack.tres @@ -0,0 +1,80 @@ +[gd_resource type="VisualShader" load_steps=7 format=3 uid="uid://c8q2fwhkcutar"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/TextureStack.gd" id="1_1588i"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_y67u7"] +initialized = true +script = ExtResource("1_1588i") + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_o2o18"] +parameter_name = "Albedo" +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_1wkfw"] +parameter_name = "Normalmap" +texture_type = 2 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_5jiyq"] +parameter_name = "Height" + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_xrkj6"] +parameter_name = "ORM" + +[resource] +code = "shader_type canvas_item; +uniform sampler2D Albedo : source_color; +uniform sampler2D ORM; +uniform sampler2D Normalmap : hint_normal; +uniform sampler2D Height; + + + +void fragment() { + vec2 n_out10p0; + vec4 n_out10p1; + vec3 n_out10p2; + float n_out10p3; + float n_out10p4; + float n_out10p5; + vec3 n_out10p6; + float n_out10p7; +// TextureStack:10 + { + n_out10p1 = textureLod(Albedo, UV, 0.); + + n_out10p3 = textureLod(ORM, UV, 0.).r; + n_out10p4 = textureLod(ORM, UV, 0.).g; + n_out10p5 = textureLod(ORM, UV, 0.).b; + + n_out10p6 = textureLod(Normalmap, UV, 0.).rgb; + + n_out10p7 = textureLod(Height, UV, 0.).r; + + + n_out10p0 = UV; + } + + +// Output:0 + COLOR.rgb = vec3(n_out10p1.xyz); + NORMAL_MAP = n_out10p6; + NORMAL_MAP_DEPTH = n_out10p7; + + +} +" +graph_offset = Vector2(-482.683, 124.66) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(140, 240) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_o2o18") +nodes/fragment/3/position = Vector2(-620, -140) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture2DParameter_1wkfw") +nodes/fragment/4/position = Vector2(-620, 400) +nodes/fragment/7/node = SubResource("VisualShaderNodeTexture2DParameter_5jiyq") +nodes/fragment/7/position = Vector2(-620, 640) +nodes/fragment/8/node = SubResource("VisualShaderNodeTexture2DParameter_xrkj6") +nodes/fragment/8/position = Vector2(-620, 120) +nodes/fragment/10/node = SubResource("VisualShaderNodeCustom_y67u7") +nodes/fragment/10/position = Vector2(-260, 280) +nodes/fragment/connections = PackedInt32Array(8, 0, 10, 2, 7, 0, 10, 7, 4, 0, 10, 6, 10, 1, 0, 0, 3, 0, 10, 1, 10, 7, 0, 4, 10, 6, 0, 3) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_2d_demo.tscn new file mode 100644 index 0000000..5586cbd --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_2d_demo.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=8 format=3] + +[ext_resource type="Shader" uid="uid://c8q2fwhkcutar" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/texture_stack/texture_stack.tres" id="1_5rhkq"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_albedo.png" id="2_h7i13"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/icon.svg" id="2_xqx38"] +[ext_resource type="Texture2D" uid="uid://33ty6m6q8j0k" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_heightmap.png" id="3_evkdv"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_normal.png" id="4_tfjmu"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_orm.png" id="5_vyod3"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_8a2wk"] +shader = ExtResource("1_5rhkq") +shader_parameter/Albedo = ExtResource("2_h7i13") +shader_parameter/ORM = ExtResource("5_vyod3") +shader_parameter/Normalmap = ExtResource("4_tfjmu") +shader_parameter/Height = ExtResource("3_evkdv") + +[node name="texture_stack_2d_demo" type="Node2D"] + +[node name="PointLight2D" type="PointLight2D" parent="."] +position = Vector2(34, 4) +energy = 3.36 +texture = ExtResource("3_evkdv") + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_8a2wk") +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_xqx38") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d.tres new file mode 100644 index 0000000..3f5d5c1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d.tres @@ -0,0 +1,94 @@ +[gd_resource type="VisualShader" load_steps=8 format=3 uid="uid://bmsfykwfmy3d3"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/TextureStack.gd" id="1_b8cyd"] + +[sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_idn4t"] +default_input_values = [1, Vector2(2, 2), 2, Vector2(0, 0)] +function = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_g8hug"] +parameter_name = "Albedo" +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_a2cfy"] +parameter_name = "Normalmap" +texture_type = 2 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_eafs5"] +parameter_name = "ORM" + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_thkgx"] +initialized = true +script = ExtResource("1_b8cyd") + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_qliaj"] +parameter_name = "Depth" +texture_filter = 2 + +[resource] +code = "shader_type spatial; +uniform sampler2D Albedo : source_color; +uniform sampler2D ORM; +uniform sampler2D Normalmap : hint_normal; +uniform sampler2D Depth : filter_linear; + + + +void fragment() { +// UVFunc:10 + vec2 n_in10p1 = vec2(2.00000, 2.00000); + vec2 n_in10p2 = vec2(0.00000, 0.00000); + vec2 n_out10p0 = (UV - n_in10p2) * n_in10p1 + n_in10p2; + + + vec2 n_out8p0; + vec4 n_out8p1; + vec3 n_out8p2; + float n_out8p3; + float n_out8p4; + float n_out8p5; + vec3 n_out8p6; + float n_out8p7; +// TextureStack:8 + { + n_out8p1 = textureLod(Albedo, n_out10p0, 0.); + + n_out8p3 = textureLod(ORM, n_out10p0, 0.).r; + n_out8p4 = textureLod(ORM, n_out10p0, 0.).g; + n_out8p5 = textureLod(ORM, n_out10p0, 0.).b; + + n_out8p6 = textureLod(Normalmap, n_out10p0, 0.).rgb; + + n_out8p7 = textureLod(Depth, n_out10p0, 0.).r; + + + n_out8p0 = n_out10p0; + } + + +// Output:0 + ALBEDO = vec3(n_out8p1.xyz); + METALLIC = n_out8p5; + ROUGHNESS = n_out8p4; + AO = n_out8p3; + NORMAL_MAP = n_out8p6; + NORMAL_MAP_DEPTH = n_out8p7; + + +} +" +graph_offset = Vector2(-102, 98) +nodes/fragment/0/position = Vector2(500, 0) +nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_g8hug") +nodes/fragment/2/position = Vector2(-300, -160) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_a2cfy") +nodes/fragment/3/position = Vector2(-300, 360) +nodes/fragment/7/node = SubResource("VisualShaderNodeTexture2DParameter_eafs5") +nodes/fragment/7/position = Vector2(-300, 100) +nodes/fragment/8/node = SubResource("VisualShaderNodeCustom_thkgx") +nodes/fragment/8/position = Vector2(220, 140) +nodes/fragment/9/node = SubResource("VisualShaderNodeTexture2DParameter_qliaj") +nodes/fragment/9/position = Vector2(-300, 580) +nodes/fragment/10/node = SubResource("VisualShaderNodeUVFunc_idn4t") +nodes/fragment/10/position = Vector2(-20, -60) +nodes/fragment/connections = PackedInt32Array(3, 0, 8, 6, 8, 1, 0, 0, 8, 3, 0, 6, 8, 4, 0, 3, 8, 5, 0, 2, 8, 6, 0, 9, 7, 0, 8, 2, 9, 0, 8, 7, 8, 7, 0, 10, 10, 0, 8, 0, 2, 0, 8, 1) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d_demo.tscn new file mode 100644 index 0000000..39a76dd --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/texture_stack/texture_stack_3d_demo.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=8 format=3] + +[ext_resource type="Shader" uid="uid://bmsfykwfmy3d3" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/texture_stack/texture_stack_3d.tres" id="1_y5mdw"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_albedo.png" id="2_qfjf8"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_normal.png" id="3_0ogme"] +[ext_resource type="Texture2D" uid="uid://33ty6m6q8j0k" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_heightmap.png" id="3_6vqlt"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonAssets/dbat_demos/_resources/textures/rock_orm_orm.png" id="4_oa46b"] + +[sub_resource type="SphereMesh" id="SphereMesh_gb4fn"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_h0p61"] +render_priority = 0 +shader = ExtResource("1_y5mdw") +shader_parameter/Albedo = ExtResource("2_qfjf8") +shader_parameter/ORM = ExtResource("4_oa46b") +shader_parameter/Normalmap = ExtResource("3_0ogme") +shader_parameter/Depth = ExtResource("3_6vqlt") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("SphereMesh_gb4fn") +surface_material_override/0 = SubResource("ShaderMaterial_h0p61") + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000417948, 0, 1.20816) +light_color = Color(0.560784, 0.313726, 1, 1) +light_energy = 3.79 +omni_range = 1.668 +omni_attenuation = 0.901249 diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tres new file mode 100644 index 0000000..9955368 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tres @@ -0,0 +1,147 @@ +[gd_resource type="VisualShader" load_steps=10 format=3] + +[ext_resource type="Texture2D" uid="uid://ba7cojxxohdjb" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="1_tufna"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/UV/UVTiler.gd" id="2_7nca1"] + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_bjkae"] +output_port_for_preview = 0 +expanded_output_ports = [0] +source = 5 +texture = ExtResource("1_tufna") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_p00pk"] +parameter_name = "Texture2DParameter" +texture_type = 1 +color_default = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_eobun"] +parameter_name = "BrickShift" +hint = 1 +default_value_enabled = true +default_value = 0.5 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_eb67r"] +parameter_name = "RandRot" +hint = 1 +default_value_enabled = true + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_6suix"] +parameter_name = "Rot" +hint = 1 +max = 3.142 +default_value_enabled = true + +[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_rcxwt"] +parameter_name = "DownAcross" +default_value_enabled = true +default_value = Vector2(2, 2) + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_rat7q"] +default_input_values = [0, Vector2(2, 2), 1, 0.0, 2, 0.0, 3, 0.5] +initialized = true +script = ExtResource("2_7nca1") + +[resource] +code = "shader_type canvas_item; +uniform vec2 DownAcross = vec2(2.000000, 2.000000); +uniform float Rot : hint_range(0, 3.14199995994568) = 0; +uniform float RandRot : hint_range(0, 1) = 0; +uniform float BrickShift : hint_range(0, 1) = 0.5; +uniform sampler2D Texture2DParameter : source_color, hint_default_transparent, filter_linear; + + +// UVTiler + +vec2 vec2_rotate_NodeUVTilerV3(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} +vec2 brick_tile_NodeUVTilerV3(vec2 _uv, float _zoom, float _shift) +{ + _uv.x += step(1.0, mod(_uv.y, 2.0)) * _shift; + return fract(_uv); +} +// Returns float from 0.0 to 1.0 +float random_float_NodeUVTilerV3(vec2 input) { + return fract(sin(dot(input.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + + +void fragment() { +// Vector2Parameter:8 + vec2 n_out8p0 = DownAcross; + + +// FloatParameter:7 + float n_out7p0 = Rot; + + +// FloatParameter:6 + float n_out6p0 = RandRot; + + +// FloatParameter:5 + float n_out5p0 = BrickShift; + + + vec2 n_out9p0; +// UVTiler:9 + { + + //Much simpler to calculate zoom from the tiling vec2 + float zoom = (n_out8p0.x * n_out8p0.y); + + vec2 st = UV/n_out8p0; + st *= zoom; //Scale coordinate system by zoom + + vec2 unique_val = floor( st ); //get the integer coordinates + + //Something about this calc is the problem with the brick shift when + //rr is > 0 + float rand_rotation = (( random_float_NodeUVTilerV3(unique_val) * 2.0) - 1.0) * n_out6p0; + + //Just add whatever static rotation may be input and clamp: + rand_rotation = clamp(rand_rotation + n_out7p0, 0.0, 2.*PI); + + st = brick_tile_NodeUVTilerV3(st, zoom, n_out5p0); + st = vec2_rotate_NodeUVTilerV3(st, rand_rotation, vec2(0.5)); + + n_out9p0 = st; + + } + + + vec4 n_out3p0; +// Texture2D:3 + n_out3p0 = texture(Texture2DParameter, n_out9p0); + + +// Output:0 + COLOR.rgb = vec3(n_out3p0.xyz); + + +} +" +graph_offset = Vector2(-108, 65) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(700, 140) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_bjkae") +nodes/fragment/3/position = Vector2(160, 220) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture2DParameter_p00pk") +nodes/fragment/4/position = Vector2(-240, 360) +nodes/fragment/5/node = SubResource("VisualShaderNodeFloatParameter_eobun") +nodes/fragment/5/position = Vector2(-869.255, 396.578) +nodes/fragment/6/node = SubResource("VisualShaderNodeFloatParameter_eb67r") +nodes/fragment/6/position = Vector2(-609.255, 396.578) +nodes/fragment/7/node = SubResource("VisualShaderNodeFloatParameter_6suix") +nodes/fragment/7/position = Vector2(-749.255, 116.578) +nodes/fragment/8/node = SubResource("VisualShaderNodeVec2Parameter_rcxwt") +nodes/fragment/8/position = Vector2(-489.255, -23.4216) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_rat7q") +nodes/fragment/9/position = Vector2(-149.255, 56.5784) +nodes/fragment/connections = PackedInt32Array(4, 0, 3, 2, 8, 0, 9, 0, 9, 0, 3, 0, 7, 0, 9, 1, 6, 0, 9, 2, 5, 0, 9, 3, 3, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tscn new file mode 100644 index 0000000..f796ab4 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Shader" uid="uid://b7ibxcf8x0cgu" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_2d_demo.tres" id="1_fr47i"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="1_lbymb"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_drvuj"] +shader = ExtResource("1_fr47i") +shader_parameter/DownAcross = Vector2(2, 2) +shader_parameter/Rot = 0.0 +shader_parameter/RandRot = 0.0 +shader_parameter/BrickShift = 0.5 +shader_parameter/Texture2DParameter = ExtResource("1_lbymb") + +[node name="tiler_2d_demo" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_drvuj") +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("1_lbymb") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_3d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_3d_demo.tscn new file mode 100644 index 0000000..a738455 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_3d_demo.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=7 format=3] + +[ext_resource type="ArrayMesh" uid="uid://bcv4ug57hcmnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne.obj" id="1_b56b5"] +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_vshader.tres" id="2_lwe2q"] +[ext_resource type="Texture2D" uid="uid://dja24d5rtr2ae" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="3_pom0l"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_k0e48"] +render_priority = 0 +shader = ExtResource("2_lwe2q") +shader_parameter/DownAcross = null +shader_parameter/Rot = null +shader_parameter/RandRot = null +shader_parameter/BrickShift = null +shader_parameter/Texture2DParameter = ExtResource("3_pom0l") + +[sub_resource type="PlaneMesh" id="PlaneMesh_xbehk"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vc1bm"] +render_priority = 0 +shader = ExtResource("2_lwe2q") +shader_parameter/DownAcross = null +shader_parameter/Rot = null +shader_parameter/RandRot = null +shader_parameter/BrickShift = null +shader_parameter/Texture2DParameter = ExtResource("3_pom0l") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.566285, 0.0365433, 0.0734995) +mesh = ExtResource("1_b56b5") +surface_material_override/0 = SubResource("ShaderMaterial_k0e48") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 2.10987, -0.0478901, 0.061174) +mesh = SubResource("PlaneMesh_xbehk") +surface_material_override/0 = SubResource("ShaderMaterial_vc1bm") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_vshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_vshader.tres new file mode 100644 index 0000000..c815c28 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/uv_tiler/tiler_vshader.tres @@ -0,0 +1,143 @@ +[gd_resource type="VisualShader" load_steps=10 format=3] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/UV/UVTiler.gd" id="3_cu2nc"] +[ext_resource type="Texture2D" uid="uid://ba7cojxxohdjb" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="4_7m7pb"] + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_5typr"] +output_port_for_preview = 0 +expanded_output_ports = [0] +source = 5 +texture = ExtResource("4_7m7pb") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_bg1tf"] +parameter_name = "Texture2DParameter" +texture_type = 1 +color_default = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_rdjab"] +parameter_name = "BrickShift" +hint = 1 +default_value_enabled = true +default_value = 0.5 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_ooq8t"] +parameter_name = "RandRot" +hint = 1 +default_value_enabled = true + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_3flr0"] +parameter_name = "Rot" +hint = 1 +max = 3.142 +default_value_enabled = true + +[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_7g6li"] +parameter_name = "DownAcross" +default_value_enabled = true +default_value = Vector2(2, 2) + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_4cqbd"] +default_input_values = [0, Vector2(2, 2), 1, 0.0, 2, 0.0, 3, 0.5] +initialized = true +script = ExtResource("3_cu2nc") + +[resource] +code = "shader_type spatial; +uniform vec2 DownAcross = vec2(2.000000, 2.000000); +uniform float Rot : hint_range(0, 3.14199995994568) = 0; +uniform float RandRot : hint_range(0, 1) = 0; +uniform float BrickShift : hint_range(0, 1) = 0.5; +uniform sampler2D Texture2DParameter : source_color, hint_default_transparent, filter_linear; + + +// UVTiler + +vec2 brick_tile(vec2 _uv, float _zoom, float _shift) +{ + _uv.x += step(1.0, mod(_uv.y, 2.0)) * _shift; + return fract(_uv); +} +vec2 vec2_rotate(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} +float random_float(vec2 input) { + return fract(sin(dot(input.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { +// Vector2Parameter:40 + vec2 n_out40p0 = DownAcross; + + +// FloatParameter:39 + float n_out39p0 = Rot; + + +// FloatParameter:38 + float n_out38p0 = RandRot; + + +// FloatParameter:36 + float n_out36p0 = BrickShift; + + + vec2 n_out41p0; +// UVTiler:41 + { + + //Much simpler to calculate zoom from the tiling vec2 + float zoom = (n_out40p0.x * n_out40p0.y); + + vec2 st = UV/n_out40p0; + st *= zoom; //Scale coordinate system by zoom + + vec2 unique_val = floor( st ); //get the integer coordinates + + //Something about this calc is the problem with the brick shift when + //rr is > 0 + float rand_rotation = ((random_float(unique_val) * 2.0) - 1.0) * n_out38p0; + + //Just add whatever static rotation may be input and clamp: + rand_rotation = clamp(rand_rotation + n_out39p0, 0.0, 2.*PI); + + st = brick_tile(st, zoom, n_out36p0); + st = vec2_rotate(st, rand_rotation, vec2(0.5)); + + n_out41p0 = st; + + } + + + vec4 n_out27p0; +// Texture2D:27 + n_out27p0 = texture(Texture2DParameter, n_out41p0); + + +// Output:0 + ALBEDO = vec3(n_out27p0.xyz); + + +} +" +graph_offset = Vector2(-1304.47, -4.53091) +nodes/fragment/0/position = Vector2(-1080, 260) +nodes/fragment/27/node = SubResource("VisualShaderNodeTexture_5typr") +nodes/fragment/27/position = Vector2(-1340, 420) +nodes/fragment/34/node = SubResource("VisualShaderNodeTexture2DParameter_bg1tf") +nodes/fragment/34/position = Vector2(-1780, 700) +nodes/fragment/36/node = SubResource("VisualShaderNodeFloatParameter_rdjab") +nodes/fragment/36/position = Vector2(-2400, 540) +nodes/fragment/38/node = SubResource("VisualShaderNodeFloatParameter_ooq8t") +nodes/fragment/38/position = Vector2(-2140, 540) +nodes/fragment/39/node = SubResource("VisualShaderNodeFloatParameter_3flr0") +nodes/fragment/39/position = Vector2(-2280, 260) +nodes/fragment/40/node = SubResource("VisualShaderNodeVec2Parameter_7g6li") +nodes/fragment/40/position = Vector2(-2020, 120) +nodes/fragment/41/node = SubResource("VisualShaderNodeCustom_4cqbd") +nodes/fragment/41/position = Vector2(-1680, 200) +nodes/fragment/connections = PackedInt32Array(34, 0, 27, 2, 27, 0, 0, 0, 40, 0, 41, 0, 41, 0, 27, 0, 39, 0, 41, 1, 38, 0, 41, 2, 36, 0, 41, 3) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tres new file mode 100644 index 0000000..0e744e6 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tres @@ -0,0 +1,168 @@ +[gd_resource type="VisualShader" load_steps=13 format=3 uid="uid://b8qm1p7erox03"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/WorldNormal/WorldNormalMask.gd" id="1_xm86j"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Utility/NormalMapZ.gd" id="2_662ls"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_etwos"] +[ext_resource type="Texture2D" uid="uid://dhfswrmammtnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" id="4_106cm"] + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_tmwtl"] +default_input_values = [0, 1.0, 1, 0.5] + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_wphbm"] +size = Vector2(578.859, 288.951) +description = "These two nodes work together to create the proper effect. +You can then choose which material is the top/up and which is the bottom/down + +(Or left/right, as you can adjust the Direction Vector)" + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_4lrbg"] +parameter_name = "BackgroundNormalMap" +texture_type = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_qn4go"] +default_input_values = [2, 0.0] +initialized = true +script = ExtResource("2_662ls") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_6nx55"] +texture = ExtResource("3_etwos") + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_cwa0d"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 0.5] +op_type = 4 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_bnyx1"] +texture = ExtResource("4_106cm") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_8ghky"] +default_input_values = [1, Vector3(0, 1, 0)] +initialized = true +script = ExtResource("1_xm86j") + +[resource] +code = "shader_type spatial; +uniform sampler2D tex_frg_8; +uniform sampler2D tex_frg_6; +uniform sampler2D BackgroundNormalMap : hint_normal, filter_linear; + + +// RestoreNormalMapZ + +// Godot strips the z value from imported Normal Maps. +// It does this for two reasons: +// 1. Obtaining better compression because the z can be calculated by shader. +// Compression boosts speed of CPU to GPU transfer. +// 2. On mobile devices they do not do that calculation. They either ignore the z +// or do some other calculation, but the normal one (below) is apparently too slow +// or power-hungry for mobile devices. +// +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +vec3 normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + vec3 normal_map_texture, + vec2 inuv, + vec3 _TANGENT, + vec3 _BINORMAL, + vec3 _NORMAL) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + + // Unpack the background normal map. + vec3 bg_normal = normal_map_texture * 2.0 - 1.0; + + // Recalculate z-component of the normal map with the Pythagorean theorem. + bg_normal.z = sqrt(1.0 - bg_normal.x * bg_normal.x - bg_normal.y * bg_normal.y); + + // Apply the tangent-space normal map to the view-space normals. + vec3 normal_applied = bg_normal.x * _TANGENT + bg_normal.y * _BINORMAL + bg_normal.z * _NORMAL; + return normal_applied; +} +// World_Normal_Mask + +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +float world_normal_mask_VisualShaderNodeWorldNormalMask( + vec3 normal_map_texture, + vec3 vector_direction, + mat4 _VIEW_MATRIX + ) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + // Convert the world up vector into view-space with a matrix multiplication. + vec3 up_vector_viewspace = mat3(_VIEW_MATRIX) * vector_direction; + + // Compare the up vector to the surface with the normal map applied using the dot product. + float dot_product = dot(up_vector_viewspace, normal_map_texture); + + return dot_product; +} + +void fragment() { +// Texture2D:8 + vec4 n_out8p0 = texture(tex_frg_8, UV); + + +// Texture2D:6 + vec4 n_out6p0 = texture(tex_frg_6, UV); + + + vec3 n_out5p0; +// RestoreNormalMapZ:5 + { + + vec3 normal_map_texture = textureLod(BackgroundNormalMap, UV, 0.).rgb; + + n_out5p0 = normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + normal_map_texture, + UV, + TANGENT, + BINORMAL, + NORMAL); + + } + + + float n_out9p0; +// World_Normal_Mask:9 + vec3 n_in9p1 = vec3(0.00000, 1.00000, 0.00000); + { + + n_out9p0 = world_normal_mask_VisualShaderNodeWorldNormalMask( + n_out5p0, + n_in9p1, + VIEW_MATRIX); + } + + +// FloatOp:10 + float n_in10p1 = 0.50000; + float n_out10p0 = n_out9p0 + n_in10p1; + + +// Mix:7 + vec3 n_out7p0 = mix(vec3(n_out8p0.xyz), vec3(n_out6p0.xyz), n_out10p0); + + +// Output:0 + ALBEDO = n_out7p0; + + +} +" +graph_offset = Vector2(-570.317, 152.57) +nodes/fragment/4/node = SubResource("VisualShaderNodeTexture2DParameter_4lrbg") +nodes/fragment/4/position = Vector2(-860, 400) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_qn4go") +nodes/fragment/5/position = Vector2(-520, 580) +nodes/fragment/6/node = SubResource("VisualShaderNodeTexture_6nx55") +nodes/fragment/6/position = Vector2(-800, -80) +nodes/fragment/7/node = SubResource("VisualShaderNodeMix_cwa0d") +nodes/fragment/7/position = Vector2(200, 180) +nodes/fragment/8/node = SubResource("VisualShaderNodeTexture_bnyx1") +nodes/fragment/8/position = Vector2(-800, 160) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_8ghky") +nodes/fragment/9/position = Vector2(-240, 580) +nodes/fragment/10/node = SubResource("VisualShaderNodeFloatOp_tmwtl") +nodes/fragment/10/position = Vector2(60, 320) +nodes/fragment/11/node = SubResource("VisualShaderNodeComment_wphbm") +nodes/fragment/11/position = Vector2(-560, 440) +nodes/fragment/connections = PackedInt32Array(4, 0, 5, 1, 7, 0, 0, 0, 5, 0, 9, 0, 6, 0, 7, 1, 8, 0, 7, 0, 10, 0, 7, 2, 9, 0, 10, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tscn new file mode 100644 index 0000000..a55fab1 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=6 format=3 uid="uid://cexw56ckcsarg"] + +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mask_demo.tres" id="1_nrcg1"] +[ext_resource type="ArrayMesh" uid="uid://dsgni0xlkinot" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/suzanne_high_poly.obj" id="2_pao0a"] + +[sub_resource type="CylinderMesh" id="CylinderMesh_04dv8"] +height = 0.561 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_dp3mh"] +render_priority = 0 +shader = ExtResource("1_nrcg1") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ruybp"] +render_priority = 0 +shader = ExtResource("1_nrcg1") + +[node name="Node3D" type="Node3D"] + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.898254, 0.747904, 0) +light_energy = 0.895 +omni_range = 3.31342 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.692685, 0.72124, 0, -0.72124, 0.692685, 0, 0, 0) +mesh = SubResource("CylinderMesh_04dv8") +surface_material_override/0 = SubResource("ShaderMaterial_dp3mh") + +[node name="SuzanneHighPoly" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.782847, 0.622214, 0, -0.622214, 0.782847, -1.29261, 0, -0.548574) +mesh = ExtResource("2_pao0a") +surface_material_override/0 = SubResource("ShaderMaterial_ruybp") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo.tscn new file mode 100644 index 0000000..947ccaf --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=10 format=3] + +[ext_resource type="Shader" uid="uid://dcoiyd8vndjnk" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo_vshader.tres" id="1_pxyxk"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="2_oek2h"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" id="3_oanfk"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png" id="4_s7kvu"] +[ext_resource type="Texture2D" uid="uid://dhfswrmammtnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" id="5_gl7y4"] +[ext_resource type="Texture2D" uid="uid://bqtpccn3wemel" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_orm.png" id="6_mn6qu"] +[ext_resource type="Texture2D" uid="uid://ms6yr1tx6aq8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_normal.png" id="7_06qru"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_hfkdh"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ebavy"] +render_priority = 0 +shader = ExtResource("1_pxyxk") +shader_parameter/Offset = -0.352 +shader_parameter/Fade = 0.152 +shader_parameter/BackgroundAlbedo = ExtResource("2_oek2h") +shader_parameter/ForeGroundAlbedo = ExtResource("5_gl7y4") +shader_parameter/BackgroundNormalMap = ExtResource("3_oanfk") +shader_parameter/BackgroundORM = ExtResource("4_s7kvu") +shader_parameter/ForeGroundORM = ExtResource("6_mn6qu") +shader_parameter/ForegroundNormalMap = ExtResource("7_06qru") + +[node name="Node3D" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.121389, -0.147712) +mesh = SubResource("CapsuleMesh_hfkdh") +surface_material_override/0 = SubResource("ShaderMaterial_ebavy") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.215656, 0.976469, 0, -0.976469, 0.215656, 0, -0.327638, -0.840646) +mesh = SubResource("CapsuleMesh_hfkdh") +surface_material_override/0 = SubResource("ShaderMaterial_ebavy") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +transform = Transform3D(-0.237296, 0.948579, -0.209496, 0, 0.215656, 0.976469, 0.971437, 0.231712, -0.0511742, 0.719517, -0.152918, -1.15993) +mesh = SubResource("CapsuleMesh_hfkdh") +surface_material_override/0 = SubResource("ShaderMaterial_ebavy") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo_vshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo_vshader.tres new file mode 100644 index 0000000..fd7adb9 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/world_normals/wn_mixer_demo_vshader.tres @@ -0,0 +1,344 @@ +[gd_resource type="VisualShader" load_steps=30 format=3 uid="uid://bcur15p0y873q"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/WorldNormal/WorldNormalMapMixer.gd" id="1_bkjt5"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="2_5m13w"] +[ext_resource type="Texture2D" uid="uid://dhfswrmammtnt" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/moss_orm_albedo.png" id="3_3y52a"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_avdsx"] +default_input_values = [2, Vector3(0, 1, 0), 3, 0.0, 4, 0.0] +initialized = true +script = ExtResource("1_bkjt5") + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_wsq0g"] +source = 5 +texture = ExtResource("3_3y52a") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_nfigh"] +parameter_name = "ForeGroundAlbedo" +texture_type = 1 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_dmu1v"] +parameter_name = "BackgroundAlbedo" +texture_type = 1 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_ywjnk"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 0.5] +op_type = 4 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_kaaba"] +parameter_name = "ForeGroundORM" +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_01wcq"] +source = 5 +texture = ExtResource("3_3y52a") +texture_type = 1 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_seenw"] +parameter_name = "BackgroundORM" +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ao2oe"] +source = 5 +texture = ExtResource("3_3y52a") +texture_type = 1 + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_gwat6"] +size = Vector2(799.435, 691.375) +title = "Albedos" + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_2f28t"] +parameter_name = "BackgroundNormalMap" +texture_type = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_7uyoh"] +parameter_name = "ForegroundNormalMap" +texture_type = 2 +texture_filter = 2 + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_328ma"] +source = 5 + +[sub_resource type="VisualShaderNodeColorFunc" id="VisualShaderNodeColorFunc_uj8gt"] + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_f3a5i"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 0.5] +op_type = 4 + +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_0gmxc"] + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_2o202"] +size = Vector2(1248.02, 656.815) +title = "ORM" + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_55bab"] +size = Vector2(708.197, 390.703) +title = "Foreground Normal Map" + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_sworv"] +size = Vector2(572.354, 416.313) +title = "World Normal Mixer Node" +description = "This node already includes code to add the Z back to the Normal Map. +It provides a \"Mask\" value that you can use to split +between textures." + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_pyo5e"] +default_input_values = [0, 0.0, 1, 5.023] +operator = 2 + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_jaa3j"] +size = Vector2(454.2, 369.4) +title = "Mix Normal Map Stuff" + +[sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_mcwss"] +size = Vector2(319.8, 241) +title = "Mix Fore and Background Albedos" + +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_husir"] +source = 5 +texture = ExtResource("2_5m13w") +texture_type = 1 + +[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_e8a6r"] +default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 0.5] +op_type = 4 + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_yshv2"] +parameter_name = "Offset" +default_value_enabled = true + +[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_7jdar"] +parameter_name = "Fade" +hint = 1 +default_value_enabled = true + +[resource] +code = "shader_type spatial; +uniform sampler2D BackgroundAlbedo : source_color, filter_linear; +uniform sampler2D ForeGroundAlbedo : source_color, filter_linear; +uniform sampler2D BackgroundNormalMap : hint_normal, filter_linear; +uniform float Offset = 0; +uniform float Fade : hint_range(0, 1) = 0; +uniform sampler2D BackgroundORM : filter_linear; +uniform sampler2D ForeGroundORM : filter_linear; +uniform sampler2D ForegroundNormalMap : hint_normal, filter_linear; + + +// World_Normal_Map_Mixer + +// Godot strips the z value from imported Normal Maps. +// It does this for two reasons: +// 1. Obtaining better compression because the z can be calculated by shader. +// Compression boosts speed of CPU to GPU transfer. +// 2. On mobile devices they do not do that calculation. They either ignore the z +// or do some other calculation, but the normal one (below) is apparently too slow +// or power-hungry for mobile devices. +// +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +vec3 normal_map_add_z_VisualShaderNodeWorldNormalMapMixer( + vec3 normal_map_texture, + vec2 inuv, + vec3 _TANGENT, + vec3 _BINORMAL, + vec3 _NORMAL) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + + // Unpack the background normal map. + vec3 bg_normal = normal_map_texture * 2.0 - 1.0; + + // Recalculate z-component of the normal map with the Pythagorean theorem. + bg_normal.z = sqrt(1.0 - bg_normal.x * bg_normal.x - bg_normal.y * bg_normal.y); + + // Apply the tangent-space normal map to the view-space normals. + vec3 normal_applied = bg_normal.x * _TANGENT + bg_normal.y * _BINORMAL + bg_normal.z * _NORMAL; + return normal_applied; +} + +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +float world_normal_mask_VisualShaderNodeWorldNormalMapMixer( + vec3 normal_map_texture, + vec3 vector_direction, + mat4 _VIEW_MATRIX + ) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + // Convert the world up vector into view-space with a matrix multiplication. + vec3 up_vector_viewspace = mat3(_VIEW_MATRIX) * vector_direction; + + // Compare the up vector to the surface with the normal map applied using the dot product. + float dot_product = dot(up_vector_viewspace, normal_map_texture); + + return dot_product; +} + +float mask_blend_VisualShaderNodeWorldNormalMapMixer(float offset, float fade, float mask_in) { + offset *= -1.; + + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + return smoothstep(offset - fade, offset + fade, mask_in); +} + + +void fragment() { + vec4 n_out5p0; +// Texture2D:5 + n_out5p0 = texture(BackgroundAlbedo, UV); + + + vec4 n_out11p0; +// Texture2D:11 + n_out11p0 = texture(ForeGroundAlbedo, UV); + + +// FloatParameter:8 + float n_out8p0 = Offset; + + +// FloatParameter:9 + float n_out9p0 = Fade; + + + float n_out10p0; + vec3 n_out10p1; +// World_Normal_Map_Mixer:10 + vec3 n_in10p2 = vec3(0.00000, 1.00000, 0.00000); + { + + vec3 normal_map_texture = textureLod(BackgroundNormalMap, UV, 0.).rgb; + + vec3 normal_applied = normal_map_add_z_VisualShaderNodeWorldNormalMapMixer( + normal_map_texture, + UV, + TANGENT, + BINORMAL, + NORMAL); + float mask = world_normal_mask_VisualShaderNodeWorldNormalMapMixer( + normal_applied, + n_in10p2, + VIEW_MATRIX); + float blended_mask = mask_blend_VisualShaderNodeWorldNormalMapMixer(n_out8p0, n_out9p0, mask); + n_out10p0 = blended_mask; + n_out10p1 = normal_map_texture; + + } + + +// Mix:6 + vec3 n_out6p0 = mix(vec3(n_out5p0.xyz), vec3(n_out11p0.xyz), n_out10p0); + + + vec4 n_out18p0; +// Texture2D:18 + n_out18p0 = texture(BackgroundORM, UV); + + + vec4 n_out16p0; +// Texture2D:16 + n_out16p0 = texture(ForeGroundORM, UV); + + +// Mix:27 + vec3 n_out27p0 = mix(vec3(n_out18p0.xyz), vec3(n_out16p0.xyz), n_out10p0); + + +// VectorDecompose:28 + float n_out28p0 = n_out27p0.x; + float n_out28p1 = n_out27p0.y; + float n_out28p2 = n_out27p0.z; + + + vec4 n_out21p0; +// Texture2D:21 + n_out21p0 = texture(ForegroundNormalMap, UV); + + +// Mix:14 + vec3 n_out14p0 = mix(n_out10p1, vec3(n_out21p0.xyz), n_out10p0); + + + vec3 n_out22p0; +// ColorFunc:22 + { + vec3 c = n_out6p0; + float max1 = max(c.r, c.g); + float max2 = max(max1, c.b); + n_out22p0 = vec3(max2, max2, max2); + } + + +// FloatOp:32 + float n_in32p1 = 5.02300; + float n_out32p0 = n_out22p0.x * n_in32p1; + + +// Output:0 + ALBEDO = n_out6p0; + METALLIC = n_out28p2; + ROUGHNESS = n_out28p1; + AO = n_out28p0; + NORMAL_MAP = n_out14p0; + NORMAL_MAP_DEPTH = n_out32p0; + + +} +" +graph_offset = Vector2(-316.262, -184.703) +nodes/fragment/0/position = Vector2(1600, 400) +nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_2f28t") +nodes/fragment/2/position = Vector2(-1140, 240) +nodes/fragment/5/node = SubResource("VisualShaderNodeTexture_husir") +nodes/fragment/5/position = Vector2(240, -220) +nodes/fragment/6/node = SubResource("VisualShaderNodeMix_e8a6r") +nodes/fragment/6/position = Vector2(820, -80) +nodes/fragment/8/node = SubResource("VisualShaderNodeFloatParameter_yshv2") +nodes/fragment/8/position = Vector2(-1100, 520) +nodes/fragment/9/node = SubResource("VisualShaderNodeFloatParameter_7jdar") +nodes/fragment/9/position = Vector2(-1120, 720) +nodes/fragment/10/node = SubResource("VisualShaderNodeCustom_avdsx") +nodes/fragment/10/position = Vector2(-480, 460) +nodes/fragment/11/node = SubResource("VisualShaderNodeTexture_wsq0g") +nodes/fragment/11/position = Vector2(240, -400) +nodes/fragment/12/node = SubResource("VisualShaderNodeTexture2DParameter_nfigh") +nodes/fragment/12/position = Vector2(-100, -500) +nodes/fragment/13/node = SubResource("VisualShaderNodeTexture2DParameter_dmu1v") +nodes/fragment/13/position = Vector2(-120, -220) +nodes/fragment/14/node = SubResource("VisualShaderNodeMix_ywjnk") +nodes/fragment/14/position = Vector2(1000, 240) +nodes/fragment/15/node = SubResource("VisualShaderNodeTexture2DParameter_kaaba") +nodes/fragment/15/position = Vector2(280, 1020) +nodes/fragment/16/node = SubResource("VisualShaderNodeTexture_01wcq") +nodes/fragment/16/position = Vector2(600, 1020) +nodes/fragment/17/node = SubResource("VisualShaderNodeTexture2DParameter_seenw") +nodes/fragment/17/position = Vector2(280, 740) +nodes/fragment/18/node = SubResource("VisualShaderNodeTexture_ao2oe") +nodes/fragment/18/position = Vector2(600, 740) +nodes/fragment/19/node = SubResource("VisualShaderNodeComment_gwat6") +nodes/fragment/19/position = Vector2(-220, -580) +nodes/fragment/20/node = SubResource("VisualShaderNodeTexture2DParameter_7uyoh") +nodes/fragment/20/position = Vector2(220, 300) +nodes/fragment/21/node = SubResource("VisualShaderNodeTexture_328ma") +nodes/fragment/21/position = Vector2(580, 300) +nodes/fragment/22/node = SubResource("VisualShaderNodeColorFunc_uj8gt") +nodes/fragment/22/position = Vector2(1000, 400) +nodes/fragment/27/node = SubResource("VisualShaderNodeMix_f3a5i") +nodes/fragment/27/position = Vector2(960, 860) +nodes/fragment/28/node = SubResource("VisualShaderNodeVectorDecompose_0gmxc") +nodes/fragment/28/position = Vector2(1140, 860) +nodes/fragment/29/node = SubResource("VisualShaderNodeComment_2o202") +nodes/fragment/29/position = Vector2(180, 680) +nodes/fragment/30/node = SubResource("VisualShaderNodeComment_55bab") +nodes/fragment/30/position = Vector2(140, 220) +nodes/fragment/31/node = SubResource("VisualShaderNodeComment_sworv") +nodes/fragment/31/position = Vector2(-660, 320) +nodes/fragment/32/node = SubResource("VisualShaderNodeFloatOp_pyo5e") +nodes/fragment/32/position = Vector2(1160, 400) +nodes/fragment/33/node = SubResource("VisualShaderNodeComment_jaa3j") +nodes/fragment/33/position = Vector2(880, 180) +nodes/fragment/34/node = SubResource("VisualShaderNodeComment_mcwss") +nodes/fragment/34/position = Vector2(720, -140) +nodes/fragment/connections = PackedInt32Array(2, 0, 10, 1, 8, 0, 10, 3, 9, 0, 10, 4, 10, 0, 6, 2, 6, 0, 0, 0, 12, 0, 11, 2, 13, 0, 5, 2, 11, 0, 6, 1, 5, 0, 6, 0, 15, 0, 16, 2, 17, 0, 18, 2, 20, 0, 21, 2, 14, 0, 0, 9, 10, 0, 14, 2, 21, 0, 14, 1, 10, 1, 14, 0, 6, 0, 22, 0, 10, 0, 27, 2, 16, 0, 27, 1, 18, 0, 27, 0, 27, 0, 28, 0, 28, 0, 0, 6, 28, 1, 0, 3, 28, 2, 0, 2, 22, 0, 32, 0, 32, 0, 0, 10) diff --git a/addons/VisualShaderExtras/AddonExamples/examples.tscn b/addons/VisualShaderExtras/AddonExamples/examples.tscn index 5712e29..7136c35 100644 --- a/addons/VisualShaderExtras/AddonExamples/examples.tscn +++ b/addons/VisualShaderExtras/AddonExamples/examples.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=320 format=3 uid="uid://cv4lpljwiaudr"] +[gd_scene load_steps=328 format=3 uid="uid://cnuej70tbjgwd"] [ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="1_pmvkm"] -[ext_resource type="Texture2D" uid="uid://im3imr3u2j1y" path="res://addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png" id="2_myiw4"] +[ext_resource type="Texture2D" uid="uid://e6k5hrwrnjy3" path="res://addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png" id="2_myiw4"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/normal_blend.gd" id="3_t67k3"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/dissolve_blend.gd" id="4_eqjgp"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/screen_blend.gd" id="5_afmfx"] @@ -26,12 +26,13 @@ [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/linear_burn_blend.gd" id="24_fak3r"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/lighter_color_blend.gd" id="25_1twgi"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/BlendModes/darker_color_blend.gd" id="26_37c4m"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Procedural/Checkerboard.gd" id="27_5htah"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Procedural/PSRD-Noise2D.gd" id="27_qxbdi"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/ColorAdjustment/HSVAdjustment.gd" id="28_ye5rl"] -[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Box.gd" id="29_k5cvk"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Circle.gd" id="30_nhxin"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Parallelogram.gd" id="31_3swwc"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Procedural/PSRD-Noise3D.gd" id="31_a7ssf"] +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Box.gd" id="31_hcapl"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Rhombus.gd" id="32_2uhvd"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/PreciseBox.gd" id="33_q3h5g"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/RoundedBox.gd" id="34_yicdm"] @@ -113,14 +114,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("68") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_8j805"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_yy23m"] texture = SubResource("CompressedTexture2D_8j805") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_yfuqr"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_fxobl"] texture = SubResource("CompressedTexture2D_yfuqr") @@ -197,14 +196,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_my0mx") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_0hw3s"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_sxjik"] texture = SubResource("CompressedTexture2D_0hw3s") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_qdblg"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ik4a7"] texture = SubResource("CompressedTexture2D_qdblg") @@ -267,14 +264,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_unmd3") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_1ynhs"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_rt0m3"] texture = SubResource("CompressedTexture2D_1ynhs") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_edt0t"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_xhs62"] texture = SubResource("CompressedTexture2D_edt0t") @@ -341,14 +336,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_mvyjv") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_vxpi2"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_8w4nd"] texture = SubResource("CompressedTexture2D_vxpi2") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_oxl1k"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_8firm"] texture = SubResource("CompressedTexture2D_oxl1k") @@ -419,14 +412,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_ne8xj") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_00ke3"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_elge6"] texture = SubResource("CompressedTexture2D_00ke3") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_cp33d"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_6h42k"] texture = SubResource("CompressedTexture2D_cp33d") @@ -493,14 +484,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_peul7") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_6ow1i"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_seack"] texture = SubResource("CompressedTexture2D_6ow1i") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_17q7d"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ao4mv"] texture = SubResource("CompressedTexture2D_17q7d") @@ -567,14 +556,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_3ay0w") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_8y6sy"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_kj7vr"] texture = SubResource("CompressedTexture2D_8y6sy") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_vy1rt"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_5cu28"] texture = SubResource("CompressedTexture2D_vy1rt") @@ -641,14 +628,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_dt03t") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_ooykv"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_y28sw"] texture = SubResource("CompressedTexture2D_ooykv") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_dvrwt"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_pn8yk"] texture = SubResource("CompressedTexture2D_dvrwt") @@ -711,14 +696,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_mti26") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_7yhob"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_tsdn0"] texture = SubResource("CompressedTexture2D_7yhob") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_78r8g"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_rsvo0"] texture = SubResource("CompressedTexture2D_78r8g") @@ -781,14 +764,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_4a1r1") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_wxvs1"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_6x7wi"] texture = SubResource("CompressedTexture2D_wxvs1") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_upvxc"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_k15wi"] texture = SubResource("CompressedTexture2D_upvxc") @@ -851,14 +832,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_0hxt1") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_rdblh"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_x4y2t"] texture = SubResource("CompressedTexture2D_rdblh") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_m2qfr"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_gj8i7"] texture = SubResource("CompressedTexture2D_m2qfr") @@ -921,14 +900,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_y0dk6") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_hkxip"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_lkoh1"] texture = SubResource("CompressedTexture2D_hkxip") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_1fmn1"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_jxr11"] texture = SubResource("CompressedTexture2D_1fmn1") @@ -991,14 +968,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_qrxbr") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_qiwvk"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_uknmv"] texture = SubResource("CompressedTexture2D_qiwvk") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_f85gt"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_6n35c"] texture = SubResource("CompressedTexture2D_f85gt") @@ -1065,14 +1040,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_fahnp") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_pxd8u"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_6n6vq"] texture = SubResource("CompressedTexture2D_pxd8u") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_j4xhf"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_t70bk"] texture = SubResource("CompressedTexture2D_j4xhf") @@ -1139,14 +1112,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_bkutg") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_wcipp"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_mgtt1"] texture = SubResource("CompressedTexture2D_wcipp") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_vg1kd"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_skt4l"] texture = SubResource("CompressedTexture2D_vg1kd") @@ -1213,14 +1184,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_vs058") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_w77h0"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_pci2l"] texture = SubResource("CompressedTexture2D_w77h0") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_ltems"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_4j1w7"] texture = SubResource("CompressedTexture2D_ltems") @@ -1291,14 +1260,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_fch6n") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_3qkdn"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_fbka3"] texture = SubResource("CompressedTexture2D_3qkdn") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_lavva"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_n2e2a"] texture = SubResource("CompressedTexture2D_lavva") @@ -1365,14 +1332,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_nbmqa") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_oqyir"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_bkrbv"] texture = SubResource("CompressedTexture2D_oqyir") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_7rrsv"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_4ci2j"] texture = SubResource("CompressedTexture2D_7rrsv") @@ -1441,14 +1406,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_6so37") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_u3em0"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_tctwu"] texture = SubResource("CompressedTexture2D_u3em0") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_l1c1l"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_43pa2"] texture = SubResource("CompressedTexture2D_l1c1l") @@ -1517,14 +1480,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_x1r6j") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_3rhjo"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_xy11v"] texture = SubResource("CompressedTexture2D_3rhjo") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_4yyob"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_70u2u"] texture = SubResource("CompressedTexture2D_4yyob") @@ -1593,14 +1554,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_5pcav") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_tlqw3"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_thkhw"] texture = SubResource("CompressedTexture2D_tlqw3") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_hview"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_2hipn"] texture = SubResource("CompressedTexture2D_hview") @@ -1675,14 +1634,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_t28pt") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_xrhoy"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_t0mwb"] texture = SubResource("CompressedTexture2D_xrhoy") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_8wahj"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_aqwmg"] texture = SubResource("CompressedTexture2D_8wahj") @@ -1749,14 +1706,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_t0pob") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_73dxk"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ro1fw"] texture = SubResource("CompressedTexture2D_73dxk") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_8rya1"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_sh8cd"] texture = SubResource("CompressedTexture2D_8rya1") @@ -1825,14 +1780,12 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 shader = SubResource("VisualShader_rnl3p") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_abuxd"] -load_path = "res://.godot/imported/icon.svg-d75c7d1600269a4e12e1397faef24712.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ki8cq"] texture = SubResource("CompressedTexture2D_abuxd") texture_type = 1 [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_xwk36"] -load_path = "res://.godot/imported/VisualShaderExtras-Logo-128x128.png-baf0a25b91b2730f8004ac7a0f413caa.s3tc.ctex" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_qf4do"] texture = SubResource("CompressedTexture2D_xwk36") @@ -1900,89 +1853,16 @@ nodes/fragment/connections = PackedInt32Array(6, 0, 7, 0, 4, 0, 7, 1, 7, 0, 0, 0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_uvepn"] shader = SubResource("VisualShader_8l46s") -[sub_resource type="GDScript" id="GDScript_xqgp2"] -script/source = "@tool -extends VisualShaderNodeCustom -class_name VisualShaderNodeCheckerboard - -func _get_name(): - return \"Checkerboard\" - -func _init() -> void: - set_input_port_default_value(1, Vector2(8.0, 8.0)) - -func _get_category(): - return \"VisualShaderExtras/Procedural\" - -func _get_description(): - return \"Checkerboard Pattern with two given input colors\" - -func _get_return_icon_type(): - return VisualShaderNode.PORT_TYPE_VECTOR_3D - -func _get_input_port_count(): - return 4 - -func _get_input_port_name(port): - match port: - 0: - return \"UV\" - 1: - return \"Tiling\" - 2: - return \"Color\" - 3: - return \"Color\" - -func _get_input_port_type(port): - match port: - 0: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 1: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 2: - return VisualShaderNode.PORT_TYPE_VECTOR_3D - 3: - return VisualShaderNode.PORT_TYPE_VECTOR_3D - -func _get_output_port_count(): - return 1 - -func _get_output_port_name(port: int) -> String: - return \"\" - -func _get_output_port_type(port): - return VisualShaderNode.PORT_TYPE_VECTOR_3D - -func _get_global_code(mode): - return \"\"\" - vec3 checkerboard(vec2 _uv, vec2 _tiling, vec3 _color1, vec3 _color2) { - float _tiling_x = floor(mod((_uv.x / (1.0 / _tiling.x)), 2.0)); - float _tiling_y = floor(mod((_uv.y / (1.0 / _tiling.y)), 2.0)); - bool _compare_bool = (abs(_tiling_x - _tiling_y) < 0.00001); - return mix(_color1.xyz, _color2.xyz, (_compare_bool ? 1.0 : 0.0)); - } - \"\"\" - -func _get_code(input_vars, output_vars, mode, type): - var uv = \"UV\" - - if input_vars[0]: - uv = input_vars[0] - - return \"%s.xyz = checkerboard(%s.xy, %s.xy, %s, %s);\" % [output_vars[0], uv, input_vars[1], input_vars[2], input_vars[3]] -" - -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_e0cta"] -default_input_values = [1, Vector2(8, 8)] -initialized = true -script = SubResource("GDScript_xqgp2") - [sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_cc80l"] [sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_2p266"] constant = Color(0, 0, 0, 1) +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_pj0ae"] +default_input_values = [1, Vector2(8, 8)] +initialized = true +script = ExtResource("27_5htah") + [sub_resource type="VisualShader" id="VisualShader_bbxpt"] code = "shader_type canvas_item; @@ -2006,30 +1886,30 @@ void fragment() { vec4 n_out4p0 = vec4(0.000000, 0.000000, 0.000000, 1.000000); - vec3 n_out2p0; -// Checkerboard:2 - vec2 n_in2p1 = vec2(8.00000, 8.00000); + vec3 n_out5p0; +// Checkerboard:5 + vec2 n_in5p1 = vec2(8.00000, 8.00000); { - n_out2p0.xyz = checkerboard(UV.xy, n_in2p1.xy, vec3(n_out3p0.xyz), vec3(n_out4p0.xyz)); + n_out5p0.xyz = checkerboard(UV.xy, n_in5p1.xy, vec3(n_out3p0.xyz), vec3(n_out4p0.xyz)); } // Output:0 - COLOR.rgb = n_out2p0; + COLOR.rgb = n_out5p0; } " -graph_offset = Vector2(-61, 72) +graph_offset = Vector2(-137, 25) mode = 1 flags/light_only = false -nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_e0cta") -nodes/fragment/2/position = Vector2(180, 180) nodes/fragment/3/node = SubResource("VisualShaderNodeColorConstant_cc80l") nodes/fragment/3/position = Vector2(-60, 220) nodes/fragment/4/node = SubResource("VisualShaderNodeColorConstant_2p266") nodes/fragment/4/position = Vector2(-40, 300) -nodes/fragment/connections = PackedInt32Array(2, 0, 0, 0, 3, 0, 2, 2, 4, 0, 2, 3) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_pj0ae") +nodes/fragment/5/position = Vector2(140, 120) +nodes/fragment/connections = PackedInt32Array(3, 0, 5, 2, 4, 0, 5, 3, 5, 0, 0, 0) [sub_resource type="ShaderMaterial" id="ShaderMaterial_ijt06"] shader = SubResource("VisualShader_bbxpt") @@ -2298,7 +2178,7 @@ script = ExtResource("43_ada6o") code = "shader_type canvas_item; -// UVRadialGradient +// RadialGradient float uv_radial_gradient(vec2 uv, vec2 offset, float fraction_size) { vec2 __uv = uv - offset; @@ -2310,7 +2190,7 @@ code = "shader_type canvas_item; void fragment() { float n_out2p0; -// UVRadialGradient:2 +// RadialGradient:2 vec2 n_in2p1 = vec2(0.50000, 0.50000); float n_in2p2 = 2.00000; { @@ -2414,12 +2294,28 @@ nodes/fragment/connections = PackedInt32Array(3, 0, 4, 0, 6, 0, 0, 0, 4, 0, 6, 0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_le34p"] shader = SubResource("VisualShader_5n70k") -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dkexg"] -default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25)] +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_2kfye"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.317, 0.316), 3, 0.0] initialized = true -script = ExtResource("29_k5cvk") +script = ExtResource("31_hcapl") + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_vmtac"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_jr8jk"] +output_port_for_preview = 0 +default_input_values = [0, 0.0, 1, 0.5, 2, 0.0, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] -[sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_3vt21"] +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_q1cc4"] +default_input_values = [0, Vector2(0, 0)] +op_type = 0 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_mirv2"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25), 3, 0.057] +initialized = true +script = ExtResource("31_hcapl") [sub_resource type="VisualShader" id="VisualShader_ew583"] code = "shader_type canvas_item; @@ -2427,50 +2323,116 @@ code = "shader_type canvas_item; // Box - float sdBox( in vec2 __position, in vec2 __proportions ) - { - vec2 __d = abs(__position) - __proportions; - return length(max(__d, 0.0)) + min(max(__d.x, __d.y), 0.0); - } +float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) { + vec2 d = abs(_pos) - _proportions; + float outside = length(max(d, 0.)); + float inside = min(max(d.x, d.y), 0.); + float both = outside + inside; + //float f = outside - _feather; //makes a kind of outline + + // ok! smoothness is v sensitive tho. + // when f is 0 the edge is sharp + float f = _feather; + + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black +} + void fragment() { - float n_out2p0; -// Box:2 - vec2 n_in2p1 = vec2(0.50000, 0.50000); - vec2 n_in2p2 = vec2(0.25000, 0.25000); +// Input:6 + vec2 n_out6p0 = UV; + + +// VectorDecompose:8 + float n_out8p0 = n_out6p0.x; + float n_out8p1 = n_out6p0.y; + + + float n_out9p0; +// Box:9 + vec2 n_in9p1 = vec2(0.50000, 0.50000); + vec2 n_in9p2 = vec2(0.25000, 0.25000); + float n_in9p3 = 0.05700; { - n_out2p0 = sdBox(UV.xy - n_in2p1.xy, n_in2p2.xy); + n_out9p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in9p1, n_in9p2, n_in9p3); } -// Step:3 - float n_in3p1 = 0.00000; - float n_out3p0 = step(n_out2p0, n_in3p1); + float n_out10p0; +// Box:10 + vec2 n_in10p1 = vec2(0.50000, 0.50000); + vec2 n_in10p2 = vec2(0.31700, 0.31600); + float n_in10p3 = 0.00000; + { + n_out10p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in10p1, n_in10p2, n_in10p3); + } + + + vec3 n_out7p0; +// If:7 + float n_in7p1 = 0.50000; + float n_in7p2 = 0.00000; + vec3 n_in7p3 = vec3(0.00000, 0.00000, 0.00000); + if(abs(n_out8p0 - n_in7p1) < n_in7p2) + { + n_out7p0 = n_in7p3; + } + else if(n_out8p0 < n_in7p1) + { + n_out7p0 = vec3(n_out10p0); + } + else + { + n_out7p0 = vec3(n_out9p0); + } // Output:0 - COLOR.rgb = vec3(n_out3p0); + COLOR.rgb = n_out7p0; } " -graph_offset = Vector2(-265, -41) +graph_offset = Vector2(-452.579, 31.6431) mode = 1 flags/light_only = false -nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_dkexg") -nodes/fragment/2/position = Vector2(-240, 120) -nodes/fragment/3/node = SubResource("VisualShaderNodeStep_3vt21") -nodes/fragment/3/position = Vector2(60, 180) -nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 3, 0, 0, 0) +nodes/fragment/6/node = SubResource("VisualShaderNodeInput_vmtac") +nodes/fragment/6/position = Vector2(-460, 540) +nodes/fragment/7/node = SubResource("VisualShaderNodeIf_jr8jk") +nodes/fragment/7/position = Vector2(120, 180) +nodes/fragment/8/node = SubResource("VisualShaderNodeVectorDecompose_q1cc4") +nodes/fragment/8/position = Vector2(-140, 460) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_mirv2") +nodes/fragment/9/position = Vector2(-360, 180) +nodes/fragment/10/node = SubResource("VisualShaderNodeCustom_2kfye") +nodes/fragment/10/position = Vector2(-580, 100) +nodes/fragment/connections = PackedInt32Array(6, 0, 8, 0, 8, 0, 7, 0, 9, 0, 7, 4, 7, 0, 0, 0, 10, 0, 7, 5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_yp0tr"] shader = SubResource("VisualShader_ew583") -[sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_waqbe"] +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_5lnj3"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.988] +initialized = true +script = ExtResource("30_nhxin") + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_5kd2u"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_x4hn7"] +output_port_for_preview = 0 +default_input_values = [0, 0.0, 1, 0.5, 2, 0.001, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_7hsui"] -default_input_values = [1, Vector2(0.5, 0.5), 2, 0.25] +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_6vtrh"] +default_input_values = [0, Vector2(0, 0)] +op_type = 0 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_cb4jc"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.001] initialized = true script = ExtResource("30_nhxin") @@ -2480,40 +2442,88 @@ code = "shader_type canvas_item; // Circle - float sdCircle(vec2 pos, float r) { - return length(pos) - r; - } - +//Original code +//float sdCircle(vec2 pos, float r) { +// return step(length(pos) - r, pos).x; +//} + +//New hack - faster than using length func +float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) +{ + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); +} + void fragment() { +// Input:5 + vec2 n_out5p0 = UV; + + +// VectorDecompose:8 + float n_out8p0 = n_out5p0.x; + float n_out8p1 = n_out5p0.y; + + float n_out4p0; // Circle:4 vec2 n_in4p1 = vec2(0.50000, 0.50000); - float n_in4p2 = 0.25000; + float n_in4p2 = 0.27600; + float n_in4p3 = 0.98800; { - n_out4p0 = sdCircle(UV.xy - n_in4p1.xy, n_in4p2); + n_out4p0 = VisualShaderNodeCircle_circle(UV - n_in4p1, n_in4p2, n_in4p3); } -// Step:3 - float n_in3p1 = 0.00000; - float n_out3p0 = step(n_out4p0, n_in3p1); + float n_out9p0; +// Circle:9 + vec2 n_in9p1 = vec2(0.50000, 0.50000); + float n_in9p2 = 0.27600; + float n_in9p3 = 0.00100; + { + n_out9p0 = VisualShaderNodeCircle_circle(UV - n_in9p1, n_in9p2, n_in9p3); + } + + + vec3 n_out7p0; +// If:7 + float n_in7p1 = 0.50000; + float n_in7p2 = 0.00100; + vec3 n_in7p3 = vec3(0.00000, 0.00000, 0.00000); + if(abs(n_out8p0 - n_in7p1) < n_in7p2) + { + n_out7p0 = n_in7p3; + } + else if(n_out8p0 < n_in7p1) + { + n_out7p0 = vec3(n_out9p0); + } + else + { + n_out7p0 = vec3(n_out4p0); + } // Output:0 - COLOR.rgb = vec3(n_out3p0); + COLOR.rgb = n_out7p0; } " -graph_offset = Vector2(-306, -11) +graph_offset = Vector2(-319.527, 173.247) mode = 1 flags/light_only = false -nodes/fragment/3/node = SubResource("VisualShaderNodeStep_waqbe") -nodes/fragment/3/position = Vector2(60, 180) -nodes/fragment/4/node = SubResource("VisualShaderNodeCustom_7hsui") -nodes/fragment/4/position = Vector2(-197, 129) -nodes/fragment/connections = PackedInt32Array(3, 0, 0, 0, 4, 0, 3, 0) +nodes/fragment/0/position = Vector2(480, 240) +nodes/fragment/4/node = SubResource("VisualShaderNodeCustom_5lnj3") +nodes/fragment/4/position = Vector2(-380, 300) +nodes/fragment/5/node = SubResource("VisualShaderNodeInput_5kd2u") +nodes/fragment/5/position = Vector2(-520, 160) +nodes/fragment/7/node = SubResource("VisualShaderNodeIf_x4hn7") +nodes/fragment/7/position = Vector2(120, 320) +nodes/fragment/8/node = SubResource("VisualShaderNodeVectorDecompose_6vtrh") +nodes/fragment/8/position = Vector2(-120, 180) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_cb4jc") +nodes/fragment/9/position = Vector2(-180, 480) +nodes/fragment/connections = PackedInt32Array(5, 0, 8, 0, 8, 0, 7, 0, 4, 0, 7, 4, 7, 0, 0, 0, 9, 0, 7, 5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_52mrt"] shader = SubResource("VisualShader_b85uw") @@ -2568,7 +2578,7 @@ void fragment() { } " -graph_offset = Vector2(-335, -68.8333) +graph_offset = Vector2(-306.727, -11.4546) mode = 1 flags/light_only = false nodes/fragment/3/node = SubResource("VisualShaderNodeStep_287f8") @@ -3035,106 +3045,148 @@ nodes/fragment/connections = PackedInt32Array(3, 0, 0, 0, 3, 0, 5, 0, 5, 3, 0, 1 shader = SubResource("VisualShader_pgiym") shader_parameter/MainTex = ExtResource("38_u53ku") -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_fuam6"] -default_input_values = [0, Vector2(2, 2), 1, 4.0, 2, 2.08165e-12] +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_8cwaj"] +default_input_values = [0, Vector2(2, 2), 1, 0.0, 2, 0.0, 3, 0.5] initialized = true script = ExtResource("40_x0ogt") +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_e266m"] +texture = ExtResource("1_pmvkm") + [sub_resource type="VisualShader" id="VisualShader_8gnev"] code = "shader_type canvas_item; +uniform sampler2D tex_frg_3; // UVTiler - vec2 tile(vec2 _uv, float _zoom){ - _uv *= _zoom; - return fract(_uv); - } - - vec2 rotate(vec2 _uv, float _angle) { - _uv -= 0.5; - _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; - _uv += 0.5; - return _uv; - } - +vec2 vec2_rotate_NodeUVTilerV3(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} +vec2 brick_tile_NodeUVTilerV3(vec2 _uv, float _zoom, float _shift) +{ + _uv.x += step(1.0, mod(_uv.y, 2.0)) * _shift; + return fract(_uv); +} +// Returns float from 0.0 to 1.0 +float random_float_NodeUVTilerV3(vec2 input) { + return fract(sin(dot(input.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + void fragment() { vec2 n_out2p0; // UVTiler:2 vec2 n_in2p0 = vec2(2.00000, 2.00000); - float n_in2p1 = 4.00000; + float n_in2p1 = 0.00000; float n_in2p2 = 0.00000; + float n_in2p3 = 0.50000; { - vec2 st = UV.xy/n_in2p0.xy; - st = tile(st,n_in2p1); - st = rotate(st, n_in2p2); + //Much simpler to calculate zoom from the tiling vec2 + float zoom = (n_in2p0.x * n_in2p0.y); + + vec2 st = UV/n_in2p0; + st *= zoom; //Scale coordinate system by zoom + + vec2 unique_val = floor( st ); //get the integer coordinates + + //Something about this calc is the problem with the brick shift when + //rr is > 0 + float rand_rotation = (( random_float_NodeUVTilerV3(unique_val) * 2.0) - 1.0) * n_in2p2; + + //Just add whatever static rotation may be input and clamp: + rand_rotation = clamp(rand_rotation + n_in2p1, 0.0, 2.*PI); + + st = brick_tile_NodeUVTilerV3(st, zoom, n_in2p3); + st = vec2_rotate_NodeUVTilerV3(st, rand_rotation, vec2(0.5)); + n_out2p0 = st; } +// Texture2D:3 + vec4 n_out3p0 = texture(tex_frg_3, n_out2p0); + + // Output:0 - COLOR.rgb = vec3(n_out2p0, 0.0); + COLOR.rgb = vec3(n_out3p0.xyz); } " -graph_offset = Vector2(-491, -33) +graph_offset = Vector2(-324.562, -15.0541) mode = 1 flags/light_only = false nodes/fragment/0/position = Vector2(340, 40) -nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_fuam6") -nodes/fragment/2/position = Vector2(-260, 60) -nodes/fragment/connections = PackedInt32Array(2, 0, 0, 0) +nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_8cwaj") +nodes/fragment/2/position = Vector2(-200, 100) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_e266m") +nodes/fragment/3/position = Vector2(120, 160) +nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 3, 0, 0, 0) [sub_resource type="ShaderMaterial" id="ShaderMaterial_v8ct1"] shader = SubResource("VisualShader_8gnev") -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_a1kwj"] -default_input_values = [1, Vector2(0.5, 0.5), 2, 10.0, 3, Vector2(0, 0)] +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_6p5lt"] +default_input_values = [1, Vector2(0.5, 0.5), 2, 11.97] initialized = true script = ExtResource("41_7oy85") +[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_pdxj7"] +texture = ExtResource("1_pmvkm") + [sub_resource type="VisualShader" id="VisualShader_7uhii"] code = "shader_type canvas_item; +uniform sampler2D tex_frg_3; // UVRotate - vec2 uv_rotate(vec2 uv, vec2 pivot, float angle) { - mat2 rotation = mat2(vec2(sin(angle), -cos(angle)), vec2(cos(angle), sin(angle))); - uv -= pivot; - uv = uv * rotation; - uv += pivot; - return uv; - } - +vec2 vec2_rotate_NodeUVRotateV2(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} void fragment() { vec2 n_out2p0; // UVRotate:2 vec2 n_in2p1 = vec2(0.50000, 0.50000); - float n_in2p2 = 10.00000; + float n_in2p2 = 11.97000; { - n_out2p0.xy = uv_rotate(UV.xy, n_in2p1.xy, n_in2p2); + + vec2 rotated_uv = UV; + rotated_uv = vec2_rotate_NodeUVRotateV2(UV, n_in2p2, n_in2p1); + n_out2p0 = rotated_uv; + } +// Texture2D:3 + vec4 n_out3p0 = texture(tex_frg_3, n_out2p0); + + // Output:0 - COLOR.rgb = vec3(n_out2p0, 0.0); + COLOR.rgb = vec3(n_out3p0.xyz); } " -graph_offset = Vector2(-175, 13) +graph_offset = Vector2(-368.661, 10.4463) mode = 1 flags/light_only = false nodes/fragment/0/position = Vector2(340, 40) -nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_a1kwj") -nodes/fragment/2/position = Vector2(80, 40) -nodes/fragment/connections = PackedInt32Array(2, 0, 0, 0) +nodes/fragment/2/node = SubResource("VisualShaderNodeCustom_6p5lt") +nodes/fragment/2/position = Vector2(-166, 88) +nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_pdxj7") +nodes/fragment/3/position = Vector2(60, 120) +nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 3, 0, 0, 0) [sub_resource type="ShaderMaterial" id="ShaderMaterial_cu70s"] shader = SubResource("VisualShader_7uhii") @@ -3441,6 +3493,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="BlendModes" type="Control" parent="."] +visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -3935,11 +3988,14 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="Shapes" type="Control" parent="."] -visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_left = -3.0 +offset_top = 3.0 +offset_right = -3.0 +offset_bottom = 3.0 grow_horizontal = 2 grow_vertical = 2 diff --git a/addons/VisualShaderExtras/Filters/LodBlur.gd b/addons/VisualShaderExtras/Filters/LodBlur.gd new file mode 100644 index 0000000..fa269b4 --- /dev/null +++ b/addons/VisualShaderExtras/Filters/LodBlur.gd @@ -0,0 +1,78 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeLodBlur + +func _get_name(): + return "LoDBlur" + +func _get_category(): + return "VisualShaderExtras/Filters" + +func _get_description(): + return "Blurs using the LOD mipmaps of this texture.\nNB: Be sure to try different Sampler Filters.\nBlurs textures added via a Texture2DParameter Node." + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int) -> String: + return "Output" + +func _init() -> void: + set_input_port_default_value(2, 0.0) + +func _get_input_port_count(): + return 3 + +func _get_input_port_name(port): + match port: + 0: return "UV" + 1: return "Texture Sampler" + 2: return "Blur Amount" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SAMPLER + 2: return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_code(input_vars, output_vars, mode, type): + var inuv = "UV" + if input_vars[0]: + inuv = input_vars[0] + + return """ + //When the sampler is set to Linear Mipmap it works best. + //The Bias will cause blurring. + vec4 color = textureLod({sampler}, {inuv}, {bias}); + {outcol} = color.rgb; + """.format( + { + "inuv": inuv, + "sampler": input_vars[1], + "bias" : input_vars[2], + "outcol" : output_vars[0] + }) diff --git a/addons/VisualShaderExtras/SeamlessTiling/seamless_hexagonal_tiler.gd b/addons/VisualShaderExtras/SeamlessTiling/seamless_hexagonal_tiler.gd new file mode 100644 index 0000000..4fbd643 --- /dev/null +++ b/addons/VisualShaderExtras/SeamlessTiling/seamless_hexagonal_tiler.gd @@ -0,0 +1,312 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## Ben Cloward: Numbers 45,46,47 and 48. +## Start here: https://www.youtube.com/watch?v=hc6msdFcnA4 + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeSeamlessHexagonTiling + +func _get_name(): + return "SeamlessHexagonTiling" + +func _get_category(): + return "VisualShaderExtras/SeamlessTiling" + +func _get_description(): + return """Seamless hexagonal tiler. Taken from the Youtube tuts by Ben Cloward + Numbers 45,46,47 and 48. + Link: https://www.youtube.com/watch?v=hc6msdFcnA4""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _is_highend(): + return true #mark as PC only. + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +enum {KEY, NAME, PORT_TYPE_IN, PORT_TYPE_OUT} +enum _in {UV,A,ORM,NM,HTILE,HF} +enum _out {A,ORM,FNM} #,UV1,UV2,UV3,M,S1,S2,S3} +const names_in := [ + #[key, name, type_in, type_out] + ["UV", "UV", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], + ["A", "Albedo", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_4D], + ["ORM","ORM", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["NM", "NormalMap", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["HTILE", "HexTiling", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], + ["HF", "HexFocus", VisualShaderNode.PORT_TYPE_SCALAR, VisualShaderNode.PORT_TYPE_SCALAR] +] +const names_out := [ + ["A", "Albedo", VisualShaderNode.PORT_TYPE_VECTOR_3D, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["ORM", "ORM", VisualShaderNode.PORT_TYPE_VECTOR_3D, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["FNM", "NormalMap", VisualShaderNode.PORT_TYPE_VECTOR_3D, VisualShaderNode.PORT_TYPE_VECTOR_3D], +# ["UV1", "UV1", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +# ["UV2", "UV2", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +# ["UV3", "UV3", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +# ["M", "Masks", VisualShaderNode.PORT_TYPE_VECTOR_3D, VisualShaderNode.PORT_TYPE_VECTOR_3D], +# ["S1", "Seed1", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +# ["S2", "Seed2", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +# ["S3", "Seed3", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], +] + +func _get_output_port_count(): + return names_out.size() + +func _get_output_port_type(port): + return names_out[port][PORT_TYPE_OUT] + +func _get_output_port_name(port: int): + return names_out[port][1] + +func _init() -> void: + set_input_port_default_value(_in.HTILE, Vector2(12.0,12.0)) + set_input_port_default_value(_in.HF, 8.0) + +func _get_input_port_count(): + return names_in.size() + +func _get_input_port_name(port): + return names_in[port][NAME] + +func _get_input_port_type(port): + return names_in[port][PORT_TYPE_IN] + +func _get_global_code(mode): + return """ +vec2 HTD_Translate(vec2 _UV, vec2 amount){ return _UV + amount; } +vec2 HTD_Scale(vec2 _UV, vec2 amount){ return _UV * amount; } + +vec2 HTD_Rotate(vec2 _uv, float _angle){ + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + return _uv ; +} +vec3 HTD_Hash2(vec2 _UV){ + return fract(sin(vec3( + dot(vec3(_UV.x, _UV.y, _UV.x), vec3(127.09, 311.7, 74.69)), + dot(vec3(_UV.y, _UV.x, _UV.x), vec3(269.5, 183.3, 246.1)), + dot(vec3(_UV.x, _UV.y, _UV.y), vec3(113.5, 271.89, 124.59)) + )) * 43758.5453); +} +vec2 HTD_Transform(vec2 _UV, float rotation, vec2 scale, vec2 translation){ + return HTD_Translate( + HTD_Scale( + HTD_Rotate(_UV, rotation), + scale), + translation); +} + +vec2 HTD_FixNormalMap(vec2 _rg, float _unrot) { + float rot = TAU -_unrot; + _rg -= vec2(0.5); //This is the special voodoo. Rodzilla said NormalMaps are centered in color space. Shrug. + _rg = HTD_Rotate(_rg, rot); + _rg += vec2(0.5); + return _rg; +} + +vec2 HTD_Transform_uv(vec2 _uv, vec2 seed, out float out_rotation) { + vec3 hash = HTD_Hash2(seed); + float rot = mix(-PI, PI, fract(hash.b*16.)); + float scl = mix(.8, 1.2, hash.b); + out_rotation = rot; + return HTD_Transform(_uv, rot, vec2(scl), hash.xy); +} + +""" + +var xyz:={"1":"x","2":"y","3":"z"} +func _get_code(input_vars, output_vars, mode, type): + var outputs="" + + var inuv := "UV" + if input_vars[_in.UV]: + inuv = input_vars[_in.UV] + + # code for everything but normal map: + var r_and_s = """ +_read_rgb = texture({sampler}, uv_transformed_{counter}); +_rgb_{counter} = _read_rgb.rgb * vec3(channel_masks.{xyorz}); +""" + #Handle Albedo Input + var sam_albedo:="" + if input_vars[_in.A]: + sam_albedo += "_read_rgb = vec4(0.);" + for e in ["1","2","3"]: + var tmp := r_and_s.format({"sampler":input_vars[_in.A]}) + sam_albedo+= tmp.format({"counter":e,"xyorz":xyz[e]}) + sam_albedo += """ +//Add them +{A} = _rgb_1 + _rgb_2 + _rgb_3; + """.format( {"A": output_vars[_out.A]} ) + + #Handle ORM Input + var sam_orm:="" + if input_vars[_in.ORM]: + sam_orm += "_read_rgb = vec4(0.);" + for e in ["1","2","3"]: + var tmp := r_and_s.format({"sampler":input_vars[_in.ORM]}) + sam_orm+= tmp.format({"counter":e,"xyorz":xyz[e]}) + sam_orm += """ +//Add them +{ORM} = _rgb_1 + _rgb_2 + _rgb_3; + """.format( {"ORM": output_vars[_out.ORM]} ) + + # Handle Normal Map + var sam_nm:="" + if input_vars[_in.NM]: + var fix_normal = """ +_read_rgb = texture({sampler}, uv_transformed_{counter}); +fixed_rg = vec2(0.0, 0.0); +fixed_rg = HTD_FixNormalMap(_read_rgb.rg, out_rotation_{counter}); +_rgb_{counter} = vec3(fixed_rg, 0.) * vec3(channel_masks.{xyorz}); + """ + sam_nm += "_read_rgb = vec4(0.); vec2 fixed_rg;" + for e in ["1","2","3"]: + var tmp := fix_normal.format({"sampler":input_vars[_in.NM]}) + sam_nm+= tmp.format({"counter":e,"xyorz":xyz[e]}) + sam_nm += """ +//Add them +{NM} = _rgb_1 + _rgb_2 + _rgb_3; + """.format( {"NM": output_vars[_out.FNM]} ) + + var return_shader = shader.format( + { + "uv_in" : inuv, + "HexTiling": input_vars[_in.HTILE], + "HexFocus": input_vars[_in.HF], + "albedo_transform_and_sample":sam_albedo, + "orm_transform_and_sample":sam_orm, + "normalmap_transform_and_sample_and_fix":sam_nm, +# "UV1" : output_vars[_out.UV1], +# "UV2" : output_vars[_out.UV2], +# "UV3" : output_vars[_out.UV3], +# "MASKS" : output_vars[_out.M], +# "SEED1" : output_vars[_out.S1], +# "SEED2" : output_vars[_out.S2], +# "SEED3" : output_vars[_out.S3] + }) + return return_shader + +var shader=""" +vec2 uv_tiled = {uv_in} * {HexTiling}; + +/////////////////////////////// +//STEP 0 : Unskew the uv map +float magic_number = 1.73200 / 2.000; //magic numbers +float tmp_60p0 = uv_tiled.y * (0.5 / magic_number); +float tmp_61p0 = uv_tiled.x - tmp_60p0; +float tmp_57p0 = 1.0 / (magic_number); +float tmp_59p0 = uv_tiled.y * tmp_57p0; +vec2 tmp_62p0 = vec2(tmp_61p0, tmp_59p0); +vec2 becooln_in63p1 = vec2(2.00000, 2.00000); +vec2 uv_fixed = tmp_62p0 / becooln_in63p1; + + +//////////////////////////////////////////// +//Step 1 - the repeating grid from floor to round +vec2 repeating_grid_floor = floor(uv_fixed); +vec2 fract_of_step_2 = fract(uv_fixed); +float tmp_28p0 = fract_of_step_2.x + fract_of_step_2.y - 1.00;//becooln_in28p1; +//bool tmp_35p0 = tmp_28p0 > 0.00; +float tmp_71p0; +float tmp_12p0 = repeating_grid_floor.x - repeating_grid_floor.y; +vec3 tmp_13p0 = vec3(tmp_12p0) + vec3(0.00000, 1.00000, 2.00000); +float tmp_var = 3.00000; // this var is vital for the line below +float tmp_16p0 = 1.0 / (tmp_var); //this line is weird. Using a hard 3.0 in fails! +vec3 tmp_15p0 = tmp_13p0 * vec3(tmp_16p0); +float becooln_in19p0 = 5.00000; +float becooln_in19p1 = 3.00000; +float tmp_19p0 = becooln_in19p0 / becooln_in19p1; +vec3 tmp_17p0 = tmp_15p0 + vec3(tmp_19p0); +vec3 tmp_20p0 = fract(tmp_17p0); +vec3 end_round_of_step_1 = round(tmp_20p0); + +///////////////////////////////////////////////////////// +//Step 2 : From fract to channels out to masks +vec2 step_02_fract = fract(uv_fixed); +float stuff = step_02_fract.x + step_02_fract.y; +float to_abs = stuff - 1.00; +// Compare +bool greater_than_zero_test = to_abs > 0.00; +float tmp_29p0 = abs(to_abs); //ABS +vec2 tmp_32p0 = vec2(1.0) - step_02_fract.yx; +vec2 tmp_36p0; +tmp_36p0 = mix(step_02_fract, tmp_32p0, float(greater_than_zero_test)); +vec4 tmp_37p0 = vec4(tmp_29p0, tmp_36p0.x, tmp_36p0.y, 0.00); + +// Making the Channel Masks +float tmp_44p0 = dot(end_round_of_step_1.zxy, vec3(tmp_37p0.xyz)); +float tmp_45p0 = dot(end_round_of_step_1.yzx, vec3(tmp_37p0.xyz)); +float tmp_46p0 = dot(end_round_of_step_1, vec3(tmp_37p0.xyz)); +vec3 tmp_47p0 = vec3(tmp_44p0, tmp_45p0, tmp_46p0); +vec3 tmp_49p0 = pow(tmp_47p0, vec3({HexFocus})); +vec3 vec111 = vec3(1.00000, 1.00000, 1.00000); +float tmp_51p0 = dot(tmp_49p0, vec111); +vec3 channel_masks = tmp_49p0 / vec3(tmp_51p0); + +////////////////////// +// Make the seeds +float a_one_or_zero = mix(0.00, 1.00, float(greater_than_zero_test));// Switch 0 or 1 +vec3 tmp_70p0 = vec3(a_one_or_zero) * end_round_of_step_1; + +// SEED 1 +vec2 tmp_83p0 = repeating_grid_floor + vec2(tmp_70p0.z); //Z +vec2 seed_1 = tmp_83p0 + end_round_of_step_1.xy; + +// SEED 2 +vec2 tmp_82p0 = repeating_grid_floor + vec2(tmp_70p0.y); //Y +vec2 seed_2 = tmp_82p0 + end_round_of_step_1.zx; + +// SEED 3 +vec2 tmp_81p0 = repeating_grid_floor + vec2(tmp_70p0.x); //X +vec2 seed_3 = tmp_81p0 + end_round_of_step_1.yz; + +////////////////////// +float out_rotation_1; +float out_rotation_2; +float out_rotation_3; +vec3 _rgb_1; +vec3 _rgb_2; +vec3 _rgb_3; + +////////////////////// +// rotate and sample +vec2 uv_transformed_1 = HTD_Transform_uv(uv_tiled, seed_1, out_rotation_1); +vec2 uv_transformed_2 = HTD_Transform_uv(uv_tiled, seed_2, out_rotation_2); +vec2 uv_transformed_3 = HTD_Transform_uv(uv_tiled, seed_3, out_rotation_3); + +// Now output all the rgb for the maps coming in +vec4 _read_rgb; + +{albedo_transform_and_sample} +{orm_transform_and_sample} +{normalmap_transform_and_sample_and_fix} +""" +#""" +#{UV1} = uv_transformed_1; +#{UV2} = uv_transformed_2; +#{UV3} = uv_transformed_3; +# +#{MASKS} = channel_masks; +#{SEED1} = seed_1; +#{SEED2} = seed_2; +#{SEED3} = seed_3; +#""" diff --git a/addons/VisualShaderExtras/SeamlessTiling/seamless_tiler_technique1.gd b/addons/VisualShaderExtras/SeamlessTiling/seamless_tiler_technique1.gd new file mode 100644 index 0000000..ebd7bc3 --- /dev/null +++ b/addons/VisualShaderExtras/SeamlessTiling/seamless_tiler_technique1.gd @@ -0,0 +1,131 @@ +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeIQSeamlessTilingTechnique1 + +func _get_name(): + return "IQSeamlessTilingTechnique1" + +func _get_category(): + return "VisualShaderExtras/SeamlessTiling" + +func _get_description(): + return """https://iquilezles.org/articles/texturerepetition\nOne way to prevent the visual repetition of the texture is to assign a random offset and orientation to each tile of the repetition. We can do that by determining in which tile we are, creating a series of four pseudo-random values for the tile, and then using these to offset and re-orient the texture. Re-orientation can be something as simple as mirroring in x or y or both. This produces a non repeating pattern over the whole surface..""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_count(): + return 5 + +func _get_output_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 2: return VisualShaderNode.PORT_TYPE_SCALAR + 3: return VisualShaderNode.PORT_TYPE_SCALAR + 4: return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_name(port: int): + match port: + 0: return "Albedo" + 1: return "Normal Map" + 2: return "AO" + 3: return "Roughness" + 4: return "Metallic" + + +func _init() -> void: + set_input_port_default_value(0, 2.) + +func _get_input_port_count(): + return 4 + +func _get_input_port_name(port): + match port: + 0: return "UV Scale" + 1: return "Albedo" + 2: return "Normal Map" + 3: return "ORM" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_SCALAR + 1: return VisualShaderNode.PORT_TYPE_SAMPLER + 2: return VisualShaderNode.PORT_TYPE_SAMPLER + 3: return VisualShaderNode.PORT_TYPE_SAMPLER + +func _get_global_code(mode): + return """ +// The MIT License +// Copyright © 2015 Inigo Quilez +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +vec4 hash4_VisualShaderNodeIQSeamlessTilingTechnique1( vec2 p ) { return fract(sin(vec4( 1.0+dot(p,vec2(37.0,17.0)), + 2.0+dot(p,vec2(11.0,47.0)), + 3.0+dot(p,vec2(41.0,29.0)), + 4.0+dot(p,vec2(23.0,31.0))))*103.0); } + +vec4 textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1( sampler2D samp, in vec2 uv ) +{ + + // OK + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + vec4 ofa = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(0.0,0.0) ); + vec4 ofb = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(1.0,0.0) ); + vec4 ofc = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(0.0,1.0) ); + vec4 ofd = hash4_VisualShaderNodeIQSeamlessTilingTechnique1( iuv + vec2(1.0,1.0) ); + + vec2 ddx = dFdx( uv ); + vec2 ddy = dFdy( uv ); + + // transform per-tile uvs + ofa.zw = sign(ofa.zw-0.5); + ofb.zw = sign(ofb.zw-0.5); + ofc.zw = sign(ofc.zw-0.5); + ofd.zw = sign(ofd.zw-0.5); + + // uv's, and derivarives (for correct mipmapping) + vec2 uva = uv*ofa.zw + ofa.xy; vec2 ddxa = ddx*ofa.zw; vec2 ddya = ddy*ofa.zw; + vec2 uvb = uv*ofb.zw + ofb.xy; vec2 ddxb = ddx*ofb.zw; vec2 ddyb = ddy*ofb.zw; + vec2 uvc = uv*ofc.zw + ofc.xy; vec2 ddxc = ddx*ofc.zw; vec2 ddyc = ddy*ofc.zw; + vec2 uvd = uv*ofd.zw + ofd.xy; vec2 ddxd = ddx*ofd.zw; vec2 ddyd = ddy*ofd.zw; + + // fetch and blend + vec2 b = smoothstep(0.25,0.75,fuv); + return mix( mix( textureGrad( samp, uva, ddxa, ddya ), + textureGrad( samp, uvb, ddxb, ddyb ), b.x ), + mix( textureGrad( samp, uvc, ddxc, ddyc ), + textureGrad( samp, uvd, ddxd, ddyd ), b.x), b.y ); +}""" + +func _get_code(input_vars, output_vars, mode, type): + var foo = """ + vec2 uv = UV * {UV_SCALE_in}; + """ + + if input_vars[1]: + foo += """{ALBEDO_out} = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1({ALBEDO_in}, uv).rgb;""" + if input_vars[2]: + foo += """{NM_out} = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1({NM_in}, uv).rgb;""" + if input_vars[3]: + foo += """{O_out} = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1({O_in}, uv).r;""" + foo += """{R_out} = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1({O_in}, uv).g;""" + foo += """{M_out} = textureNoTile_VisualShaderNodeIQSeamlessTilingTechnique1({O_in}, uv).b;""" + foo = foo.format( + { + "UV_SCALE_in": input_vars[0], + "ALBEDO_in": input_vars[1], + "NM_in": input_vars[2], + "O_in": input_vars[3], + + "ALBEDO_out": output_vars[0], + "NM_out": output_vars[1], + "O_out": output_vars[2], + "R_out": output_vars[3], + "M_out": output_vars[4], + }) + return foo diff --git a/addons/VisualShaderExtras/Shapes/Box.gd b/addons/VisualShaderExtras/Shapes/Box.gd index 8b0ce23..193531a 100644 --- a/addons/VisualShaderExtras/Shapes/Box.gd +++ b/addons/VisualShaderExtras/Shapes/Box.gd @@ -23,6 +23,7 @@ class_name VisualShaderNodeBox func _init(): set_input_port_default_value(1, Vector2(0.5, 0.5)) set_input_port_default_value(2, Vector2(0.25, 0.25)) + set_input_port_default_value(3, 0.)#smoothness func _get_name(): return "Box" @@ -31,54 +32,66 @@ func _get_category(): return "VisualShaderExtras/Shapes" func _get_description(): - return "Signed Distance Box Shape3D" - + return "Signed Distance Box Shape3D with smoothing." + func _get_return_icon_type(): return VisualShaderNode.PORT_TYPE_SCALAR func _get_input_port_count(): - return 3 + return 4 func _get_input_port_name(port): match port: - 0: - return "UV" - 1: - return "Position" - 2: - return "Proportions" - + 0: return "UV" + 1: return "Position" + 2: return "Proportions" + 3: return "Smoothness" + func _get_input_port_type(port): match port: - 0: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 1: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 2: - return VisualShaderNode.PORT_TYPE_VECTOR_2D + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 2: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 3: return VisualShaderNode.PORT_TYPE_SCALAR #smoothness func _get_output_port_count(): return 1 func _get_output_port_name(port): - return "" + return "Mask" func _get_output_port_type(port): return VisualShaderNode.PORT_TYPE_SCALAR func _get_global_code(mode): return """ - float sdBox( in vec2 __position, in vec2 __proportions ) - { - vec2 __d = abs(__position) - __proportions; - return length(max(__d, 0.0)) + min(max(__d.x, __d.y), 0.0); - } - """ +float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) { + vec2 d = abs(_pos) - _proportions; + float outside = length(max(d, 0.)); + float inside = min(max(d.x, d.y), 0.); + float both = outside + inside; + + //float f = outside - _feather; //makes a kind of outline + + // ok! smoothness is v sensitive tho. + // when f is 0 the edge is sharp + float f = _feather; + + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black +} +""" func _get_code(input_vars, output_vars, mode, type): var uv = "UV" - if input_vars[0]: uv = input_vars[0] + return "{out} = sdBox_VisualShaderNodeBoxV2({uv}-{pos}, {proportions}, {smoothness});" \ + .format({ + "uv": uv, + "pos": input_vars[1], + "proportions": input_vars[2], + "smoothness": input_vars[3], + "out" : output_vars[0] + }) - return "%s = sdBox(%s.xy - %s.xy, %s.xy);" % [output_vars[0], uv, input_vars[1], input_vars[2]] diff --git a/addons/VisualShaderExtras/Shapes/Circle.gd b/addons/VisualShaderExtras/Shapes/Circle.gd index 6352b35..8f81353 100644 --- a/addons/VisualShaderExtras/Shapes/Circle.gd +++ b/addons/VisualShaderExtras/Shapes/Circle.gd @@ -1,5 +1,6 @@ # The MIT License # Copyright © 2022 Inigo Quilez +# Copyright © 2022 Donn Ingle (on shoulders of giants) # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation @@ -21,8 +22,9 @@ extends VisualShaderNodeCustom class_name VisualShaderNodeCircle func _init(): - set_input_port_default_value(1, Vector2(0.5, 0.5)) - set_input_port_default_value(2, 0.25) + set_input_port_default_value(1, Vector2(0.5, 0.5))#pos + set_input_port_default_value(2, 0.25) #radius + set_input_port_default_value(3, 0.25) #smoothness func _get_name(): return "Circle" @@ -31,52 +33,63 @@ func _get_category(): return "VisualShaderExtras/Shapes" func _get_description(): - return "Signed Distance Circle Shape3D" + return "Signed Distance Circle Shape3D with smoothing." +func _get_version(): + return "2" + func _get_return_icon_type(): return VisualShaderNode.PORT_TYPE_SCALAR func _get_input_port_count(): - return 3 + return 4 func _get_input_port_name(port): match port: - 0: - return "UV" - 1: - return "Position" - 2: - return "Radius" + 0: return "UV" + 1: return "Position" + 2: return "Radius" + 3: return "Smoothness" func _get_input_port_type(port): match port: - 0: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 1: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 2: - return VisualShaderNode.PORT_TYPE_SCALAR + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 2: return VisualShaderNode.PORT_TYPE_SCALAR + 3: return VisualShaderNode.PORT_TYPE_SCALAR func _get_output_port_count(): return 1 func _get_output_port_name(port): - return "" + return "Mask" func _get_output_port_type(port): return VisualShaderNode.PORT_TYPE_SCALAR func _get_global_code(mode): return """ - float sdCircle(vec2 pos, float r) { - return length(pos) - r; - } - """ +//Original code +//float sdCircle(vec2 pos, float r) { +// return step(length(pos) - r, pos).x; +//} + +//New hack - faster than using length func +float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) +{ + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); +} +""" func _get_code(input_vars, output_vars, mode, type): var uv = "UV" - if input_vars[0]: uv = input_vars[0] - - return "%s = sdCircle(%s.xy - %s.xy, %s);" % [output_vars[0], uv, input_vars[1], input_vars[2]] + return "{out} = VisualShaderNodeCircle_circle({uv} - {pos}, {radius}, {smoothness});" \ + .format({ + "uv": uv, + "pos": input_vars[1], + "radius": input_vars[2], + "smoothness": input_vars[3], + "out" : output_vars[0] + }) diff --git a/addons/VisualShaderExtras/UV/ParallaxMapping.gd b/addons/VisualShaderExtras/UV/ParallaxMapping.gd new file mode 100644 index 0000000..06d544a --- /dev/null +++ b/addons/VisualShaderExtras/UV/ParallaxMapping.gd @@ -0,0 +1,126 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeParallaxMapping + +func _get_name(): + return "ParallaxMapping" + +func _get_category(): + return "VisualShaderExtras/UV" + +func _get_description(): + return """Creates dramatic depth illusion from a height map. Same as the Height options in the Spatial shader, but available as a node.""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_2D + +func _get_output_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_count(): + return 2 + +func _get_output_port_name(port: int): + match port: + 0: return "UV" + 1: return "Depth" + +func _init() -> void: + set_input_port_default_value(2, 5.0) + set_input_port_default_value(3, 8) + set_input_port_default_value(4, 32) + set_input_port_default_value(5, Vector2(1,1)) + +func _get_input_port_count(): + return 6 + +func _get_input_port_name(port): + match port: + 0: return "UV" + 1: return "Height Sampler" + 2: return "Height Scale" + 3: return "Min Layers" + 4: return "Max Layers" + 5: return "Flip" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SAMPLER + 2: return VisualShaderNode.PORT_TYPE_SCALAR + 3: return VisualShaderNode.PORT_TYPE_SCALAR_INT + 4: return VisualShaderNode.PORT_TYPE_SCALAR_INT + 5: return VisualShaderNode.PORT_TYPE_VECTOR_2D + +func _get_code(input_vars, output_vars, mode, type): + var uv = input_vars[0] if input_vars[0] else "UV" + var code = """ +// Code taken from Godot's Spatial Shader +float heightmap_scale = {heightmap_scale}; +int heightmap_min_layers = {heightmap_min_layers}; +int heightmap_max_layers = {heightmap_max_layers}; +vec2 heightmap_flip = {heightmap_flip}; +vec2 base_uv = {uv}; +{ + vec3 view_dir = normalize(normalize(-VERTEX)*mat3(TANGENT*heightmap_flip.x,-BINORMAL*heightmap_flip.y,NORMAL)); + float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir))); + float layer_depth = 1.0 / num_layers; + float current_layer_depth = 0.0; + vec2 P = view_dir.xy * heightmap_scale * 0.01; + vec2 delta = P / num_layers; + vec2 ofs = base_uv; + float depth = 1.0 - texture({texture_heightmap}, ofs).r; + float current_depth = 0.0; + while(current_depth < depth) { + ofs -= delta; + depth = 1.0 - texture({texture_heightmap}, ofs).r; + current_depth += layer_depth; + } + vec2 prev_ofs = ofs + delta; + float after_depth = depth - current_depth; + float before_depth = ( 1.0 - texture({texture_heightmap}, prev_ofs).r ) - current_depth + layer_depth; + float weight = after_depth / (after_depth - before_depth); + ofs = mix(ofs,prev_ofs,weight); + + {uvout} = ofs; + {depth} = layer_depth; +} +""".format( + { + "uv": uv, + "texture_heightmap" : input_vars[1], + "heightmap_scale" : input_vars[2], + "heightmap_min_layers" : input_vars[3], + "heightmap_max_layers" : input_vars[4], + "heightmap_flip" : input_vars[5], + "uvout" : output_vars[0], + "depth": output_vars[1] + }) + return code diff --git a/addons/VisualShaderExtras/UV/UVRotate.gd b/addons/VisualShaderExtras/UV/UVRotate.gd index 8d99923..c06f152 100644 --- a/addons/VisualShaderExtras/UV/UVRotate.gd +++ b/addons/VisualShaderExtras/UV/UVRotate.gd @@ -1,6 +1,23 @@ @tool -extends VisualShaderNodeCustom +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. class_name VisualShaderNodeUVRotate +extends VisualShaderNodeCustom func _init(): set_input_port_default_value(1, Vector2(0.5,0.5)) @@ -13,56 +30,56 @@ func _get_category(): return "VisualShaderExtras/UV" func _get_description(): - return "UV Rotate" + return "Rotates UV coordinates around a pivot point." func _get_return_icon_type(): return VisualShaderNode.PORT_TYPE_VECTOR_2D +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_VECTOR_2D + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int) -> String: + return "UV" + func _get_input_port_count(): return 3 func _get_input_port_name(port): match port: - 0: - return "UV" - 1: - return "Pivot" - 2: - return "Angle (Radians)" + 0: return "UV" + 1: return "Pivot" + 2: return "Angle (Radians)" func _get_input_port_type(port): match port: - 0: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 1: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 2: - return VisualShaderNode.PORT_TYPE_SCALAR + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D #UV + 1: return VisualShaderNode.PORT_TYPE_VECTOR_2D #pivot + 2: return VisualShaderNode.PORT_TYPE_SCALAR #radians -func _get_output_port_count(): - return 1 - -func _get_output_port_name(port): - return "UV" - -func _get_output_port_type(port): - return VisualShaderNode.PORT_TYPE_VECTOR_2D - -func _get_global_code(mode): +func _get_global_code(mode)->String: return """ - vec2 uv_rotate(vec2 uv, vec2 pivot, float angle) { - mat2 rotation = mat2(vec2(sin(angle), -cos(angle)), vec2(cos(angle), sin(angle))); - uv -= pivot; - uv = uv * rotation; - uv += pivot; - return uv; - } - """ - -func _get_code(input_vars, output_vars, mode, type): - var uv = "UV" - - if input_vars[0]: - uv = input_vars[0] +vec2 vec2_rotate_NodeUVRotateV2(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +}""" - return "%s.xy = uv_rotate(%s.xy, %s.xy, %s);" % [output_vars[0], uv, input_vars[1], input_vars[2]] +func _get_code(input_vars, output_vars, mode, type): + var uv = input_vars[0] if input_vars[0] else "UV" + var code : String = """ + vec2 rotated_uv = {uv}; + rotated_uv = vec2_rotate_NodeUVRotateV2({uv}, {rand_rotation}, {pivot}); + {out_uv} = rotated_uv; + """.format( + { + "uv": uv, + "pivot": input_vars[1], + "rand_rotation": input_vars[2], + "out_uv": output_vars[0] + }) + return code + diff --git a/addons/VisualShaderExtras/UV/UVTiler.gd b/addons/VisualShaderExtras/UV/UVTiler.gd index 974b6fd..d059600 100644 --- a/addons/VisualShaderExtras/UV/UVTiler.gd +++ b/addons/VisualShaderExtras/UV/UVTiler.gd @@ -1,5 +1,6 @@ # The MIT License # Copyright © 2022 Inigo Quilez +# Copyright © 2022 Donn Ingle (on shoulders of giants) # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation @@ -18,85 +19,121 @@ # With assist from https://thebookofshaders.com/09/ +# Portions taken from the work of Arnklit under CC0 Licence: +# https://github.com/Arnklit/TutorialResources/blob/main/LICENSE +# Creative Commons Legal Code +# +# CC0 1.0 Universal +# +# CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE +# LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN +# ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS +# INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES +# REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS +# PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM +# THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED +# HEREUNDER. + +## ISSUES +## 1. There's often one tile that will not rotate randomly. Search me! +## 2. The brick-shifting and the random rotation do not play well together. Help! +## 3. Should this take-in a UV? And how would that work? + @tool extends VisualShaderNodeCustom -class_name VisualShaderNodeTiler +class_name NodeUVTilerV3 func _get_name(): return "UVTiler" -func _init() -> void: - set_input_port_default_value(0, Vector2(2, 2)) - set_input_port_default_value(1, 4.0) - set_input_port_default_value(2, 0.0) - func _get_category(): return "VisualShaderExtras/UV" func _get_description(): - return "Tile a given UV into the given UV tiles and rotate them" + return "Tiles the UV, rotates and brick-shifts it." func _get_return_icon_type(): - return VisualShaderNode.PORT_TYPE_VECTOR_4D + return VisualShaderNode.PORT_TYPE_VECTOR_2D +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_VECTOR_2D + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int) -> String: + return "UV" + +func _init() -> void: + set_input_port_default_value(0, Vector2(2, 2)) + set_input_port_default_value(1, 0.0) #rot + set_input_port_default_value(2, 0.0) #randomize + set_input_port_default_value(3, 0.5) #shift + func _get_input_port_count(): - return 3 + return 4 func _get_input_port_name(port): match port: - 0: - return "Tiling" - 1: - return "Split" - 2: - return "Rotation (Radians)" + 0: return "Tiling (Down, Across)" + 1: return "Rotation (Radians)" + 2: return "Randomize rotation" + 3: return "Brick Shift" func _get_input_port_type(port): match port: - 0: - return VisualShaderNode.PORT_TYPE_VECTOR_2D - 1: - return VisualShaderNode.PORT_TYPE_SCALAR - 2: - return VisualShaderNode.PORT_TYPE_SCALAR - -func _get_output_port_count(): - return 1 - -func _get_output_port_name(port: int) -> String: - return "UV" - -func _get_output_port_type(port): - return VisualShaderNode.PORT_TYPE_VECTOR_2D + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D #tile y, x + 1: return VisualShaderNode.PORT_TYPE_SCALAR #radians + 2: return VisualShaderNode.PORT_TYPE_SCALAR #float + 3: return VisualShaderNode.PORT_TYPE_SCALAR #float for bricks func _get_global_code(mode): return """ - vec2 tile(vec2 _uv, float _zoom){ - _uv *= _zoom; - return fract(_uv); - } - - vec2 rotate(vec2 _uv, float _angle) { - _uv -= 0.5; - _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; - _uv += 0.5; - return _uv; - } - """ +vec2 vec2_rotate_NodeUVTilerV3(vec2 _uv, float _angle, vec2 _pivot) { + _uv -= _pivot; + _uv = mat2( vec2(cos(_angle), -sin(_angle)), vec2(sin(_angle), cos(_angle)) ) * _uv; + _uv += _pivot; + return _uv; +} +vec2 brick_tile_NodeUVTilerV3(vec2 _uv, float _zoom, float _shift) +{ + _uv.x += step(1.0, mod(_uv.y, 2.0)) * _shift; + return fract(_uv); +} +// Returns float from 0.0 to 1.0 +float random_float_NodeUVTilerV3(vec2 input) { + return fract(sin(dot(input.xy, vec2(12.9898,78.233))) * 43758.5453123); +} +""" func _get_code(input_vars, output_vars, mode, type): - var rot:String - rot = "st = rotate(st, %s);" % input_vars[2] if input_vars[2] != "" else "" - - return """ - vec2 st = UV.xy/{in_tilexy}.xy; - st = tile(st,{split}); - {rot} + + var code = """ + //Much simpler to calculate zoom from the tiling vec2 + float zoom = ({in_tilexy}.x * {in_tilexy}.y); + + vec2 st = UV/{in_tilexy}; + st *= zoom; //Scale coordinate system by zoom + + vec2 unique_val = floor( st ); //get the integer coordinates + + //Something about this calc is the problem with the brick shift when + //rr is > 0 + float rand_rotation = (( random_float_NodeUVTilerV3(unique_val) * 2.0) - 1.0) * {rr}; + + //Just add whatever static rotation may be input and clamp: + rand_rotation = clamp(rand_rotation + {rot}, 0.0, 2.*PI); + + st = brick_tile_NodeUVTilerV3(st, zoom, {shift}); + st = vec2_rotate_NodeUVTilerV3(st, rand_rotation, vec2(0.5)); + {out_uv} = st; """.format( { "in_tilexy":input_vars[0], - "split": input_vars[1], - "out_uv": output_vars[0], - "rot": rot + "rot": input_vars[1], + "rr": input_vars[2], + "shift": input_vars[3], + "out_uv": output_vars[0] }) + return code diff --git a/addons/VisualShaderExtras/Usability/ColorMask.gd b/addons/VisualShaderExtras/Usability/ColorMask.gd new file mode 100644 index 0000000..67ac1be --- /dev/null +++ b/addons/VisualShaderExtras/Usability/ColorMask.gd @@ -0,0 +1,74 @@ +# The MIT License +# Copyright © 2022 Inigo Quilez +# Copyright (c) 2018-2021 Rodolphe Suescun and contributors +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeCustomColorMask + +func _init(): + set_input_port_default_value(2, 1.0)#blend amount + +func _get_name(): + return "ColorMask" + +func _get_category(): + return "VisualShaderExtras/Usability" + +func _get_description(): + return "Compare Color inputs, and outputs a mask for the second input.\nAdded a Blend Amount to make the mask easier to control." + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int): + return "Output" + +func _get_input_port_count(): + return 3 + +func _get_input_port_name(port): + match port: + 0: return "Input" + 1: return "Mask Input" + 2: return "Blend Amount" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_4D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_4D + 2: return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_global_code(mode): + return """ +float compare_VisualShaderNodeCustomColorMask(vec4 in1, vec4 in2, float fuzz) +{ + return dot(abs(in1-in2), vec4(fuzz)); +} + """ + +func _get_code(input_vars, output_vars, mode, type): + var code = "%s = compare_VisualShaderNodeCustomColorMask(%s,%s,%s);" % [output_vars[0],input_vars[0],input_vars[1],input_vars[2]] + return code diff --git a/addons/VisualShaderExtras/Usability/RerouteTransform.gd b/addons/VisualShaderExtras/Usability/RerouteTransform.gd new file mode 100644 index 0000000..1f21382 --- /dev/null +++ b/addons/VisualShaderExtras/Usability/RerouteTransform.gd @@ -0,0 +1,76 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeRerouteTransform + +func _get_name(): + return "RerouteTransform" + +func _get_category(): + return "VisualShaderExtras/Usability" + +func _get_description(): + return "Node to let you just hang a noodle somewhere and pass it through.\nNB: Make sure to match the same in and out ports." + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_TRANSFORM + +const ptypes:Array = [ + VisualShaderNode.PORT_TYPE_BOOLEAN, + VisualShaderNode.PORT_TYPE_SCALAR, + VisualShaderNode.PORT_TYPE_SCALAR_INT, + VisualShaderNode.PORT_TYPE_VECTOR_2D, + VisualShaderNode.PORT_TYPE_VECTOR_3D, + VisualShaderNode.PORT_TYPE_VECTOR_4D, + VisualShaderNode.PORT_TYPE_TRANSFORM, + #VisualShaderNode.PORT_TYPE_SAMPLER #Does not seem to work in G 4.0.1 +] +const names:Array = ["Boolean","Scalar","Integer","Vector2D","Vector3D","Vector4D","Transform"]#,"Sampler"] + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_TRANSFORM + #return ptypes[port] + +func _get_output_port_count(): + return 1 #ptypes.size() + +func _get_output_port_name(port: int): + return "" + +func _get_input_port_count(): + return 1 #ptypes.size() + +func _get_input_port_name(port): + return "T" + #return names[port] + +func _get_input_port_type(port): + return VisualShaderNode.PORT_TYPE_TRANSFORM + #return ptypes[port] + +func _get_code(input_vars, output_vars, mode, type): + if input_vars[0]: + return "%s = %s;\n" % [output_vars[0],input_vars[0]] +# var s = "" +# for p in range(0,7): +# if input_vars[p]: +# s += "{outp} = {inp};\n".format({"outp":output_vars[p],"inp":input_vars[p]}) +# return s + diff --git a/addons/VisualShaderExtras/Usability/Rerouter.gd b/addons/VisualShaderExtras/Usability/Rerouter.gd new file mode 100644 index 0000000..fe47471 --- /dev/null +++ b/addons/VisualShaderExtras/Usability/Rerouter.gd @@ -0,0 +1,56 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeReroute + +func _get_name(): + return "Reroute" + +func _get_category(): + return "VisualShaderExtras/Usability" + +func _get_description(): + return "Re-route any number-like. Helps with long noodles.\nWill convert the incoming to the outgoing it connects to. You can't reroute Transforms." + +#func _get_return_icon_type(): +# return VisualShaderNode.PORT_TYPE_VECTOR_4D + +func _get_output_port_count(): + return 1 + +func _get_output_port_type(port:int): + return VisualShaderNode.PORT_TYPE_VECTOR_4D + +func _get_output_port_name(port: int): + return "" + +func _get_input_port_count(): + return 1 + +func _get_input_port_name(port): + return "" + +func _get_input_port_type(port): + return VisualShaderNode.PORT_TYPE_VECTOR_4D + +func _get_code(input_vars, output_vars, mode, type): + if input_vars[0]: + return "%s = %s;\n" % [output_vars[0],input_vars[0]] + diff --git a/addons/VisualShaderExtras/Utility/MaskBlend.gd b/addons/VisualShaderExtras/Utility/MaskBlend.gd new file mode 100644 index 0000000..a058fce --- /dev/null +++ b/addons/VisualShaderExtras/Utility/MaskBlend.gd @@ -0,0 +1,82 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeMaskBlend + +func _get_name(): + return "MaskBlend" + +func _get_category(): + return "VisualShaderExtras/Utility" + +func _get_description(): + return """Let's you control the blend and fade of a given mask.""" + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int) -> String: + return "Output" + +func _init() -> void: + set_input_port_default_value(0, 0.) + set_input_port_default_value(1, 0.) + set_input_port_default_value(2, 0.) + +func _get_input_port_count(): + return 3 + +func _get_input_port_name(port): + match port: + 0: return "Mask Input" + 1: return "Blend Amount" + 2: return "Blend Fade" + +func _get_input_port_type(port): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_global_code(mode): + return """ +float mask_blend_VisualShaderNodeMaskBlend(float offset, float fade, float mask_in) { + offset *= -1.; + return smoothstep(offset - fade, offset + fade, mask_in); +}""" + +func _get_code(input_vars, output_vars, mode, type): + var code = """ +{out_float} = mask_blend_VisualShaderNodeMaskBlend({offset}, {fade}, {mask_in}); +""".format( + { + "mask_in" : input_vars[0], + "offset": input_vars[1], + "fade" : input_vars[2], + "out_float" : output_vars[0] + }) + return code diff --git a/addons/VisualShaderExtras/Utility/NormalMapZ.gd b/addons/VisualShaderExtras/Utility/NormalMapZ.gd new file mode 100644 index 0000000..a652efe --- /dev/null +++ b/addons/VisualShaderExtras/Utility/NormalMapZ.gd @@ -0,0 +1,121 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeSamplerNormalMapZ + +func _get_name(): + return "RestoreNormalMapZ" + +func _get_category(): + return "VisualShaderExtras/Utility" + +func _get_description(): + return """Adds the correct Z vector back to normal maps. +Use this if you want a detailed normal map. +NB: Your Sampler Type must be Normal Map. +Don't use this on mobile.""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _is_highend(): + return true #mark as PC only. + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int) -> String: + return "Normal Map with Z" + +func _get_input_port_count(): + return 2 + +func _get_input_port_name(port): + match port: + 0: return "UV" + 1: return "Normal Map Sampler" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SAMPLER + +func _get_global_code(mode): + return """ +// Godot strips the z value from imported Normal Maps. +// It does this for two reasons: +// 1. Obtaining better compression because the z can be calculated by shader. +// Compression boosts speed of CPU to GPU transfer. +// 2. On mobile devices they do not do that calculation. They either ignore the z +// or do some other calculation, but the normal one (below) is apparently too slow +// or power-hungry for mobile devices. +// +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +vec3 normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + vec3 normal_map_texture, + vec2 inuv, + vec3 _TANGENT, + vec3 _BINORMAL, + vec3 _NORMAL) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + + // Unpack the background normal map. + vec3 bg_normal = normal_map_texture * 2.0 - 1.0; + + // Recalculate z-component of the normal map with the Pythagorean theorem. + bg_normal.z = sqrt(1.0 - bg_normal.x * bg_normal.x - bg_normal.y * bg_normal.y); + + // Apply the tangent-space normal map to the view-space normals. + vec3 normal_applied = bg_normal.x * _TANGENT + bg_normal.y * _BINORMAL + bg_normal.z * _NORMAL; + return normal_applied; +}""" + +func _get_code(input_vars, output_vars, mode, type): + var inuv = "UV" + if input_vars[0]: + inuv = input_vars[0] + + var code = """ +vec3 normal_map_texture = textureLod({normal_texture_sampler}, {inuv}, 0.).rgb; + +{out_normal_map} = normal_map_add_z_VisualShaderNodeSamplerNormalMapZ( + normal_map_texture, + {inuv}, + TANGENT, + BINORMAL, + NORMAL); + """.format( + { + "inuv" : inuv, + "normal_texture_sampler": input_vars[1], + "out_normal_map" : output_vars[0] + }) + return code diff --git a/addons/VisualShaderExtras/Utility/TextureStack.gd b/addons/VisualShaderExtras/Utility/TextureStack.gd new file mode 100644 index 0000000..e0af142 --- /dev/null +++ b/addons/VisualShaderExtras/Utility/TextureStack.gd @@ -0,0 +1,125 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeTextureStack + +func _get_name(): + return "TextureStack" + +func _get_category(): + return "VisualShaderExtras/Utility" + +func _get_description(): + return """A single node to plug multiple Samplers into. If you use the ORM port, it will ignore the individual O, R and M ports, but the outputs will supply the data.""" + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_VECTOR_3D + +enum {KEY, NAME, PORT_TYPE_IN, PORT_TYPE_OUT} +const names := [ + #[key, name, type_in, type_out] + ["UV", "UV", VisualShaderNode.PORT_TYPE_VECTOR_2D, VisualShaderNode.PORT_TYPE_VECTOR_2D], + ["A", "Albedo", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_4D], + ["ORM","ORM", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["O", "Occlusion", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_SCALAR], + ["R", "Roughness", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_SCALAR], + ["M", "Metallic", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_SCALAR], + ["N", "NormalMap", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_VECTOR_3D], + ["D", "DepthMap", VisualShaderNode.PORT_TYPE_SAMPLER, VisualShaderNode.PORT_TYPE_SCALAR] +] + +func _get_output_port_count(): + return names.size() + +func _get_output_port_type(port): + return names[port][PORT_TYPE_OUT] + +func _get_output_port_name(port: int): + return "" #names[port][0] + +func _get_input_port_count(): + return names.size() + +func _get_input_port_name(port): + return names[port][NAME] + +func _get_input_port_type(port): + return names[port][PORT_TYPE_IN] + +var isorm=false +func create_textureLod_command(invars, outvars, port): + var s := "" + var invar = invars[port] + if invar: + var key = names[port][KEY] + var sampler = invar + var out = outvars[port] + + match key: + "A": # 4d + s = "%s = textureLod(%s, {inuv}, 0.);" % [out, sampler] + "D": # float 1d + s = "%s = textureLod(%s, {inuv}, 0.).r;" % [out, sampler] + "ORM": # all three from the ORM input Sampler + isorm = true + s = "%s = textureLod(%s, {inuv}, 0.).r;\n" % [outvars[3],sampler] + s+= "%s = textureLod(%s, {inuv}, 0.).g;\n" % [outvars[4],sampler] + s+= "%s = textureLod(%s, {inuv}, 0.).b;" % [outvars[5],sampler] + "N": + s = "%s = textureLod(%s, {inuv}, 0.).rgb;" % [out, sampler] + + # if ORM port is used, then we want to ignore any others plugged in + "O" : # 1d from its own sampler + if not isorm: + s = "%s = textureLod(%s, {inuv}, 0.).r;" % [out, sampler] + "R" : # 1d from its own sampler + if not isorm: + s = "%s = textureLod(%s, {inuv}, 0.).g;" % [out, sampler] + "M" : # 1d from its own sampler + if not isorm: + s = "%s = textureLod(%s, {inuv}, 0.).b;" % [out, sampler] + s+="\n\n" + return s + return "" + +func _get_code(input_vars, output_vars, mode, type): + var inuv = "UV" + if input_vars[0]: + inuv = input_vars[0] + var s := "" + for port in range(1, names.size()): #skips UV port 0 + s += create_textureLod_command(input_vars, output_vars, port) + + s = s.format({"inuv" : inuv}) + + # all done, reset the isorm flag + isorm = false + + return s + """ +{uv_out} = {inuv}; +""".format( +{ +"inuv" : inuv, +"uv_out": output_vars[0], +}) diff --git a/addons/VisualShaderExtras/WorldNormal/README.txt b/addons/VisualShaderExtras/WorldNormal/README.txt new file mode 100644 index 0000000..dd50ab5 --- /dev/null +++ b/addons/VisualShaderExtras/WorldNormal/README.txt @@ -0,0 +1,14 @@ +World Normal Mixing +== +I got the idea and code from Arnklit here: +https://www.youtube.com/watch?v=OvHNg4-Ueng + +The process gives a much better mix between textures where normal maps are involved. + +The main code is broken into three stages +1. Normal add z +2. Normal mask +3. Mask blend + +Each of those are useful in their own right, so I made them all separate nodes too. +However this node (the TempVisualShaderNodeWorldNormalMapMixer) does all that in one go. diff --git a/addons/VisualShaderExtras/WorldNormal/WorldNormalMapMixer.gd b/addons/VisualShaderExtras/WorldNormal/WorldNormalMapMixer.gd new file mode 100644 index 0000000..71b14eb --- /dev/null +++ b/addons/VisualShaderExtras/WorldNormal/WorldNormalMapMixer.gd @@ -0,0 +1,171 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeWorldNormalMapMixer + +func _get_name(): + return "World_Normal_Map_Mixer" + +func _get_category(): + return "VisualShaderExtras/WorldNormal" + +func _get_description(): + return """This node gives a much better mix between textures where normal maps are involved. +It lets you keep a direction (up/down/left/right) to your mixture so that you can rotate meshes and the direction of the mix stays fixed in world space. +NB: Don't use this on mobile.""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _is_highend(): + return true #mark as PC only. + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_SCALAR + 1: return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_output_port_count(): + return 2 + +func _get_output_port_name(port: int): + match port: + 0: return "Mask" + 1: return "Normal Map" + +func _init() -> void: + set_input_port_default_value(2, Vector3.UP) + set_input_port_default_value(3, 0.) + set_input_port_default_value(4, 0.) + +func _get_input_port_count(): + return 5 + +func _get_input_port_name(port): + match port: + 0: return "UV" + 1: return "Normal Map Sampler" + 2: return "Direction Vector" + 3: return "Offset" + 4: return "Fade" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_2D + 1: return VisualShaderNode.PORT_TYPE_SAMPLER #sampler + 2: return VisualShaderNode.PORT_TYPE_VECTOR_3D #direction + 3: return VisualShaderNode.PORT_TYPE_SCALAR #offset + 4: return VisualShaderNode.PORT_TYPE_SCALAR #fade + +func _get_global_code(mode): + return """ +// Godot strips the z value from imported Normal Maps. +// It does this for two reasons: +// 1. Obtaining better compression because the z can be calculated by shader. +// Compression boosts speed of CPU to GPU transfer. +// 2. On mobile devices they do not do that calculation. They either ignore the z +// or do some other calculation, but the normal one (below) is apparently too slow +// or power-hungry for mobile devices. +// +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +vec3 normal_map_add_z_VisualShaderNodeWorldNormalMapMixer( + vec3 normal_map_texture, + vec2 inuv, + vec3 _TANGENT, + vec3 _BINORMAL, + vec3 _NORMAL) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + + // Unpack the background normal map. + vec3 bg_normal = normal_map_texture * 2.0 - 1.0; + + // Recalculate z-component of the normal map with the Pythagorean theorem. + bg_normal.z = sqrt(1.0 - bg_normal.x * bg_normal.x - bg_normal.y * bg_normal.y); + + // Apply the tangent-space normal map to the view-space normals. + vec3 normal_applied = bg_normal.x * _TANGENT + bg_normal.y * _BINORMAL + bg_normal.z * _NORMAL; + return normal_applied; +} + +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +float world_normal_mask_VisualShaderNodeWorldNormalMapMixer( + vec3 normal_map_texture, + vec3 vector_direction, + mat4 _VIEW_MATRIX + ) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + // Convert the world up vector into view-space with a matrix multiplication. + vec3 up_vector_viewspace = mat3(_VIEW_MATRIX) * vector_direction; + + // Compare the up vector to the surface with the normal map applied using the dot product. + float dot_product = dot(up_vector_viewspace, normal_map_texture); + + return dot_product; +} + +float mask_blend_VisualShaderNodeWorldNormalMapMixer(float offset, float fade, float mask_in) { + offset *= -1.; + + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + return smoothstep(offset - fade, offset + fade, mask_in); +} +""" + +func _get_code(input_vars, output_vars, mode, type): + var inuv = "UV" + if input_vars[0]: + inuv = input_vars[0] + + var code = """ +vec3 normal_map_texture = textureLod({normal_texture_sampler}, {inuv}, 0.).rgb; + +vec3 normal_applied = normal_map_add_z_VisualShaderNodeWorldNormalMapMixer( + normal_map_texture, + {inuv}, + TANGENT, + BINORMAL, + NORMAL); +float mask = world_normal_mask_VisualShaderNodeWorldNormalMapMixer( + normal_applied, + {vector_direction}, + VIEW_MATRIX); +float blended_mask = mask_blend_VisualShaderNodeWorldNormalMapMixer({offset}, {fade}, mask); +{out_float} = blended_mask; +{out_normal_map} = normal_map_texture; + """.format( + { + "inuv" : inuv, + "normal_texture_sampler": input_vars[1], + "vector_direction" : input_vars[2], + "offset": input_vars[3], + "fade" : input_vars[4], + "out_float" : output_vars[0], + "out_normal_map" : output_vars[1] + }) + return code diff --git a/addons/VisualShaderExtras/WorldNormal/WorldNormalMask.gd b/addons/VisualShaderExtras/WorldNormal/WorldNormalMask.gd new file mode 100644 index 0000000..bd8b05a --- /dev/null +++ b/addons/VisualShaderExtras/WorldNormal/WorldNormalMask.gd @@ -0,0 +1,100 @@ +# The MIT License +# Copyright © 2022 Donn Ingle (on shoulders of giants) +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# and + +## 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + +@tool +extends VisualShaderNodeCustom +class_name VisualShaderNodeWorldNormalMask + +func _get_name(): + return "World_Normal_Mask" + +func _get_category(): + return "VisualShaderExtras/WorldNormal" + +func _get_description(): + return """Outputs a mask where the given Direction Vector is matched. +Use this to mask out directions like up/down/left/right. +NB: You must supply a normal map with a Z direction. For that use the Normal Map Z Node.""" + +func _is_available(mode, type): + return mode == VisualShader.MODE_SPATIAL + +func _get_return_icon_type(): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_type(port): + return VisualShaderNode.PORT_TYPE_SCALAR + +func _get_output_port_count(): + return 1 + +func _get_output_port_name(port: int): + return "Mask" + +func _init() -> void: + set_input_port_default_value(1, Vector3.UP) + +func _get_input_port_count(): + return 2 + +func _get_input_port_name(port): + match port: + 0: return "Normal Map with Z" + 1: return "Direction Vector" + +func _get_input_port_type(port): + match port: + 0: return VisualShaderNode.PORT_TYPE_VECTOR_3D + 1: return VisualShaderNode.PORT_TYPE_VECTOR_3D + +func _get_global_code(mode): + return """ +// Create the texture to pass in like this: +// vec3 normal_map_texture = textureLod(normal_texture_sampler, inuv, 0.).rgb; +float world_normal_mask_VisualShaderNodeWorldNormalMask( + vec3 normal_map_texture, + vec3 vector_direction, + mat4 _VIEW_MATRIX + ) { + // 2022 Kasper Arnklit Frandsen - Public Domain - No Rights Reserved + // Convert the world up vector into view-space with a matrix multiplication. + vec3 up_vector_viewspace = mat3(_VIEW_MATRIX) * vector_direction; + + // Compare the up vector to the surface with the normal map applied using the dot product. + float dot_product = dot(up_vector_viewspace, normal_map_texture); + + return dot_product; +}""" + +func _get_code(input_vars, output_vars, mode, type): + var code = """ +{out_float} = world_normal_mask_VisualShaderNodeWorldNormalMask( + {normal_z_applied}, + {vector_direction}, + VIEW_MATRIX); +""".format( + { + "normal_z_applied": input_vars[0], + "vector_direction" : input_vars[1], + "out_float" : output_vars[0], + }) + return code diff --git a/project.godot b/project.godot index 9326599..53557eb 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,10 @@ config/icon="res://addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Lo window/stretch/mode="viewport" +[editor_plugins] + +enabled=PackedStringArray() + [gui] common/drop_mouse_on_gui_input_disabled=true