{"id":9161,"date":"2024-07-23T11:20:48","date_gmt":"2024-07-23T10:20:48","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=9161"},"modified":"2024-07-23T11:20:48","modified_gmt":"2024-07-23T10:20:48","slug":"eevee-transparency-dithered","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/","title":{"rendered":"Eevee, Transparency &#038; Blender 4.2+"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69f9789a6c242\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69f9789a6c242\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#general-changes\" >General Changes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#dithered-quality\" >Dithered Quality<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#principled-bsdf-alpha\" >Principled BSDF Alpha<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#image-based-alpha\" >Image-Based Alpha<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#opacity-map\" >Opacity Map<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#alpha-clip\" >Alpha Clip<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#transparent-bsdf\" >Transparent BSDF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-dithered\/#material-export\" >Material Export<\/a><\/li><\/ul><\/nav><\/div>\n<p>With the introduction of <a href=\"https:\/\/www.blender.org\/download\/releases\/4-2\/\" rel=\"noopener\" target=\"_blank\">Blender 4.2 LTS<\/a> and beyond, the way <strong>Eevee<\/strong> engine renders transparent materials, textures and images has changed. Gone are the <a href=\"https:\/\/www.katsbits.com\/codex\/tag\/blend-mode\/\"><strong>Blend Mode<\/strong><\/a> options that defined the type of transparency to be rendered &#8211; <a href=\"https:\/\/www.katsbits.com\/codex\/tag\/alpha-clip\/\">Alpha Clip<\/a>, <a href=\"https:\/\/www.katsbits.com\/codex\/?s=alpha+blend\">Alpha Blend<\/a>, <a href=\"https:\/\/www.katsbits.com\/codex\/?s=alpha+hashed\">Alpha Hashed<\/a>, replaced instead by <strong>Render Method<\/strong> that uses a new default, <strong>Dithered<\/strong>.<\/p>\n<blockquote><p><strong>Aside<\/strong>: <a href=\"https:\/\/developer.blender.org\/docs\/release_notes\/4.2\/eevee_migration\/#materials\" rel=\"noopener\" target=\"_blank\">see here for the official explanation<\/a> of the changes to material rendering.<\/p><\/blockquote>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><b>Download<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/tutorials\/katsbits - transparency 4-2.zip\">KatsBits &#8211; Transparency Blender 4.2<\/a> (c. 200 KB | *.blend).<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"general-changes\"><\/span>General Changes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As briefly mentioned above, a number of material options previously available in Blender 4.1 and below are now legacy properties and not directly supported, brought into Blender now, these older *.blend files may display incorrectly. Furthermore, as the setting are no longer supported there is no way to display them, they are simply not longer available for editing or modification. Instead, Blender now does its best to convert or translate material data to the updated system, defaulting to <strong>Dithered<\/strong> [1] as the <strong>Render Method<\/strong>, or optionally <strong>Blended<\/strong> [2] &#8211; both options accessible in <strong>Material Properties<\/strong>. <\/p>\n<blockquote><p><strong>Design note<\/strong>: <strong>Dithered<\/strong> approximates legacy <strong><em>Alpha Hashed<\/em><\/strong>, <strong>Blended<\/strong> replicates legacy <strong><em>Alpha Blend<\/em><\/strong> &#8211; Blended and Alpha Blend are both prone to <a href=\"https:\/\/www.katsbits.com\/codex\/sort-order\/\">sort order issues<\/a>.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/render-method-dithered.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/render-method-dithered.jpg\" alt=\"Dithered Transparency\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>hhen importing legacy *.blend files with transparent materials created in Blender 4.1 or older, settings and display will default to <strong>Dithered<\/strong> as the <strong>Render Method<\/strong>.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/render-method-blended.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/render-method-blended.jpg\" alt=\"Blended Transparency\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Alternatively, to approximate <strong>Alpha Blend<\/strong> materials <strong>Render Method<\/strong> can be switched <strong>Blended<\/strong> &#8211; this is prone to alpha clipping\/sort order problems.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"dithered-quality\"><\/span>Dithered Quality<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dithered rendering by nature is a noisy or pixelated way to render materials, transparency more so, as it sacrifices quality for real-time preview speed. To alleviate this, quality can be improved in <strong>Render Properties<\/strong> [3] by increasing <strong>Sampling<\/strong> [4], the higher the <strong>Samples<\/strong> value [5] (default is <strong>16<\/strong>), the less noisy the render appears, at the cost of scene rendering speed.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-low-samples.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-low-samples.jpg\" alt=\"Low Samples\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-high-samples.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-high-samples.jpg\" alt=\"High Samples\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To improve the quality of Dithered rendering the Samples used to render the 3D Viewport can be increased using the <strong>Samples<\/strong> property found in <strong>Render Properties<\/strong> [3] &#8211; [image-top] using a material referencing an image that includes a variable alpha channel, the <strong>Viewport<\/strong> is set to use a low Samples value [4] (4, default is 16) results in transparency being rendered with a lot of noise, [image-bottom] Sample increased to 128 [5] produces a much clearer rendering of transpareny.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"principled-bsdf-alpha\"><\/span>Principled BSDF Alpha<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>No changes are applicable to using <a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency\/#eevee-principled-bsdf-alpha\">Principled BSDF<\/a> (<em>Add \u00bb Shader \u00bb Principled BSDF<\/em>) to defined a materials transparency using <strong>Alpha<\/strong> except for the default conversion to <strong>Dithered<\/strong> rendering set in Material Properties.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><strong>Important<\/strong>: for Blender 4.2 LTS and newer, <strong>Blend Mode<\/strong> no longer available. Legacy materials are converted to use <strong>Dithered<\/strong> as the default <strong>Render Method<\/strong>.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/principled-bsdf-alpha.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/principled-bsdf-alpha.jpg\" alt=\"Principled BSDF Alpha\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using Principled BSDF to define material transparency using the Alpha property [6] &#8211; Alpha affects the entire material, making it transparent in its entirety based on the value set.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"image-based-alpha\"><\/span>Image-Based Alpha<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Transparent <a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency\/#eevee-image-based-alpha\">materials that use image-based alpha<\/a> sourced to an <strong>Image Texture<\/strong> node (<em>Add \u00bb Texture \u00bb Image Texture<\/em>), i.e. images that include a variable alpha channel (RBG+A), are set up as for previous versions of Blender, the <strong>Image Texture<\/strong> nodes <strong>Alpha<\/strong> output being connected to the <strong>Alpha<\/strong> input of <strong>Principled BSDF<\/strong> [7]. No changes are applicable except the automatic conversion to <strong>Dithered<\/strong> as the <strong>Render Method<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/image-based-alpha.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/image-based-alpha.jpg\" alt=\"Image based alpha\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Image-based alpha transparency that uses an Alpha Channel is set up [7] the same way as for previous versions of Blender with the exception that Blend Mode is now automatically converted to Dithered rendering.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"opacity-map\"><\/span>Opacity Map<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Materials that reply on the use of a separate image to define transparency, i.e. an <a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency\/#eevee-opacity-map\">Opacity Map<\/a>, are set up as for previous versions of Blender &#8211; a separate <strong>Image Texture<\/strong> node (Add \u00bb Texture \u00bb Image Texture) sourcing the greyscale opacity map [8] with <strong>Color<\/strong> output plugged into <strong>Alpha<\/strong> input of Principled BSDF. No changes are applicable except where Blend Mode is automatically converted to Dithered rendering.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-opacity-map.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-opacity-map.jpg\" alt=\"[descriptive alt image text here]\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Materials that use separate opacity map to define transparency as set up as for previous versions of Blender, <strong>Color<\/strong> output [8] being linked to <strong>Alpha<\/strong> input of Principled BSDF.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"alpha-clip\"><\/span>Alpha Clip<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Transparent materials based on <a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency\/#eevee-clip-mask\">Alpha Clip<\/a> are not directly supported in <em>Blender 4.2 or above<\/em>, materials opened, imported or brought in to Blender will instead default to <strong>Dithered<\/strong> display, softening transparency. To replicate <strong>Alpha Clip<\/strong> the material has to be modified to include a <strong>Math<\/strong> node that acts as a proxy for the obsolete <strong>Clip Threshold<\/strong> setting.<\/p>\n<p>To convert or set up an alpha clip style material in Blender 4.2 and above, in <strong>Shading Workspace<\/strong> drop a <strong>Math<\/strong> node into the editor; from <strong>Add<\/strong> select <strong>Converter<\/strong> [9] and then <strong>Math<\/strong> [10] &#8211; <strong><em>Add \u00bb Converter \u00bb Math<\/em><\/strong>. In the node that appears click the &#8216;type&#8217; menu [11] then <strong>Greater Than<\/strong> [12] from the <strong>Comparison<\/strong> column. Next, link the <strong>Color<\/strong> output of the <strong>Image Texture<\/strong> node carrying the clip image to the <strong>Value<\/strong> input of the <strong>Math<\/strong> node [13], then the <strong>Value<\/strong> output of the same Math node to the <strong>Alpha<\/strong> input [14] of <strong>Principled BSDF<\/strong>. Finally, set the Math nodes <strong>Threshold<\/strong> value to <strong>0.500<\/strong> to replicate the default appearance of legacy alpha clip &#8211; 0.000 results in heavy stepping, 1.000 clips the entire image.<\/p>\n<blockquote><p><strong>Design note<\/strong>: if the image used to define transparency includes a clip masked alpha channel, the Image Texture nodes <strong>Alpha<\/strong> output can be used as the <strong>Value<\/strong> input to the Math node. Else, where a separate greyscale image is used, e.g. an &#8216;<a href=\"https:\/\/www.katsbits.com\/codex\/opacity\/\">opacity map<\/a>&#8216;, linking Color output is used.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-converter-math.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-converter-math.jpg\" alt=\"Add a Math node\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Alpha Clip is no longer supported directly so it has to be replicated using a <strong>Math<\/strong> node. From the <strong>Add<\/strong> menu, click <strong>Converter<\/strong> [9] than <strong>Math<\/strong> [10] to drop in a the node&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-math-greater-than.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-math-greater-than.jpg\" alt=\"Type of Math\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; then set the &#8216;type&#8217; [11] of Math to be calculated, for alpha clip that&#8217;s <strong>Greater Than<\/strong> [12].<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-math-node-links.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/clip-math-node-links.jpg\" alt=\"[descriptive alt image text here]\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Finally link the Math and Image Texture nodes &#8211; <strong>Color<\/strong> output to <strong>Value<\/strong> input [13]. Then Math and Principled BSDF nodes &#8211; <strong>Value<\/strong> output to <strong>Alpha<\/strong> input [14].<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"transparent-bsdf\"><\/span>Transparent BSDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Materials that use <a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency\/#eevee-transparent-bsdf\">Transparent BSDF<\/a> (<em>Add \u00bb Shader \u00bb Transparent BSDF<\/em>) in some combination, typically a Mix Shader (<em>Add \u00bb Shader \u00bb Mix Shader<\/em>), to define transparency are set up as for previous versions of Blender, i.e. the <strong>BSDF<\/strong> output from a <strong>Transparent BSDF<\/strong> node being linked to a <strong>Shader<\/strong> input of a <strong>Mix Shader<\/strong> that may have another input, typically from Principled BSDF. No changes are applicable except where Blend Mode is automatically converted to Dithered rendering.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-transparent-bsdf.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/transparency\/dithered-transparent-bsdf.jpg\" alt=\"Transparent BSDF\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Materials that use <strong>Transparent BSDF<\/strong> are set up as for previous versions of Blender, i.e. <strong>Transparent BSDF<\/strong> [15] being linked to a <strong>Mix Shader<\/strong> [16] that may also included another transparent input depending the the desired effect.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"material-export\"><\/span>Material Export<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The changes discussed above affect the way transparent materials are rendered in the 3D Viewport so should not negatively impact the inclusion of materials during export to another format so long as the basic structure is in place. With that said, transparent materials set up for rendering &#8216;<a href=\"https:\/\/www.katsbits.com\/codex\/eevee-transparency-blender-4-2\/#alpha-clip\">alpha clip<\/a>&#8216; may be impacted due to the need to include nodes that sit between Principled BSDF and Image Texture nodes.<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":9166,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,32,230],"tags":[1053,457,458,459,453,456,1100,386,103,1101,564,221,388,1102,519,220,562],"class_list":["post-9161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-texturing","category-tutorials","tag-alpha","tag-alpha-blend","tag-alpha-clip","tag-alpha-hashed","tag-alpha-transparency","tag-blend-mode","tag-dithered","tag-image-texture","tag-materials","tag-math","tag-mix-shader","tag-opacity-map","tag-principled-bsdf","tag-render-method","tag-shading-workspace","tag-transparency","tag-transparent-bsdf"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/comments?post=9161"}],"version-history":[{"count":23,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9161\/revisions"}],"predecessor-version":[{"id":9191,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9161\/revisions\/9191"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/9166"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=9161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=9161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=9161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}