<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hedgedocs.com/index.php?action=history&amp;feed=atom&amp;title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn</id>
	<title>Shadow Generations Shaders - BlendDetail dpndpnn - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hedgedocs.com/index.php?action=history&amp;feed=atom&amp;title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn"/>
	<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;action=history"/>
	<updated>2026-04-08T12:29:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1124&amp;oldid=prev</id>
		<title>Justin113D: Used new bugs parameter</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1124&amp;oldid=prev"/>
		<updated>2025-08-25T12:17:51Z</updated>

		<summary type="html">&lt;p&gt;Used new bugs parameter&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:17, 25 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot;&gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* For the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; textures, the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; is multiplied by the &amp;lt;code&amp;gt;diffuse[1]&amp;lt;/code&amp;gt; texture alpha.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* For the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; textures, the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; is multiplied by the &amp;lt;code&amp;gt;diffuse[1]&amp;lt;/code&amp;gt; texture alpha.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Bugs ===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| vertex colors &lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Color is multiplied into the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; texture color&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Alpha is used as the basis for the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{notice&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bugs &lt;/ins&gt;= The shader has 3 &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; texture slots: Only &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; are used, with &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; left unused.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;type=warn&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|content&lt;/del&gt;=The shader has 3 &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; texture slots: Only &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; are used, with &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; left unused.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Yet, to be able to specify a texture for the &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; slot, a material must have 3 texture slots, even if the slot for &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; is empty.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Yet, to be able to specify a texture for the &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; slot, a material must have 3 texture slots, even if the slot for &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; is empty.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br/&amp;gt;In a similar vein, the shader has the &amp;lt;code&amp;gt;enable_multi_tangent_space&amp;lt;/code&amp;gt; feature, but never makes use of it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br/&amp;gt;In a similar vein, the shader has the &amp;lt;code&amp;gt;enable_multi_tangent_space&amp;lt;/code&amp;gt; feature, but never makes use of it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot;&gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Speculation:&amp;lt;/b&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Speculation:&amp;lt;/b&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What likely happened here is that the developers used the code from {{ShaderLink|Shadow Generations|Blend_dpndpn}} as a base and then added in the detail normal map logic from {{ShaderLink|Shadow Generations|Detail_dpnn}} but accidentally pasted it over the previous normal map code, leaving just the detail normal map code behind.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What likely happened here is that the developers used the code from {{ShaderLink|Shadow Generations|Blend_dpndpn}} as a base and then added in the detail normal map logic from {{ShaderLink|Shadow Generations|Detail_dpnn}} but accidentally pasted it over the previous normal map code, leaving just the detail normal map code behind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| vertex colors =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Color is multiplied into the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; texture color&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Alpha is used as the basis for the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| textures =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| textures =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-1105:rev-1124:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Justin113D</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1105&amp;oldid=prev</id>
		<title>Justin113D: Added missing feature</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1105&amp;oldid=prev"/>
		<updated>2025-08-23T22:34:45Z</updated>

		<summary type="html">&lt;p&gt;Added missing feature&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:34, 23 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l100&quot;&gt;Line 100:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 100:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| features =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| features =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;enable_multi_tangent_space,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;enable_multi_tangent_space,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is_use_tex_srt_anim,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;is_use_gi_prt,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;is_use_gi_prt,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;is_use_gi_sg,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;is_use_gi_sg,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-1095:rev-1105:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Justin113D</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1095&amp;oldid=prev</id>
		<title>Justin113D: Added page</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Shadow_Generations_Shaders_-_BlendDetail_dpndpnn&amp;diff=1095&amp;oldid=prev"/>
		<updated>2025-08-22T20:12:30Z</updated>

		<summary type="html">&lt;p&gt;Added page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Shader Documentation&lt;br /&gt;
| game = Shadow Generations&lt;br /&gt;
| shader name = BlendDetail_dpndpnn&lt;br /&gt;
| sbo = model=2, no_noise, no_compute_instancing, no_transparent_layer, no_punch_through_layer&lt;br /&gt;
&lt;br /&gt;
| overview = &lt;br /&gt;
An advanced [[Hedgehog_Engine_2_-_Physically_Based_Rendering_(PBR)|PBR]] shader that uses &lt;br /&gt;
* [[Texture Blending#Distance blending|distance blending]] to [[Texture Blending#Normal map blending|blend]] in a detail [[Hedgehog Engine 2 - Textures#Normal map|normal map]]&lt;br /&gt;
* Vertex alpha to blend between two sets of [[Hedgehog Engine 2 - Textures#Albedo|albedo]] and [[Hedgehog Engine 2 - Textures#PRM|PRM]] textures&lt;br /&gt;
&lt;br /&gt;
It is essentially a combination of the {{ShaderLink|Shadow Generations|Blend_dpndpn}} and {{ShaderLink|Shadow Generations|Detail_dpnn}} shaders.&lt;br /&gt;
&lt;br /&gt;
| related shaders = &lt;br /&gt;
Blend_dpndpn,&lt;br /&gt;
Blend_dpnbdpn,&lt;br /&gt;
BlendDetail_dndnd,&lt;br /&gt;
Detail_dpndpn,&lt;br /&gt;
Detail_dpnn,&lt;br /&gt;
DirectionBlend_dpndpn,&lt;br /&gt;
DirectionBlend_dpndpnn,&lt;br /&gt;
DirectionBlend_dpnndpn,&lt;br /&gt;
DistanceBlend_dpn&lt;br /&gt;
&lt;br /&gt;
| behavior = &lt;br /&gt;
=== Distance blending ===&lt;br /&gt;
Uses [[Texture Blending#Distance blending|distance blending]] to interpolate&lt;br /&gt;
* from the &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; texture&lt;br /&gt;
* to the &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; textures [[Texture Blending#Normal map blending|blended]] together.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;The shader uses &amp;lt;code&amp;gt;detailDistance&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;detailFadeRange&amp;lt;/code&amp;gt; from the stage RFL to determine the detail range.&lt;br /&gt;
&lt;br /&gt;
=== Vertex alpha blending ===&lt;br /&gt;
&lt;br /&gt;
This shader has two sets of PBR textures:&lt;br /&gt;
* &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;specular&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;diffuse[1]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;specular[1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The shader uses a &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; to [[Texture Blending#Interpolation|interpolate]] from the first set of textures to second one.&lt;br /&gt;
&amp;lt;br/&amp;gt;This &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; consists of just the vertex alpha.&lt;br /&gt;
&lt;br /&gt;
* For the &amp;lt;code&amp;gt;specular&amp;lt;/code&amp;gt; textures, the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; is used as is.&lt;br /&gt;
* For the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; textures, the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt; is multiplied by the &amp;lt;code&amp;gt;diffuse[1]&amp;lt;/code&amp;gt; texture alpha.&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
{{notice&lt;br /&gt;
|type=warn&lt;br /&gt;
|content=The shader has 3 &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; texture slots: Only &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; are used, with &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; left unused.&lt;br /&gt;
Yet, to be able to specify a texture for the &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; slot, a material must have 3 texture slots, even if the slot for &amp;lt;code&amp;gt;normal[1]&amp;lt;/code&amp;gt; is empty.&lt;br /&gt;
&amp;lt;br/&amp;gt;In a similar vein, the shader has the &amp;lt;code&amp;gt;enable_multi_tangent_space&amp;lt;/code&amp;gt; feature, but never makes use of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Speculation:&amp;lt;/b&amp;gt;&lt;br /&gt;
What likely happened here is that the developers used the code from {{ShaderLink|Shadow Generations|Blend_dpndpn}} as a base and then added in the detail normal map logic from {{ShaderLink|Shadow Generations|Detail_dpnn}} but accidentally pasted it over the previous normal map code, leaving just the detail normal map code behind.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
| vertex colors =&lt;br /&gt;
* Color is multiplied into the &amp;lt;code&amp;gt;diffuse&amp;lt;/code&amp;gt; texture color&lt;br /&gt;
* Alpha is used as the basis for the &amp;lt;b&amp;gt;blend factor&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| textures =&lt;br /&gt;
diffuse,0,0,&lt;br /&gt;
[[Hedgehog Engine 2 - Textures#Albedo|Albedo]],&lt;br /&gt;
First [[Hedgehog_Engine_2_-_Physically_Based_Rendering_(PBR)#Albedo|Albedo]] color__,;&lt;br /&gt;
&lt;br /&gt;
diffuse,1,2,&lt;br /&gt;
[[Hedgehog Engine 2 - Textures#Albedo|Albedo]],&lt;br /&gt;
Second [[Hedgehog_Engine_2_-_Physically_Based_Rendering_(PBR)#Albedo|Albedo]] color__,&lt;br /&gt;
Multiplied into the vertex alpha (blend factor)\, but &amp;lt;b&amp;gt;only&amp;lt;/b&amp;gt; for when blending the two diffuse textures!;&lt;br /&gt;
&lt;br /&gt;
specular,0,0,&lt;br /&gt;
[[Hedgehog Engine 2 - Textures#PRM|PRM]],&lt;br /&gt;
First [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Specular|Specular]] factor\; &amp;lt;br/&amp;gt;Gets multiplied by 0.25,&lt;br /&gt;
First [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Smoothness|Smoothness]] factor,&lt;br /&gt;
First [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Metallic|Metallic]] factor,&lt;br /&gt;
First [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Ambient Occlusion|Ambient Occlusion]];&lt;br /&gt;
&lt;br /&gt;
specular,1,2,&lt;br /&gt;
[[Hedgehog Engine 2 - Textures#PRM|PRM]],&lt;br /&gt;
Second [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Specular|Specular]] factor\; &amp;lt;br/&amp;gt;Gets multiplied by 0.25,&lt;br /&gt;
Second [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Smoothness|Smoothness]] factor,&lt;br /&gt;
Second [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Metallic|Metallic]] factor,&lt;br /&gt;
Second [[Hedgehog Engine 2 - Physically Based Rendering (PBR)#Ambient Occlusion|Ambient Occlusion]];&lt;br /&gt;
&lt;br /&gt;
normal,0,0,&lt;br /&gt;
[[Hedgehog Engine 2 - Textures#Normal map|Normal map]],&lt;br /&gt;
First [[Normal_mapping|Normal map direction]]_,,;&lt;br /&gt;
&lt;br /&gt;
normal,1,N/A,,Unused___;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
normal,2,3,&lt;br /&gt;
Detail [[Hedgehog Engine 2 - Textures#Normal map|Normal map]],&lt;br /&gt;
Detail [[Normal_mapping|Normal map direction]]_,,;&lt;br /&gt;
&lt;br /&gt;
| parameters =&lt;br /&gt;
&lt;br /&gt;
DetailFactor,&lt;br /&gt;
UV scale for the &amp;lt;code&amp;gt;normal[2]&amp;lt;/code&amp;gt; texture,,,;&lt;br /&gt;
&lt;br /&gt;
| features =&lt;br /&gt;
enable_multi_tangent_space,&lt;br /&gt;
is_use_gi_prt,&lt;br /&gt;
is_use_gi_sg,&lt;br /&gt;
is_use_gi,&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Justin113D</name></author>
	</entry>
</feed>