<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Unity Shader Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<atom:link href="https://lycos7560.com/tag/unity-shader/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>생각의 흐름을 타고 다니며 만드는 블로그</description>
	<lastBuildDate>Tue, 04 Mar 2025 17:40:35 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://lycos7560.com/wp-content/uploads/2022/11/cropped-cropped-cropped-log-1-150x150-1-80x80.png</url>
	<title>Unity Shader Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>URP VFX Learning Templates (2)</title>
		<link>https://lycos7560.com/unity/urp-vfx-learning-templates-2/39699/</link>
					<comments>https://lycos7560.com/unity/urp-vfx-learning-templates-2/39699/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sun, 23 Feb 2025 00:40:02 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[Alpha Blending]]></category>
		<category><![CDATA[Compute Shader]]></category>
		<category><![CDATA[Flipbook Animation]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Motion Vectors]]></category>
		<category><![CDATA[Noise Texture]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[Real-time FX]]></category>
		<category><![CDATA[Rendering Tricks]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Unity Docs]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[Unity VFX Graph]]></category>
		<category><![CDATA[URP]]></category>
		<category><![CDATA[URP (Universal Render Pipeline)]]></category>
		<category><![CDATA[VFX]]></category>
		<category><![CDATA[VFX (Visual Effects)]]></category>
		<category><![CDATA[VFX Techniques]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=39699</guid>

					<description><![CDATA[<p>URP_VFX_Learning_Templates (2) 11. TexIndex Attribute VFX 아티스트들은 스프라이트 시트(Sprite Sheet) 를 자주 사용합니다. 이 VFX 예제는 출력(Output) 에서 UV 옵션 을 사용하여 스프라이트 시트 를 활용하는 방법을 보여줍니다. 또한 Flipbook 설정 을 구성하는 방법과 texIndex 속성 과의 관계를 설명합니다. Covered Aspects: 12. Flipbook Mode 이 VFX는 Output(출력)의 UV 모드를 Flipbook으로 설정하여 스프라이트 시트를 사용하는 방법을 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/urp-vfx-learning-templates-2/39699/">URP VFX Learning Templates (2)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="f27cY38Nml"><a href="https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/">URP VFX Learning Templates (1)</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;URP VFX Learning Templates (1)&#8221; &#8212; 어제와 내일의 나 그 사이의 이야기" src="https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/embed/#?secret=j2C2b3DaWr#?secret=f27cY38Nml" data-secret="f27cY38Nml" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-303fb734      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#urp-vfx-learning-templates-2" class="uagb-toc-link__trigger">URP_VFX_Learning_Templates (2)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#11-texindex-attribute" class="uagb-toc-link__trigger">11. TexIndex Attribute</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#12-flipbook-mode" class="uagb-toc-link__trigger">12. Flipbook Mode</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#13-flipbook-blending" class="uagb-toc-link__trigger">13. Flipbook Blending</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#14-texindex-advanced" class="uagb-toc-link__trigger">14. TexIndex Advanced</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#15-pivot-attribute" class="uagb-toc-link__trigger">15. Pivot Attribute</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#16-pivot-advanced" class="uagb-toc-link__trigger">16. Pivot Advanced</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#17-sample-mesh" class="uagb-toc-link__trigger">17. Sample Mesh</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Unity 6 - 6000.0.32f1
Visual Effect Graph - 17.0.3</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">URP_VFX_Learning_Templates (2)</h1>



<h2 class="wp-block-heading">11. TexIndex Attribute</h2>



<p>VFX 아티스트들은 <strong>스프라이트 시트(Sprite Sheet)</strong> 를 자주 사용합니다.</p>



<p>이 VFX 예제는 <strong>출력(Output)</strong> 에서 <strong>UV 옵션</strong> 을 사용하여 <strong>스프라이트 시트</strong> 를 활용하는 방법을 보여줍니다. </p>



<p>또한 <strong>Flipbook 설정</strong> 을 구성하는 방법과 <strong>texIndex 속성</strong> 과의 관계를 설명합니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>TexIndex Attribute</li>



<li>UVs Mode</li>



<li>Flipbook</li>
</ul>



<figure class="wp-block-video"><video height="1056" style="aspect-ratio: 1704 / 1056;" width="1704" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_07_35_03_551.mp4"></video><figcaption class="wp-element-caption">TexIndex Attribute Video (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1439" height="943" src="https://lycos7560.com/wp-content/uploads/2025/02/image-78.png" alt="" class="wp-image-39713" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-78.png 1439w, https://lycos7560.com/wp-content/uploads/2025/02/image-78-300x197.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-78-768x503.png 768w" sizes="(max-width: 1439px) 100vw, 1439px" /><figcaption class="wp-element-caption">TexIndex Attribute Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1762" height="1789" src="https://lycos7560.com/wp-content/uploads/2025/02/image-74-1.jpg" alt="" class="wp-image-39700" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-74-1.jpg 1762w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-1-295x300.jpg 295w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-1-768x780.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-1-1513x1536.jpg 1513w" sizes="(max-width: 1762px) 100vw, 1762px" /><figcaption class="wp-element-caption">Sprite Debug Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1271" height="1780" src="https://lycos7560.com/wp-content/uploads/2025/02/image-74.png" alt="" class="wp-image-39701" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-74.png 1271w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-214x300.png 214w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-768x1076.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-1097x1536.png 1097w" sizes="(max-width: 1271px) 100vw, 1271px" /><figcaption class="wp-element-caption">Leaf Fliebook Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1387" height="1088" src="https://lycos7560.com/wp-content/uploads/2025/02/image-77-1.jpg" alt="" class="wp-image-39708" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-77-1.jpg 1387w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-1-300x235.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-1-768x602.jpg 768w" sizes="(max-width: 1387px) 100vw, 1387px" /><figcaption class="wp-element-caption">SpriteSheet Debug (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1910" height="921" src="https://lycos7560.com/wp-content/uploads/2025/02/image-75.png" alt="" class="wp-image-39703" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-75.png 1910w, https://lycos7560.com/wp-content/uploads/2025/02/image-75-300x145.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-75-768x370.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-75-1536x741.png 1536w" sizes="(max-width: 1910px) 100vw, 1910px" /><figcaption class="wp-element-caption">SpriteSheet Debug (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1714" height="942" src="https://lycos7560.com/wp-content/uploads/2025/02/image-76.jpg" alt="" class="wp-image-39704" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-76.jpg 1714w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-300x165.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-768x422.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-1536x844.jpg 1536w" sizes="(max-width: 1714px) 100vw, 1714px" /><figcaption class="wp-element-caption">SpriteSheet Debug (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1879" height="949" src="https://lycos7560.com/wp-content/uploads/2025/02/image-76.png" alt="" class="wp-image-39705" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-76.png 1879w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-300x152.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-768x388.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-76-1536x776.png 1536w" sizes="(max-width: 1879px) 100vw, 1879px" /><figcaption class="wp-element-caption">Leaf Flipbook (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1697" height="1008" src="https://lycos7560.com/wp-content/uploads/2025/02/image-77.jpg" alt="" class="wp-image-39706" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-77.jpg 1697w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-300x178.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-768x456.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-1536x912.jpg 1536w" sizes="(max-width: 1697px) 100vw, 1697px" /><figcaption class="wp-element-caption">Leaf Flipbook (2)</figcaption></figure>



<figure class="wp-block-video"><video height="1228" style="aspect-ratio: 2168 / 1228;" width="2168" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_07_58_26_612.mp4"></video><figcaption class="wp-element-caption">TexIndex Attribute Video (2)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">12. Flipbook Mode</h2>



<p>이 VFX는 <strong>Output(출력)의 UV 모드를 Flipbook으로 설정하여 스프라이트 시트를 사용하는 방법</strong>을 보여줍니다.</p>



<p>또한 <strong>Flipbook Blend Frames 사용법과 Flipbook Player Block의 기본적인 활용 방법</strong>을 설명합니다.</p>



<p><strong>Flipbook Blend Frames</strong> 설정을 사용하면 프레임 간 보간(Interpolation)이 적용되어 <strong>부드러운 애니메이션 효과</strong>를 얻을 수 있습니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Flipbook Player</li>



<li>UVs Mode</li>



<li>TexIndex Attribute</li>
</ul>



<figure class="wp-block-video"><video height="1224" style="aspect-ratio: 2344 / 1224;" width="2344" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_08_13_45_776.mp4"></video><figcaption class="wp-element-caption">Flipbook Mode Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1595" height="1006" src="https://lycos7560.com/wp-content/uploads/2025/02/image-79.jpg" alt="" class="wp-image-39714" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-79.jpg 1595w, https://lycos7560.com/wp-content/uploads/2025/02/image-79-300x189.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-79-768x484.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-79-1536x969.jpg 1536w" sizes="(max-width: 1595px) 100vw, 1595px" /><figcaption class="wp-element-caption">CandleMesh Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="955" height="1011" src="https://lycos7560.com/wp-content/uploads/2025/02/image-77.png" alt="" class="wp-image-39712" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-77.png 955w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-283x300.png 283w, https://lycos7560.com/wp-content/uploads/2025/02/image-77-768x813.png 768w" sizes="(max-width: 955px) 100vw, 955px" /><figcaption class="wp-element-caption">CandleMesh Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1394" height="1019" src="https://lycos7560.com/wp-content/uploads/2025/02/image-79.png" alt="" class="wp-image-39715" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-79.png 1394w, https://lycos7560.com/wp-content/uploads/2025/02/image-79-300x219.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-79-768x561.png 768w" sizes="(max-width: 1394px) 100vw, 1394px" /><figcaption class="wp-element-caption">CandleMesh (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1843" height="1045" src="https://lycos7560.com/wp-content/uploads/2025/02/image-80-1.jpg" alt="" class="wp-image-39717" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-80-1.jpg 1843w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-1-300x170.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-1-768x435.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-1-1536x871.jpg 1536w" sizes="(max-width: 1843px) 100vw, 1843px" /><figcaption class="wp-element-caption">CandleMesh (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="684" height="542" src="https://lycos7560.com/wp-content/uploads/2025/02/image-85.png" alt="" class="wp-image-39730" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-85.png 684w, https://lycos7560.com/wp-content/uploads/2025/02/image-85-300x238.png 300w" sizes="(max-width: 684px) 100vw, 684px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1833" height="997" src="https://lycos7560.com/wp-content/uploads/2025/02/image-80.png" alt="" class="wp-image-39718" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-80.png 1833w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-300x163.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-768x418.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-80-1536x835.png 1536w" sizes="(max-width: 1833px) 100vw, 1833px" /><figcaption class="wp-element-caption">SG Candle Shader Graph</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-5df68b37-34df-4a04-8ebb-a6b2f97bb390" href="https://lycos7560.com/wp-content/uploads/2025/02/SG_Candle.unitypackage">SG_Candle</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/SG_Candle.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-5df68b37-34df-4a04-8ebb-a6b2f97bb390">다운로드</a></div>



<figure class="wp-block-image size-full"><img decoding="async" width="765" height="984" src="https://lycos7560.com/wp-content/uploads/2025/02/image-81.png" alt="" class="wp-image-39720" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-81.png 765w, https://lycos7560.com/wp-content/uploads/2025/02/image-81-233x300.png 233w" sizes="(max-width: 765px) 100vw, 765px" /><figcaption class="wp-element-caption">Flipbook Flame Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1847" height="998" src="https://lycos7560.com/wp-content/uploads/2025/02/image-82.jpg" alt="" class="wp-image-39721" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-82.jpg 1847w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-300x162.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-768x415.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-1536x830.jpg 1536w" sizes="(max-width: 1847px) 100vw, 1847px" /><figcaption class="wp-element-caption">Flipbook Flame (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1885" height="1065" src="https://lycos7560.com/wp-content/uploads/2025/02/image-82.png" alt="" class="wp-image-39722" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-82.png 1885w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-300x169.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-768x434.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-82-1536x868.png 1536w" sizes="(max-width: 1885px) 100vw, 1885px" /><figcaption class="wp-element-caption">Flipbook Flame (2)</figcaption></figure>



<figure class="wp-block-video"><video height="920" style="aspect-ratio: 1816 / 920;" width="1816" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_08_52_55_798.mp4"></video><figcaption class="wp-element-caption">Flipbook Flame Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="693" height="542" src="https://lycos7560.com/wp-content/uploads/2025/02/image-83.png" alt="" class="wp-image-39724" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-83.png 693w, https://lycos7560.com/wp-content/uploads/2025/02/image-83-300x235.png 300w" sizes="(max-width: 693px) 100vw, 693px" /></figure>



<div class="wp-block-file"><a id="wp-block-file--media-8e29395e-ab0b-42c2-bf45-20a8391e377c" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_CandleFlame.unitypackage">TX_Flipbook_CandleFlame</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_CandleFlame.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-8e29395e-ab0b-42c2-bf45-20a8391e377c">다운로드</a></div>



<figure class="wp-block-image size-full"><img decoding="async" width="613" height="973" src="https://lycos7560.com/wp-content/uploads/2025/02/image-84.png" alt="" class="wp-image-39726" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-84.png 613w, https://lycos7560.com/wp-content/uploads/2025/02/image-84-189x300.png 189w" sizes="(max-width: 613px) 100vw, 613px" /><figcaption class="wp-element-caption">FlipBook Mode Debug Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1654" height="991" src="https://lycos7560.com/wp-content/uploads/2025/02/image-86.png" alt="" class="wp-image-39728" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-86.png 1654w, https://lycos7560.com/wp-content/uploads/2025/02/image-86-300x180.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-86-768x460.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-86-1536x920.png 1536w" sizes="(max-width: 1654px) 100vw, 1654px" /><figcaption class="wp-element-caption">FlipBook Mode Debug</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-4b4e556a-d996-4461-84ba-44b59b05f52e" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_example.unitypackage">TX_Flipbook_example</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_example.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-4b4e556a-d996-4461-84ba-44b59b05f52e">다운로드</a></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">13. Flipbook Blending</h2>



<p>이 VFX는 <strong>일반적인 프레임 블렌딩(Frame Blending)과 모션 벡터(Motion Vectors)를 이용한 프레임 블렌딩</strong>의 차이를 보여줍니다.</p>



<p>모션 벡터 블렌딩(Motion Vector Blending)은 <strong>프레임 간 픽셀 이동 정보를 포함한 텍스처를 활용하여 프레임 간 부드러운 전환을 구현</strong>합니다.</p>



<p>이 방식은 <strong>플립북의 프레임 수를 줄이거나, 슬로우 모션(Slow Motion) 애니메이션을 구현할 때 유용</strong>합니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Flipbook Player</li>



<li>UVs Mode</li>



<li>TexIndex Attribute</li>
</ul>



<figure class="wp-block-video"><video height="1196" style="aspect-ratio: 2232 / 1196;" width="2232" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_09_16_43_921.mp4"></video><figcaption class="wp-element-caption">Flipbook Blending Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1139" height="1061" src="https://lycos7560.com/wp-content/uploads/2025/02/image-87.png" alt="" class="wp-image-39732" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-87.png 1139w, https://lycos7560.com/wp-content/uploads/2025/02/image-87-300x279.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-87-768x715.png 768w" sizes="(max-width: 1139px) 100vw, 1139px" /><figcaption class="wp-element-caption">Flipbook Blending Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1490" height="1045" src="https://lycos7560.com/wp-content/uploads/2025/02/image-88.png" alt="" class="wp-image-39733" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-88.png 1490w, https://lycos7560.com/wp-content/uploads/2025/02/image-88-300x210.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-88-768x539.png 768w" sizes="(max-width: 1490px) 100vw, 1490px" /><figcaption class="wp-element-caption">Flipbook Blending (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1790" height="1039" src="https://lycos7560.com/wp-content/uploads/2025/02/image-89.jpg" alt="" class="wp-image-39734" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-89.jpg 1790w, https://lycos7560.com/wp-content/uploads/2025/02/image-89-300x174.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-89-768x446.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-89-1536x892.jpg 1536w" sizes="(max-width: 1790px) 100vw, 1790px" /><figcaption class="wp-element-caption">Flipbook Blending (2)</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-4b503e0c-56b3-4777-858e-1c35a4a134ff" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_Smoke.unitypackage">TX_Flipbook_Smoke</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_Smoke.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-4b503e0c-56b3-4777-858e-1c35a4a134ff">다운로드</a></div>



<figure class="wp-block-video"><video height="1360" style="aspect-ratio: 2536 / 1360;" width="2536" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_09_31_46_844.mp4"></video></figure>



<p>일반적인 Blend Frame은 단순한 알파 블렌딩(Alpha Blending) 방식으로, 프레임 수가 부족할 경우 끊김 현상이 발생할 수 있음.</p>



<p>Flipbook Player를 사용하면 자동으로 <code>TexIndex</code>가 증가하며 애니메이션이 진행됨.</p>



<p>Motion Vector Blending을 사용하면 픽셀 이동 정보를 활용하여 더욱 부드러운 전환을 구현할 수 있음.</p>



<ul class="wp-block-list">
<li>이 방법은 플립북 애니메이션의 프레임 수를 줄이면서도 부드러운 모션을 유지하는 데 유용함.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">14. <strong>TexIndex Advanced</strong></h2>



<p>이 고급 VFX는 <strong>texIndex 속성</strong>을 창의적으로 활용하는 여러 시스템으로 구성되어 있습니다.</p>



<p>시간(Time), 노이즈(Noise), 심지어 파티클의 위치(Position)까지 사용하여 </p>



<p><strong>texIndex 속성</strong>을 제어하며, 이를 통해 생동감 있는 VFX를 만듭니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Flipbook UVs</li>



<li>TexIndex Attribute</li>



<li>Flipbook Player</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1781" height="589" src="https://lycos7560.com/wp-content/uploads/2025/02/image-118.jpg" alt="" class="wp-image-39787" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-118.jpg 1781w, https://lycos7560.com/wp-content/uploads/2025/02/image-118-300x99.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-118-768x254.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-118-1536x508.jpg 1536w" sizes="(max-width: 1781px) 100vw, 1781px" /><figcaption class="wp-element-caption">TexIndex Advanced Graph Entire</figcaption></figure>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_52_30_504.mp4"></video><figcaption class="wp-element-caption">TexIndex Advanced Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="957" height="1179" src="https://lycos7560.com/wp-content/uploads/2025/02/image-89.png" alt="" class="wp-image-39739" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-89.png 957w, https://lycos7560.com/wp-content/uploads/2025/02/image-89-244x300.png 244w, https://lycos7560.com/wp-content/uploads/2025/02/image-89-768x946.png 768w" sizes="(max-width: 957px) 100vw, 957px" /><figcaption class="wp-element-caption">Brush Strokes Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1892" height="706" src="https://lycos7560.com/wp-content/uploads/2025/02/image-90.png" alt="" class="wp-image-39742" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-90.png 1892w, https://lycos7560.com/wp-content/uploads/2025/02/image-90-300x112.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-90-768x287.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-90-1536x573.png 1536w" sizes="(max-width: 1892px) 100vw, 1892px" /><figcaption class="wp-element-caption">Brush Strokes (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1710" height="1061" src="https://lycos7560.com/wp-content/uploads/2025/02/image-91.png" alt="" class="wp-image-39743" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-91.png 1710w, https://lycos7560.com/wp-content/uploads/2025/02/image-91-300x186.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-91-768x477.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-91-1536x953.png 1536w" sizes="(max-width: 1710px) 100vw, 1710px" /><figcaption class="wp-element-caption">Brush Strokes (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1886" height="273" src="https://lycos7560.com/wp-content/uploads/2025/02/image-93.png" alt="" class="wp-image-39745" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-93.png 1886w, https://lycos7560.com/wp-content/uploads/2025/02/image-93-300x43.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-93-768x111.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-93-1536x222.png 1536w" sizes="(max-width: 1886px) 100vw, 1886px" /><figcaption class="wp-element-caption">Brush Strokes (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1534" height="979" src="https://lycos7560.com/wp-content/uploads/2025/02/image-92.png" alt="" class="wp-image-39744" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-92.png 1534w, https://lycos7560.com/wp-content/uploads/2025/02/image-92-300x191.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-92-768x490.png 768w" sizes="(max-width: 1534px) 100vw, 1534px" /><figcaption class="wp-element-caption">Brush Strokes (4)</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-99b47eea-ac51-4bd0-a047-0892965818a9" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Brush.unitypackage">TX_Brush</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Brush.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-99b47eea-ac51-4bd0-a047-0892965818a9">다운로드</a></div>



<figure class="wp-block-video"><video height="1232" style="aspect-ratio: 1944 / 1232;" width="1944" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_15_38_29_761.mp4"></video><figcaption class="wp-element-caption">Brush Strokes Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="773" height="1059" src="https://lycos7560.com/wp-content/uploads/2025/02/image-94.png" alt="" class="wp-image-39747" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-94.png 773w, https://lycos7560.com/wp-content/uploads/2025/02/image-94-219x300.png 219w, https://lycos7560.com/wp-content/uploads/2025/02/image-94-768x1052.png 768w" sizes="(max-width: 773px) 100vw, 773px" /><figcaption class="wp-element-caption">Background Pattern Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1650" height="709" src="https://lycos7560.com/wp-content/uploads/2025/02/image-95.png" alt="" class="wp-image-39748" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-95.png 1650w, https://lycos7560.com/wp-content/uploads/2025/02/image-95-300x129.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-95-768x330.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-95-1536x660.png 1536w" sizes="(max-width: 1650px) 100vw, 1650px" /><figcaption class="wp-element-caption">Background Pattern (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1622" height="991" src="https://lycos7560.com/wp-content/uploads/2025/02/image-96.png" alt="" class="wp-image-39749" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-96.png 1622w, https://lycos7560.com/wp-content/uploads/2025/02/image-96-300x183.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-96-768x469.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-96-1536x938.png 1536w" sizes="(max-width: 1622px) 100vw, 1622px" /><figcaption class="wp-element-caption">Background Pattern (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1283" src="https://lycos7560.com/wp-content/uploads/2025/02/image-97.jpg" alt="" class="wp-image-39750" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-97.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-97-300x200.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-97-768x513.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-97-1536x1026.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Background Pattern (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="874" height="443" src="https://lycos7560.com/wp-content/uploads/2025/02/image-97.png" alt="" class="wp-image-39753" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-97.png 874w, https://lycos7560.com/wp-content/uploads/2025/02/image-97-300x152.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-97-768x389.png 768w" sizes="(max-width: 874px) 100vw, 874px" /><figcaption class="wp-element-caption">TX_Flipbook_Cross / TX_UnityLogo_Pack</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-ce705eb8-08bf-44f0-a9e7-25222dbae62f" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_CrossTX_UnityLogo_Pack.unitypackage">TX_Flipbook_Cross&amp;TX_UnityLogo_Pack</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_CrossTX_UnityLogo_Pack.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-ce705eb8-08bf-44f0-a9e7-25222dbae62f">다운로드</a></div>



<figure class="wp-block-video"><video height="1192" style="aspect-ratio: 2344 / 1192;" width="2344" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_16_29_35_748.mp4"></video><figcaption class="wp-element-caption">Background Pattern Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="802" height="1066" src="https://lycos7560.com/wp-content/uploads/2025/02/image-102.png" alt="" class="wp-image-39763" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-102.png 802w, https://lycos7560.com/wp-content/uploads/2025/02/image-102-226x300.png 226w, https://lycos7560.com/wp-content/uploads/2025/02/image-102-768x1021.png 768w" sizes="(max-width: 802px) 100vw, 802px" /><figcaption class="wp-element-caption">Unity Font Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1538" height="1030" src="https://lycos7560.com/wp-content/uploads/2025/02/image-98.png" alt="" class="wp-image-39757" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-98.png 1538w, https://lycos7560.com/wp-content/uploads/2025/02/image-98-300x201.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-98-768x514.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-98-1536x1029.png 1536w" sizes="(max-width: 1538px) 100vw, 1538px" /><figcaption class="wp-element-caption">Unity Font (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1685" height="1071" src="https://lycos7560.com/wp-content/uploads/2025/02/image-99.png" alt="" class="wp-image-39758" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-99.png 1685w, https://lycos7560.com/wp-content/uploads/2025/02/image-99-300x191.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-99-768x488.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-99-1536x976.png 1536w" sizes="(max-width: 1685px) 100vw, 1685px" /><figcaption class="wp-element-caption">Unity Font (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1736" height="698" src="https://lycos7560.com/wp-content/uploads/2025/02/image-100.png" alt="" class="wp-image-39759" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-100.png 1736w, https://lycos7560.com/wp-content/uploads/2025/02/image-100-300x121.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-100-768x309.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-100-1536x618.png 1536w" sizes="(max-width: 1736px) 100vw, 1736px" /><figcaption class="wp-element-caption">Unity Font (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1066" height="444" src="https://lycos7560.com/wp-content/uploads/2025/02/image-101.png" alt="" class="wp-image-39761" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-101.png 1066w, https://lycos7560.com/wp-content/uploads/2025/02/image-101-300x125.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-101-768x320.png 768w" sizes="(max-width: 1066px) 100vw, 1066px" /><figcaption class="wp-element-caption">TX_Flipbook_Unity</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-bfe388c7-2813-44c0-b804-a8ea95c651be" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_Unity_Text.unitypackage">TX_Flipbook_Unity_Text</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Flipbook_Unity_Text.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-bfe388c7-2813-44c0-b804-a8ea95c651be">다운로드</a></div>



<figure class="wp-block-video"><video height="1192" style="aspect-ratio: 2344 / 1192;" width="2344" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_16_48_06_307.mp4"></video><figcaption class="wp-element-caption">Unity Font Viedo</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="956" height="1002" src="https://lycos7560.com/wp-content/uploads/2025/02/image-103.png" alt="" class="wp-image-39764" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-103.png 956w, https://lycos7560.com/wp-content/uploads/2025/02/image-103-286x300.png 286w, https://lycos7560.com/wp-content/uploads/2025/02/image-103-768x805.png 768w" sizes="(max-width: 956px) 100vw, 956px" /><figcaption class="wp-element-caption">Cubes Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="853" height="1068" src="https://lycos7560.com/wp-content/uploads/2025/02/image-104.png" alt="" class="wp-image-39765" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-104.png 853w, https://lycos7560.com/wp-content/uploads/2025/02/image-104-240x300.png 240w, https://lycos7560.com/wp-content/uploads/2025/02/image-104-768x962.png 768w" sizes="(max-width: 853px) 100vw, 853px" /><figcaption class="wp-element-caption">Cubes (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1782" height="915" src="https://lycos7560.com/wp-content/uploads/2025/02/image-105.png" alt="" class="wp-image-39766" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-105.png 1782w, https://lycos7560.com/wp-content/uploads/2025/02/image-105-300x154.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-105-768x394.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-105-1536x789.png 1536w" sizes="(max-width: 1782px) 100vw, 1782px" /><figcaption class="wp-element-caption">Cubes (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="2517" height="748" src="https://lycos7560.com/wp-content/uploads/2025/02/image-106.png" alt="" class="wp-image-39767" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-106.png 2517w, https://lycos7560.com/wp-content/uploads/2025/02/image-106-300x89.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-106-768x228.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-106-1536x456.png 1536w, https://lycos7560.com/wp-content/uploads/2025/02/image-106-2048x609.png 2048w" sizes="(max-width: 2517px) 100vw, 2517px" /><figcaption class="wp-element-caption">Cubes (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="531" height="463" src="https://lycos7560.com/wp-content/uploads/2025/02/image-107.png" alt="" class="wp-image-39768" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-107.png 531w, https://lycos7560.com/wp-content/uploads/2025/02/image-107-300x262.png 300w" sizes="(max-width: 531px) 100vw, 531px" /><figcaption class="wp-element-caption">ST_Unity_Cube</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-7172feb2-4cdd-4a20-b97c-7c1830fcb96c" href="https://lycos7560.com/wp-content/uploads/2025/02/ST_Unity_Cube.unitypackage">ST_Unity_Cube</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/ST_Unity_Cube.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-7172feb2-4cdd-4a20-b97c-7c1830fcb96c">다운로드</a></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1692" height="1073" src="https://lycos7560.com/wp-content/uploads/2025/02/image-108.png" alt="" class="wp-image-39770" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-108.png 1692w, https://lycos7560.com/wp-content/uploads/2025/02/image-108-300x190.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-108-768x487.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-108-1536x974.png 1536w" sizes="(max-width: 1692px) 100vw, 1692px" /><figcaption class="wp-element-caption">SG_Unity_Sketch</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-0ca3e3fb-502c-42d4-9555-ff36d271c883" href="https://lycos7560.com/wp-content/uploads/2025/02/SG_Unity_Sketch.unitypackage">SG_Unity_Sketch</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/SG_Unity_Sketch.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-0ca3e3fb-502c-42d4-9555-ff36d271c883">다운로드</a></div>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_13_12_773.mp4"></video><figcaption class="wp-element-caption">Cubes Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="814" height="1074" src="https://lycos7560.com/wp-content/uploads/2025/02/image-109.png" alt="" class="wp-image-39773" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-109.png 814w, https://lycos7560.com/wp-content/uploads/2025/02/image-109-227x300.png 227w, https://lycos7560.com/wp-content/uploads/2025/02/image-109-768x1013.png 768w" sizes="(max-width: 814px) 100vw, 814px" /><figcaption class="wp-element-caption">Lightning Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1155" height="1013" src="https://lycos7560.com/wp-content/uploads/2025/02/image-110.png" alt="" class="wp-image-39774" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-110.png 1155w, https://lycos7560.com/wp-content/uploads/2025/02/image-110-300x263.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-110-768x674.png 768w" sizes="(max-width: 1155px) 100vw, 1155px" /><figcaption class="wp-element-caption">Lightning (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1552" height="1070" src="https://lycos7560.com/wp-content/uploads/2025/02/image-111.png" alt="" class="wp-image-39775" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-111.png 1552w, https://lycos7560.com/wp-content/uploads/2025/02/image-111-300x207.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-111-768x529.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-111-1536x1059.png 1536w" sizes="(max-width: 1552px) 100vw, 1552px" /><figcaption class="wp-element-caption">Lightning (2)</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-d1dd35b8-2d8b-43b6-a530-f86ce11dc694" href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Lighting.unitypackage">TX_Lighting</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/TX_Lighting.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-d1dd35b8-2d8b-43b6-a530-f86ce11dc694">다운로드</a></div>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_23_47_199.mp4"></video><figcaption class="wp-element-caption">Lightning Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="952" height="1026" src="https://lycos7560.com/wp-content/uploads/2025/02/image-112.png" alt="" class="wp-image-39778" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-112.png 952w, https://lycos7560.com/wp-content/uploads/2025/02/image-112-278x300.png 278w, https://lycos7560.com/wp-content/uploads/2025/02/image-112-768x828.png 768w" sizes="(max-width: 952px) 100vw, 952px" /><figcaption class="wp-element-caption">I Dot Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1254" height="1058" src="https://lycos7560.com/wp-content/uploads/2025/02/image-113.png" alt="" class="wp-image-39779" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-113.png 1254w, https://lycos7560.com/wp-content/uploads/2025/02/image-113-300x253.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-113-768x648.png 768w" sizes="(max-width: 1254px) 100vw, 1254px" /><figcaption class="wp-element-caption">I Dot (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1478" height="624" src="https://lycos7560.com/wp-content/uploads/2025/02/image-114.png" alt="" class="wp-image-39780" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-114.png 1478w, https://lycos7560.com/wp-content/uploads/2025/02/image-114-300x127.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-114-768x324.png 768w" sizes="(max-width: 1478px) 100vw, 1478px" /><figcaption class="wp-element-caption">I Dot (2)</figcaption></figure>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_32_30_64.mp4"></video><figcaption class="wp-element-caption">I Dot Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="527" height="971" src="https://lycos7560.com/wp-content/uploads/2025/02/image-115.png" alt="" class="wp-image-39782" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-115.png 527w, https://lycos7560.com/wp-content/uploads/2025/02/image-115-163x300.png 163w" sizes="(max-width: 527px) 100vw, 527px" /><figcaption class="wp-element-caption">Floating Shapes Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="938" height="1039" src="https://lycos7560.com/wp-content/uploads/2025/02/image-116.jpg" alt="" class="wp-image-39783" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-116.jpg 938w, https://lycos7560.com/wp-content/uploads/2025/02/image-116-271x300.jpg 271w, https://lycos7560.com/wp-content/uploads/2025/02/image-116-768x851.jpg 768w" sizes="(max-width: 938px) 100vw, 938px" /><figcaption class="wp-element-caption">Floating Shapes (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1611" height="927" src="https://lycos7560.com/wp-content/uploads/2025/02/image-116.png" alt="" class="wp-image-39784" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-116.png 1611w, https://lycos7560.com/wp-content/uploads/2025/02/image-116-300x173.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-116-768x442.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-116-1536x884.png 1536w" sizes="(max-width: 1611px) 100vw, 1611px" /><figcaption class="wp-element-caption">Floating Shapes (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1609" height="918" src="https://lycos7560.com/wp-content/uploads/2025/02/image-117.png" alt="" class="wp-image-39785" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-117.png 1609w, https://lycos7560.com/wp-content/uploads/2025/02/image-117-300x171.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-117-768x438.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-117-1536x876.png 1536w" sizes="(max-width: 1609px) 100vw, 1609px" /><figcaption class="wp-element-caption">Floating Shapes (3)</figcaption></figure>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_45_58_212.mp4"></video></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">15. <strong>Pivot Attribute</strong></h2>



<p><strong>피벗 속성(Pivot Attribute)</strong> 은 <strong>출력 렌더(output render)</strong> 가 <strong>파티클 위치를 기준으로 어디에서 생성되는지</strong> 를 제어합니다.</p>



<p>기본적으로 <strong>피벗은 파티클의 중심(Position)에 위치</strong>하지만, <strong>X, Y, Z 축을 따라 이동(offset)</strong> 시킬 수 있습니다.</p>



<p>피벗을 오프셋하면 <strong>스케일(크기) 조정 및 회전(rotation) 시 보다 매력적인 움직임을 만들 수 있습니다</strong>.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Pivot Attribute</li>



<li>Angle Attribute</li>
</ul>



<figure class="wp-block-video"><video height="1172" style="aspect-ratio: 2320 / 1172;" width="2320" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_18_15_21_603.mp4"></video></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="840" height="1302" src="https://lycos7560.com/wp-content/uploads/2025/02/image-118.png" alt="" class="wp-image-39790" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-118.png 840w, https://lycos7560.com/wp-content/uploads/2025/02/image-118-194x300.png 194w, https://lycos7560.com/wp-content/uploads/2025/02/image-118-768x1190.png 768w" sizes="(max-width: 840px) 100vw, 840px" /><figcaption class="wp-element-caption">Pivot Attribute Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1684" height="1159" src="https://lycos7560.com/wp-content/uploads/2025/02/image-119.png" alt="" class="wp-image-39792" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-119.png 1684w, https://lycos7560.com/wp-content/uploads/2025/02/image-119-300x206.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-119-768x529.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-119-1536x1057.png 1536w" sizes="(max-width: 1684px) 100vw, 1684px" /><figcaption class="wp-element-caption">Pivot Attribute (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1595" height="1291" src="https://lycos7560.com/wp-content/uploads/2025/02/image-120.png" alt="" class="wp-image-39793" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-120.png 1595w, https://lycos7560.com/wp-content/uploads/2025/02/image-120-300x243.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-120-768x622.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-120-1536x1243.png 1536w" sizes="(max-width: 1595px) 100vw, 1595px" /><figcaption class="wp-element-caption">Pivot Attribute (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1340" height="406" src="https://lycos7560.com/wp-content/uploads/2025/02/image-121.png" alt="" class="wp-image-39794" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-121.png 1340w, https://lycos7560.com/wp-content/uploads/2025/02/image-121-300x91.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-121-768x233.png 768w" sizes="(max-width: 1340px) 100vw, 1340px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="883" height="410" src="https://lycos7560.com/wp-content/uploads/2025/02/image-122.png" alt="" class="wp-image-39795" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-122.png 883w, https://lycos7560.com/wp-content/uploads/2025/02/image-122-300x139.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-122-768x357.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></figure>



<div class="wp-block-file"><a id="wp-block-file--media-1f95656c-d925-4b94-b321-88cbace793da" href="https://lycos7560.com/wp-content/uploads/2025/02/Pivot-Leaf.unitypackage">Pivot Leaf</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/Pivot-Leaf.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-1f95656c-d925-4b94-b321-88cbace793da">다운로드</a></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">16. <strong>Pivot Advanced</strong></h2>



<p>파티클의 <strong>피벗(Pivot)</strong> 을 제어하는 것은 <strong>자연스럽고 흥미로운 움직임을 구현하는 핵심 요소</strong>입니다.</p>



<p>이 VFX에서는 <strong>피벗을 조작하여 꽃잎, 잎사귀, 가시 등이 자연스럽게 배치 및 애니메이션되는 과정</strong>을 보여줍니다.</p>



<p>또한, <strong>Shader Graph와 VFX Graph의 연동을 통해 셰이더를 제어하는 방법</strong>도 시연합니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Pivot Attribute</li>



<li>Shader Graph integration</li>



<li>Activation Port</li>
</ul>



<figure class="wp-block-video"><video height="1176" style="aspect-ratio: 2336 / 1176;" width="2336" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_24_11_02_22_851.mp4"></video></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1528" height="1014" src="https://lycos7560.com/wp-content/uploads/2025/02/image-125.jpg" alt="" class="wp-image-39805" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-125.jpg 1528w, https://lycos7560.com/wp-content/uploads/2025/02/image-125-300x199.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-125-768x510.jpg 768w" sizes="(max-width: 1528px) 100vw, 1528px" /><figcaption class="wp-element-caption">Pivot Advanced Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1249" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-123.jpg" alt="" class="wp-image-39802" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-123.jpg 1249w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-195x300.jpg 195w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-768x1181.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-999x1536.jpg 999w" sizes="(max-width: 1249px) 100vw, 1249px" /><figcaption class="wp-element-caption">Flower Blossom Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1741" height="1032" src="https://lycos7560.com/wp-content/uploads/2025/02/image-125.png" alt="" class="wp-image-39807" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-125.png 1741w, https://lycos7560.com/wp-content/uploads/2025/02/image-125-300x178.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-125-768x455.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-125-1536x910.png 1536w" sizes="(max-width: 1741px) 100vw, 1741px" /><figcaption class="wp-element-caption">Flower Blossom (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1243" height="986" src="https://lycos7560.com/wp-content/uploads/2025/02/image-126.png" alt="" class="wp-image-39810" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-126.png 1243w, https://lycos7560.com/wp-content/uploads/2025/02/image-126-300x238.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-126-768x609.png 768w" sizes="(max-width: 1243px) 100vw, 1243px" /><figcaption class="wp-element-caption">Flower Blossom (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1106" height="673" src="https://lycos7560.com/wp-content/uploads/2025/02/image-126.jpg" alt="" class="wp-image-39808" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-126.jpg 1106w, https://lycos7560.com/wp-content/uploads/2025/02/image-126-300x183.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-126-768x467.jpg 768w" sizes="(max-width: 1106px) 100vw, 1106px" /><figcaption class="wp-element-caption">Flower Blossom (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1507" height="1024" src="https://lycos7560.com/wp-content/uploads/2025/02/image-127.png" alt="" class="wp-image-39811" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-127.png 1507w, https://lycos7560.com/wp-content/uploads/2025/02/image-127-300x204.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-127-768x522.png 768w" sizes="(max-width: 1507px) 100vw, 1507px" /><figcaption class="wp-element-caption">Flower Blossom (4)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1174" height="1063" src="https://lycos7560.com/wp-content/uploads/2025/02/image-128.png" alt="" class="wp-image-39812" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-128.png 1174w, https://lycos7560.com/wp-content/uploads/2025/02/image-128-300x272.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-128-768x695.png 768w" sizes="(max-width: 1174px) 100vw, 1174px" /><figcaption class="wp-element-caption">SG_PetalBend</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-92470543-5aa6-4761-8b34-400c76614df8" href="https://lycos7560.com/wp-content/uploads/2025/02/SG_PetalBend.unitypackage">SG_PetalBend</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/SG_PetalBend.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-92470543-5aa6-4761-8b34-400c76614df8">다운로드</a></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1727" height="1536" src="https://lycos7560.com/wp-content/uploads/2025/02/image-123.png" alt="" class="wp-image-39803" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-123.png 1727w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-300x267.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-768x683.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-123-1536x1366.png 1536w" sizes="(max-width: 1727px) 100vw, 1727px" /><figcaption class="wp-element-caption">Green Leaf Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="954" height="1044" src="https://lycos7560.com/wp-content/uploads/2025/02/image-129.png" alt="" class="wp-image-39814" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-129.png 954w, https://lycos7560.com/wp-content/uploads/2025/02/image-129-274x300.png 274w, https://lycos7560.com/wp-content/uploads/2025/02/image-129-768x840.png 768w" sizes="(max-width: 954px) 100vw, 954px" /><figcaption class="wp-element-caption">Green Leaf (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="2254" height="1039" src="https://lycos7560.com/wp-content/uploads/2025/02/image-130.png" alt="" class="wp-image-39815" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-130.png 2254w, https://lycos7560.com/wp-content/uploads/2025/02/image-130-300x138.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-130-768x354.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-130-1536x708.png 1536w, https://lycos7560.com/wp-content/uploads/2025/02/image-130-2048x944.png 2048w" sizes="(max-width: 2254px) 100vw, 2254px" /><figcaption class="wp-element-caption">Green Leaf (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="855" height="1573" src="https://lycos7560.com/wp-content/uploads/2025/02/image-124.png" alt="" class="wp-image-39804" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-124.png 855w, https://lycos7560.com/wp-content/uploads/2025/02/image-124-163x300.png 163w, https://lycos7560.com/wp-content/uploads/2025/02/image-124-768x1413.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-124-835x1536.png 835w" sizes="(max-width: 855px) 100vw, 855px" /><figcaption class="wp-element-caption">Spines Graph</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="965" height="1067" src="https://lycos7560.com/wp-content/uploads/2025/02/image-131.png" alt="" class="wp-image-39816" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-131.png 965w, https://lycos7560.com/wp-content/uploads/2025/02/image-131-271x300.png 271w, https://lycos7560.com/wp-content/uploads/2025/02/image-131-768x849.png 768w" sizes="(max-width: 965px) 100vw, 965px" /><figcaption class="wp-element-caption">Spines (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="607" height="689" src="https://lycos7560.com/wp-content/uploads/2025/02/image-132.png" alt="" class="wp-image-39817" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-132.png 607w, https://lycos7560.com/wp-content/uploads/2025/02/image-132-264x300.png 264w" sizes="(max-width: 607px) 100vw, 607px" /><figcaption class="wp-element-caption">Spines (2)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">17. <strong>Sample Mesh</strong></h2>



<p>이 VFX는 <strong>메시 샘플링(Sample Mesh)</strong> 을 활용하여 <strong>파티클을 메시 표면에 생성</strong> 하고, 메시의 <strong>버텍스 색상(Vertex Color)</strong> 을 <strong>상속</strong> 하는 방법을 보여줍니다.</p>



<p>또한, 메시의 버텍스 색상에 <strong>앰비언트 오클루전(Ambient Occlusion, AO)</strong> 값을 미리 베이크(Bake) 해두었으며, 이를 이용해 <strong>파티클의 색상을 설정</strong> 합니다.</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Mesh Sampling</li>



<li>Sample Mesh Operator</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="1120" style="aspect-ratio: 1984 / 1120;" width="1984" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_03_05_01_58_06_887.mp4"></video><figcaption class="wp-element-caption">Sample Mesh Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1436" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-181.jpg" alt="" class="wp-image-39896" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-181.jpg 1436w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-224x300.jpg 224w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-768x1027.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-1149x1536.jpg 1149w" sizes="(max-width: 1436px) 100vw, 1436px" /><figcaption class="wp-element-caption">Sample Mesh Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1042" src="https://lycos7560.com/wp-content/uploads/2025/02/image-181-1.jpg" alt="" class="wp-image-39897" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-181-1.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-1-300x163.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-1-768x417.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-1-1536x834.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Sample Mesh (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1198" height="868" src="https://lycos7560.com/wp-content/uploads/2025/02/image-182-1.jpg" alt="" class="wp-image-39904" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-182-1.jpg 1198w, https://lycos7560.com/wp-content/uploads/2025/02/image-182-1-300x217.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-182-1-768x556.jpg 768w" sizes="(max-width: 1198px) 100vw, 1198px" /><figcaption class="wp-element-caption">Sample Mesh Plane</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1045" src="https://lycos7560.com/wp-content/uploads/2025/02/image-181-2.jpg" alt="" class="wp-image-39898" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-181-2.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-2-300x163.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-2-768x418.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-2-1536x836.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Sample Mesh (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1859" height="498" src="https://lycos7560.com/wp-content/uploads/2025/02/image-181.png" alt="" class="wp-image-39899" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-181.png 1859w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-300x80.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-768x206.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-181-1536x411.png 1536w" sizes="(max-width: 1859px) 100vw, 1859px" /><figcaption class="wp-element-caption">Lion Mesh</figcaption></figure>



<div class="wp-block-file"><a id="wp-block-file--media-1e450586-94e2-4d98-9d7a-0cf1b5b87dc3" href="https://lycos7560.com/wp-content/uploads/2025/02/Lion.unitypackage">Lion</a><a href="https://lycos7560.com/wp-content/uploads/2025/02/Lion.unitypackage" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-1e450586-94e2-4d98-9d7a-0cf1b5b87dc3">다운로드</a></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1763" src="https://lycos7560.com/wp-content/uploads/2025/02/image-182.jpg" alt="" class="wp-image-39902" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-182.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-182-300x275.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-182-768x705.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-182-1536x1410.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Sample Mesh (3)</figcaption></figure>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://lycos7560.com/unity/urp-vfx-learning-templates-2/39699/">URP VFX Learning Templates (2)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/urp-vfx-learning-templates-2/39699/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_07_35_03_551.mp4" length="7021778" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_07_58_26_612.mp4" length="11089805" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_08_13_45_776.mp4" length="7364224" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_08_52_55_798.mp4" length="12897827" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_09_16_43_921.mp4" length="21185407" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_09_31_46_844.mp4" length="4690749" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_15_38_29_761.mp4" length="15542810" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_52_30_504.mp4" length="229371564" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_16_29_35_748.mp4" length="44215272" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_16_48_06_307.mp4" length="27463485" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_13_12_773.mp4" length="71870864" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_23_47_199.mp4" length="36961851" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_32_30_64.mp4" length="9428918" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_17_45_58_212.mp4" length="18471538" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_23_18_15_21_603.mp4" length="12531473" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_24_11_02_22_851.mp4" length="27680510" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_03_05_01_58_06_887.mp4" length="14078818" type="video/mp4" />

			</item>
		<item>
		<title>URP VFX Learning Templates (1)</title>
		<link>https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/</link>
					<comments>https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/#comments</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 04:12:05 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[Alpha Blending]]></category>
		<category><![CDATA[Compute Shader]]></category>
		<category><![CDATA[Flipbook Animation]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Motion Vectors]]></category>
		<category><![CDATA[Noise Texture]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[Real-time FX]]></category>
		<category><![CDATA[Rendering Tricks]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Unity Docs]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[Unity VFX Graph]]></category>
		<category><![CDATA[URP]]></category>
		<category><![CDATA[URP (Universal Render Pipeline)]]></category>
		<category><![CDATA[VFX]]></category>
		<category><![CDATA[VFX (Visual Effects)]]></category>
		<category><![CDATA[VFX Techniques]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=39596</guid>

					<description><![CDATA[<p>URP_VFX_Learning_Templates https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@17.0/manual/index.html 1. Context&#38;Flow 컨텍스트 및 데이터 흐름 VFX Graph에서 데이터 흐름이 어떻게 구성되는지 설명하고, 자주 사용되는 컨텍스트 블록을 개요로 제공 Covered Aspects: 2. Spawn Context 이 VFX는 스폰 컨텍스트(Spawn Context) 와 관련된 정보를 제공하기 위한 것입니다. 스폰 컨텍스트란 무엇이며, Inspector에서 어떤 옵션을 설정할 수 있는지, 그리고 추가적으로 다음과 같은 정보를 포함합니다: Covered Aspects: • [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/">URP VFX Learning Templates (1)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-303fb734      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#urp-vfx-learning-templates" class="uagb-toc-link__trigger">URP_VFX_Learning_Templates</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-contextflow" class="uagb-toc-link__trigger">1. Context&amp;Flow</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-spawn-context" class="uagb-toc-link__trigger">2. Spawn Context</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-capacity-count" class="uagb-toc-link__trigger">3. Capacity Count</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#4-multiple-outputs" class="uagb-toc-link__trigger">4. Multiple Outputs</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#5-bounds" class="uagb-toc-link__trigger">5. Bounds</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#6-orient-face-camera" class="uagb-toc-link__trigger">6. Orient Face Camera</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#7-orient-fixed-axis" class="uagb-toc-link__trigger">7. Orient Fixed Axis</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#8-orient-advanced" class="uagb-toc-link__trigger">8. Orient Advanced</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#9-rotation-angle" class="uagb-toc-link__trigger">9. Rotation &amp; Angle</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#10-falling-coins" class="uagb-toc-link__trigger">10. Falling Coins</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Unity 6 - 6000.0.32f1
Visual Effect Graph - 17.0.3</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">URP_VFX_Learning_Templates</h1>



<p><a href="https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@17.0/manual/index.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@17.0/manual/index.html</a></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1. Context&amp;Flow</h2>



<p><strong>컨텍스트 및 데이터 흐름</strong></p>



<p>VFX Graph에서 <strong>데이터 흐름</strong>이 어떻게 구성되는지 설명하고, 자주 사용되는 <strong>컨텍스트 블록</strong>을 개요로 제공</p>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<ul class="wp-block-list">
<li>Data Flow (데이터 흐름)</li>



<li>Context Block (컨텍스트 블록)</li>
</ul>



<figure class="wp-block-video"><video height="932" style="aspect-ratio: 2048 / 932;" width="2048" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_16_18_09_41_580.mp4"></video><figcaption class="wp-element-caption">Context&amp;Flow Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="919" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-36.jpg" alt="" class="wp-image-39610" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-36.jpg 919w, https://lycos7560.com/wp-content/uploads/2025/02/image-36-144x300.jpg 144w, https://lycos7560.com/wp-content/uploads/2025/02/image-36-768x1605.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-36-735x1536.jpg 735w" sizes="(max-width: 919px) 100vw, 919px" /><figcaption class="wp-element-caption">Context&amp;Flow Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1421" height="839" src="https://lycos7560.com/wp-content/uploads/2025/02/image-36.png" alt="" class="wp-image-39611" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-36.png 1421w, https://lycos7560.com/wp-content/uploads/2025/02/image-36-300x177.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-36-768x453.png 768w" sizes="(max-width: 1421px) 100vw, 1421px" /><figcaption class="wp-element-caption">Context&amp;Flow (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1406" height="948" src="https://lycos7560.com/wp-content/uploads/2025/02/image-37.png" alt="" class="wp-image-39612" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-37.png 1406w, https://lycos7560.com/wp-content/uploads/2025/02/image-37-300x202.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-37-768x518.png 768w" sizes="(max-width: 1406px) 100vw, 1406px" /><figcaption class="wp-element-caption">Context&amp;Flow (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1351" height="499" src="https://lycos7560.com/wp-content/uploads/2025/02/image-38.png" alt="" class="wp-image-39613" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-38.png 1351w, https://lycos7560.com/wp-content/uploads/2025/02/image-38-300x111.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-38-768x284.png 768w" sizes="(max-width: 1351px) 100vw, 1351px" /><figcaption class="wp-element-caption">Context&amp;Flow (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1273" height="963" src="https://lycos7560.com/wp-content/uploads/2025/02/image-39.png" alt="" class="wp-image-39614" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-39.png 1273w, https://lycos7560.com/wp-content/uploads/2025/02/image-39-300x227.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-39-768x581.png 768w" sizes="(max-width: 1273px) 100vw, 1273px" /><figcaption class="wp-element-caption">Context&amp;Flow (4)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">2. Spawn Context</h2>



<p>이 VFX는 <strong>스폰 컨텍스트(Spawn Context)</strong> 와 관련된 정보를 제공하기 위한 것입니다.</p>



<p><strong>스폰 컨텍스트란 무엇이며</strong>, Inspector에서 어떤 옵션을 설정할 수 있는지, 그리고 추가적으로 다음과 같은 정보를 포함합니다:</p>



<ul class="wp-block-list">
<li>스폰 이벤트 속성(Spawn Event Attributes)이란 무엇인가?</li>



<li>스폰 이벤트 속성을 어떻게 설정하는가?</li>



<li>스폰 상태 연산자(Spawn State Operator)란 무엇인가?</li>
</ul>



<h3 class="wp-block-heading"><strong><strong>Covered Aspects:</strong></strong></h3>



<p>• Spawn Context<br>• Spawn Event Attributes<br>• Spawn State</p>



<figure class="wp-block-video"><video height="912" style="aspect-ratio: 1632 / 912;" width="1632" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_06_12_55_147.mp4"></video><figcaption class="wp-element-caption">Spawn Context Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1275" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-33.jpg" alt="" class="wp-image-39604" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-33.jpg 1275w, https://lycos7560.com/wp-content/uploads/2025/02/image-33-199x300.jpg 199w, https://lycos7560.com/wp-content/uploads/2025/02/image-33-768x1157.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-33-1020x1536.jpg 1020w" sizes="(max-width: 1275px) 100vw, 1275px" /><figcaption class="wp-element-caption">Spawn Context Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1533" height="794" src="https://lycos7560.com/wp-content/uploads/2025/02/image-33.png" alt="" class="wp-image-39605" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-33.png 1533w, https://lycos7560.com/wp-content/uploads/2025/02/image-33-300x155.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-33-768x398.png 768w" sizes="(max-width: 1533px) 100vw, 1533px" /><figcaption class="wp-element-caption">Spawn Context (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1544" height="770" src="https://lycos7560.com/wp-content/uploads/2025/02/image-34.png" alt="" class="wp-image-39606" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-34.png 1544w, https://lycos7560.com/wp-content/uploads/2025/02/image-34-300x150.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-34-768x383.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-34-1536x766.png 1536w" sizes="(max-width: 1544px) 100vw, 1544px" /><figcaption class="wp-element-caption">Spawn Context (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1387" height="743" src="https://lycos7560.com/wp-content/uploads/2025/02/image-35.png" alt="" class="wp-image-39608" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-35.png 1387w, https://lycos7560.com/wp-content/uploads/2025/02/image-35-300x161.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-35-768x411.png 768w" sizes="(max-width: 1387px) 100vw, 1387px" /><figcaption class="wp-element-caption">Spawn Context (3)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">3. <strong>Capacity Count</strong></h2>



<p>Capacity Count는 시스템의 <strong>파티클 메모리 할당(Memory allocation)</strong>에 사용됩니다. </p>



<p>이 값을 증가시키면 할당되는 메모리 양도 증가합니다.</p>



<p>이 용량은 <strong>최대 활성 입자 수(Max active particles)</strong> 로 볼 수 있습니다.</p>



<p>최대 살아있는 파티클 수에 최대한 가깝게 이 값을 설정하는 것이 좋은 방법입니다.</p>



<p>이 VFX는 <strong>Capacity가 무엇인지</strong>, 그리고 <strong>VFX Control을 사용하여 Capacity를 설정하는 방법</strong>을 설명합니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<p>• <strong>Capacity</strong><br>• <strong>Memory allocation</strong><br>• <strong>VFX Control</strong></p>



<figure class="wp-block-video"><video height="912" style="aspect-ratio: 1632 / 912;" width="1632" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_05_30_00_46.mp4"></video><figcaption class="wp-element-caption">Capacity Count Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1348" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-31.jpg" alt="" class="wp-image-39597" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-31.jpg 1348w, https://lycos7560.com/wp-content/uploads/2025/02/image-31-211x300.jpg 211w, https://lycos7560.com/wp-content/uploads/2025/02/image-31-768x1094.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-31-1078x1536.jpg 1078w" sizes="(max-width: 1348px) 100vw, 1348px" /><figcaption class="wp-element-caption">Capacity Count Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1359" height="1012" src="https://lycos7560.com/wp-content/uploads/2025/02/image-31.png" alt="" class="wp-image-39600" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-31.png 1359w, https://lycos7560.com/wp-content/uploads/2025/02/image-31-300x223.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-31-768x572.png 768w" sizes="(max-width: 1359px) 100vw, 1359px" /><figcaption class="wp-element-caption">Capacity Count (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1549" height="899" src="https://lycos7560.com/wp-content/uploads/2025/02/image-32.png" alt="" class="wp-image-39601" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-32.png 1549w, https://lycos7560.com/wp-content/uploads/2025/02/image-32-300x174.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-32-768x446.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-32-1536x891.png 1536w" sizes="(max-width: 1549px) 100vw, 1549px" /><figcaption class="wp-element-caption">Capacity Count (2)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">4. Multiple Outputs</h2>



<ul class="wp-block-list">
<li><strong>출력(Context)에서 파티클을 렌더링하는 방식</strong>을 정의.</li>



<li>하나의 파티클 시스템에서 <strong>여러 개의 출력(Renderer)을 추가</strong>하여 다양한 표현 가능.</li>



<li>예: <strong>빌보드 쿼드, 메시, 포인트, 데칼 등</strong>을 활용해 입자를 여러 방식으로 렌더링 가능.</li>
</ul>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong>Composition Mode (속성 조합 모드)</strong></li>



<li><strong>Output Context (출력 컨텍스트)</strong></li>
</ul>



<figure class="wp-block-video"><video height="1176" style="aspect-ratio: 2520 / 1176;" width="2520" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_08_00_48_775.mp4"></video><figcaption class="wp-element-caption">Multiple Outputs Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1322" height="2028" src="https://lycos7560.com/wp-content/uploads/2025/02/image-40.png" alt="" class="wp-image-39615" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-40.png 1322w, https://lycos7560.com/wp-content/uploads/2025/02/image-40-196x300.png 196w, https://lycos7560.com/wp-content/uploads/2025/02/image-40-768x1178.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-40-1001x1536.png 1001w" sizes="(max-width: 1322px) 100vw, 1322px" /><figcaption class="wp-element-caption">Multiple Outputs Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1484" height="969" src="https://lycos7560.com/wp-content/uploads/2025/02/image-41.png" alt="" class="wp-image-39617" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-41.png 1484w, https://lycos7560.com/wp-content/uploads/2025/02/image-41-300x196.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-41-768x501.png 768w" sizes="(max-width: 1484px) 100vw, 1484px" /><figcaption class="wp-element-caption">Multiple Outputs (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1275" height="1044" src="https://lycos7560.com/wp-content/uploads/2025/02/image-42.png" alt="" class="wp-image-39618" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-42.png 1275w, https://lycos7560.com/wp-content/uploads/2025/02/image-42-300x246.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-42-768x629.png 768w" sizes="(max-width: 1275px) 100vw, 1275px" /><figcaption class="wp-element-caption">Multiple Outputs (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="988" src="https://lycos7560.com/wp-content/uploads/2025/02/image-43.jpg" alt="" class="wp-image-39619" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-43.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-43-300x154.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-43-768x395.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-43-1536x790.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Multiple Outputs (3)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">5. Bounds</h2>



<ul class="wp-block-list">
<li>Bounds(바운딩 박스)는 VFX가 <strong>카메라의 프러스텀(FOV) 안에 있을 때만 렌더링</strong>되도록 함.</li>



<li>바운드는 <strong>수동(Manual), 기록(Recorded), 자동(Automatic)으로 설정 가능</strong>.</li>



<li>컬링(Culling)을 활용하여 <strong>불필요한 연산을 줄여 성능 최적화</strong> 가능.</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="268" height="254" src="https://lycos7560.com/wp-content/uploads/2025/02/image-43.png" alt="" class="wp-image-39621"/></figure>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong><strong>Bounds (바운드, 바운딩 박스 설정)</strong></strong></li>



<li><strong><strong>Culling (컬링, 최적화 기법)</strong></strong></li>
</ul>



<figure class="wp-block-video"><video height="932" style="aspect-ratio: 2336 / 932;" width="2336" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_20_23_53_961.mp4"></video><figcaption class="wp-element-caption">Bounds Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1404" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-44.jpg" alt="" class="wp-image-39623" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-44.jpg 1404w, https://lycos7560.com/wp-content/uploads/2025/02/image-44-219x300.jpg 219w, https://lycos7560.com/wp-content/uploads/2025/02/image-44-768x1050.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-44-1123x1536.jpg 1123w" sizes="(max-width: 1404px) 100vw, 1404px" /><figcaption class="wp-element-caption">Bounds Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1196" height="1046" src="https://lycos7560.com/wp-content/uploads/2025/02/image-44.png" alt="" class="wp-image-39624" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-44.png 1196w, https://lycos7560.com/wp-content/uploads/2025/02/image-44-300x262.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-44-768x672.png 768w" sizes="(max-width: 1196px) 100vw, 1196px" /><figcaption class="wp-element-caption">Bounds (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1397" height="1279" src="https://lycos7560.com/wp-content/uploads/2025/02/image-46.png" alt="" class="wp-image-39628" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-46.png 1397w, https://lycos7560.com/wp-content/uploads/2025/02/image-46-300x275.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-46-768x703.png 768w" sizes="(max-width: 1397px) 100vw, 1397px" /><figcaption class="wp-element-caption">Bounds (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1564" height="757" src="https://lycos7560.com/wp-content/uploads/2025/02/image-45.png" alt="" class="wp-image-39626" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-45.png 1564w, https://lycos7560.com/wp-content/uploads/2025/02/image-45-300x145.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-45-768x372.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-45-1536x743.png 1536w" sizes="(max-width: 1564px) 100vw, 1564px" /><figcaption class="wp-element-caption">Bounds (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1453" height="921" src="https://lycos7560.com/wp-content/uploads/2025/02/image-47.png" alt="" class="wp-image-39630" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-47.png 1453w, https://lycos7560.com/wp-content/uploads/2025/02/image-47-300x190.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-47-768x487.png 768w" sizes="(max-width: 1453px) 100vw, 1453px" /><figcaption class="wp-element-caption">Bounds (4)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">6. Orient Face Camera</h2>



<p>출력이 <strong>쿼드(Quad), 메시(Mesh), 스트립(Strip)</strong> 등으로 설정된 경우, 우리는 종종 파티클의 기하학적 형태(Geometry)가 어떻게 배치되는지 제어해야 합니다.</p>



<p>파티클이 <strong>카메라를 바라보아야 할까요?</strong> 파티클의 <strong>전방(Forward) 방향과 위쪽(Up) 방향은 무엇일까요?</strong></p>



<p><code>Orient</code> 블록을 사용하면 다양한 모드를 통해 <strong>파티클의 방향을 쉽게 제어</strong>할 수 있습니다.</p>



<p>해당 예제는 <strong>&#8220;Face Camera Position&#8221;</strong> 모드를 사용하여 <strong>입자가 항상 카메라의 위치를 바라보도록 설정</strong>하였습니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong><strong>Orient (정렬)</strong></strong></li>



<li><strong><strong>AxisX, AxisY, AxisZ (축 설정)</strong></strong></li>
</ul>



<figure class="wp-block-video"><video height="932" style="aspect-ratio: 2280 / 932;" width="2280" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_20_59_44_317.mp4"></video><figcaption class="wp-element-caption">Orient Face Camera Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1361" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-48.jpg" alt="" class="wp-image-39633" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-48.jpg 1361w, https://lycos7560.com/wp-content/uploads/2025/02/image-48-213x300.jpg 213w, https://lycos7560.com/wp-content/uploads/2025/02/image-48-768x1083.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-48-1089x1536.jpg 1089w" sizes="(max-width: 1361px) 100vw, 1361px" /><figcaption class="wp-element-caption"> Orient Face Camera Graph Entire &#8211; Eye Face Camera</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="882" height="1403" src="https://lycos7560.com/wp-content/uploads/2025/02/image-48.png" alt="" class="wp-image-39634" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-48.png 882w, https://lycos7560.com/wp-content/uploads/2025/02/image-48-189x300.png 189w, https://lycos7560.com/wp-content/uploads/2025/02/image-48-768x1222.png 768w" sizes="(max-width: 882px) 100vw, 882px" /><figcaption class="wp-element-caption"> Orient Face Camera Graph Entire &#8211; Body</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="896" src="https://lycos7560.com/wp-content/uploads/2025/02/image-49.jpg" alt="" class="wp-image-39635" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-49.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-49-300x140.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-49-768x358.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-49-1536x717.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption"> Orient Face Camera &#8211; Eye Face Camera (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1200" height="635" src="https://lycos7560.com/wp-content/uploads/2025/02/image-49.png" alt="" class="wp-image-39636" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-49.png 1200w, https://lycos7560.com/wp-content/uploads/2025/02/image-49-300x159.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-49-768x406.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption"> Orient Face Camera &#8211; Eye Face Camera (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1179" src="https://lycos7560.com/wp-content/uploads/2025/02/image-50.jpg" alt="" class="wp-image-39637" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-50.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-50-300x184.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-50-768x472.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-50-1536x943.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption"> Orient Face Camera &#8211; Eye Face Camera (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1298" height="937" src="https://lycos7560.com/wp-content/uploads/2025/02/image-50.png" alt="" class="wp-image-39638" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-50.png 1298w, https://lycos7560.com/wp-content/uploads/2025/02/image-50-300x217.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-50-768x554.png 768w" sizes="(max-width: 1298px) 100vw, 1298px" /><figcaption class="wp-element-caption">Orient Face Camera &#8211; Eye Face Camera (4)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1172" src="https://lycos7560.com/wp-content/uploads/2025/02/image-51.jpg" alt="" class="wp-image-39639" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-51.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-300x183.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-768x469.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-1536x938.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Orient Face Camera &#8211; Body</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">7. Orient Fixed Axis</h2>



<p>파티클의 <strong>출력(Quads, Meshes, Strips)</strong> 방식과 관계없이, 우리는 종종 파티클이 배치될 방향을 제어하고 싶습니다.</p>



<p>파티클가 <strong>카메라를 향해야 할까요?</strong></p>



<p>파티클의 <strong>전방(Forward) 방향과 상향(Up-Axis)은 무엇인가요?</strong></p>



<p>이때 <strong>Orient(정렬) 블록</strong>을 사용하면 쉽게 파티클의 방향을 설정할 수 있습니다.</p>



<p>이 예제에서는 <strong>&#8220;Fixed Axis(고정 축)&#8221; 모드</strong>를 사용하는 방법을 설명합니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong>Orient</strong></li>



<li><strong>AxisX AxisY AxisZ</strong></li>



<li><strong>Custom Attribute</strong></li>
</ul>



<figure class="wp-block-video"><video height="932" style="aspect-ratio: 2344 / 932;" width="2344" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_18_14_14_59_202.mp4"></video></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1307" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-51-1.jpg" alt="" class="wp-image-39643" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-51-1.jpg 1307w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-1-204x300.jpg 204w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-1-768x1128.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-1-1046x1536.jpg 1046w" sizes="(max-width: 1307px) 100vw, 1307px" /><figcaption class="wp-element-caption">Orient Fixed Axis Graph Entire &#8211; Feathers</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1254" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-51-2.jpg" alt="" class="wp-image-39644" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-51-2.jpg 1254w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-2-196x300.jpg 196w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-2-768x1176.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-2-1003x1536.jpg 1003w" sizes="(max-width: 1254px) 100vw, 1254px" /><figcaption class="wp-element-caption">Orient Fixed Axis Graph Entire &#8211; Eyes</figcaption></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="493" height="939" src="https://lycos7560.com/wp-content/uploads/2025/02/image-51.png" alt="" class="wp-image-39645" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-51.png 493w, https://lycos7560.com/wp-content/uploads/2025/02/image-51-158x300.png 158w" sizes="(max-width: 493px) 100vw, 493px" /><figcaption class="wp-element-caption">Orient Fixed Axis Graph Entire &#8211; Body</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="557" height="1023" src="https://lycos7560.com/wp-content/uploads/2025/02/image-52.png" alt="" class="wp-image-39646" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-52.png 557w, https://lycos7560.com/wp-content/uploads/2025/02/image-52-163x300.png 163w" sizes="(max-width: 557px) 100vw, 557px" /></figure>
</div>
</div>



<figure class="wp-block-image size-full"><img decoding="async" width="1765" height="1065" src="https://lycos7560.com/wp-content/uploads/2025/02/image-53.png" alt="" class="wp-image-39647" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-53.png 1765w, https://lycos7560.com/wp-content/uploads/2025/02/image-53-300x181.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-53-768x463.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-53-1536x927.png 1536w" sizes="(max-width: 1765px) 100vw, 1765px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Feathers (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1888" height="1060" src="https://lycos7560.com/wp-content/uploads/2025/02/image-54.png" alt="" class="wp-image-39649" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-54.png 1888w, https://lycos7560.com/wp-content/uploads/2025/02/image-54-300x168.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-54-768x431.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-54-1536x862.png 1536w" sizes="(max-width: 1888px) 100vw, 1888px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Feathers (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1892" height="952" src="https://lycos7560.com/wp-content/uploads/2025/02/image-55.png" alt="" class="wp-image-39652" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-55.png 1892w, https://lycos7560.com/wp-content/uploads/2025/02/image-55-300x151.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-55-768x386.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-55-1536x773.png 1536w" sizes="(max-width: 1892px) 100vw, 1892px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Feathers (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1552" height="814" src="https://lycos7560.com/wp-content/uploads/2025/02/image-56.png" alt="" class="wp-image-39653" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-56.png 1552w, https://lycos7560.com/wp-content/uploads/2025/02/image-56-300x157.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-56-768x403.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-56-1536x806.png 1536w" sizes="(max-width: 1552px) 100vw, 1552px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Eyes (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1640" height="493" src="https://lycos7560.com/wp-content/uploads/2025/02/image-57.png" alt="" class="wp-image-39654" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-57.png 1640w, https://lycos7560.com/wp-content/uploads/2025/02/image-57-300x90.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-57-768x231.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-57-1536x462.png 1536w" sizes="(max-width: 1640px) 100vw, 1640px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Eyes (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1749" height="930" src="https://lycos7560.com/wp-content/uploads/2025/02/image-58.png" alt="" class="wp-image-39655" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-58.png 1749w, https://lycos7560.com/wp-content/uploads/2025/02/image-58-300x160.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-58-768x408.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-58-1536x817.png 1536w" sizes="(max-width: 1749px) 100vw, 1749px" /><figcaption class="wp-element-caption">Orient Fixed Axis &#8211; Eyes (3)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">8. Orient Advanced</h2>



<p><strong>파티클의 출력(Quads, Meshes, Strips) 방식과 관계없이</strong>, 우리는 파티클의 <strong>지오메트리 방향을 제어</strong>하고 싶을 때가 많습니다.</p>



<p><strong>파티클이 카메라를 향해야 할까요?</strong></p>



<p><strong>파티클의 전방(Forward) 방향과 상향(Up-Axis)은 무엇인가요?</strong></p>



<p><strong>Orient(정렬) 블록</strong>을 사용하면 쉽게 파티클의 방향을 설정할 수 있으며, 다양한 모드를 제공합니다.</p>



<p>이번에는 <strong>&#8220;Advanced Mode(고급 모드)&#8221;</strong> 를 사용하는 방법을 설명합니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong>Orient</strong></li>



<li><strong>AxisX AxisY AxisZ</strong></li>
</ul>



<figure class="wp-block-video"><video height="1164" style="aspect-ratio: 2344 / 1164;" width="2344" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_18_15_53_46_971.mp4"></video></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1689" height="1870" src="https://lycos7560.com/wp-content/uploads/2025/02/image-59.jpg" alt="" class="wp-image-39659" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-59.jpg 1689w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-271x300.jpg 271w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-768x850.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-1387x1536.jpg 1387w" sizes="(max-width: 1689px) 100vw, 1689px" /><figcaption class="wp-element-caption">Orient Advanced Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1886" height="1017" src="https://lycos7560.com/wp-content/uploads/2025/02/image-59.png" alt="" class="wp-image-39661" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-59.png 1886w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-300x162.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-768x414.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-59-1536x828.png 1536w" sizes="(max-width: 1886px) 100vw, 1886px" /><figcaption class="wp-element-caption">Orient Advanced (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1376" height="731" src="https://lycos7560.com/wp-content/uploads/2025/02/image-60.png" alt="" class="wp-image-39662" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-60.png 1376w, https://lycos7560.com/wp-content/uploads/2025/02/image-60-300x159.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-60-768x408.png 768w" sizes="(max-width: 1376px) 100vw, 1376px" /><figcaption class="wp-element-caption">Orient Advanced (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1898" height="795" src="https://lycos7560.com/wp-content/uploads/2025/02/image-61.png" alt="" class="wp-image-39663" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-61.png 1898w, https://lycos7560.com/wp-content/uploads/2025/02/image-61-300x126.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-61-768x322.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-61-1536x643.png 1536w" sizes="(max-width: 1898px) 100vw, 1898px" /><figcaption class="wp-element-caption">Orient Advanced (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1012" height="531" src="https://lycos7560.com/wp-content/uploads/2025/02/image-62.png" alt="" class="wp-image-39664" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-62.png 1012w, https://lycos7560.com/wp-content/uploads/2025/02/image-62-300x157.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-62-768x403.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /><figcaption class="wp-element-caption">Orient Advanced (4)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1316" height="873" src="https://lycos7560.com/wp-content/uploads/2025/02/image-63.png" alt="" class="wp-image-39665" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-63.png 1316w, https://lycos7560.com/wp-content/uploads/2025/02/image-63-300x199.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-63-768x509.png 768w" sizes="(max-width: 1316px) 100vw, 1316px" /><figcaption class="wp-element-caption">Orient Advanced (5)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">9. Rotation &amp; Angle</h2>



<p>VFX Graph에서 파티클의 회전은 Angle 속성을 조정하여 컨트롤할 수 있습니다.</p>



<p>하지만 보다 현실적인 회전 효과를 구현하려면 Angular Velocity(각속도)를 활용하는 것이 좋습니다.</p>



<p>이 속성은 일반적을 <strong>Initialize Context</strong>에서 설정되며, <strong>Update Context</strong>에서 이를 통합하여 회전을 업데이트합니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong>Rotation</strong></li>



<li><strong>Angle attribute</strong></li>



<li><strong>Pivot attribute</strong></li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="964" style="aspect-ratio: 2480 / 964;" width="2480" controls src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_20_12_59_44_165.mp4"></video><figcaption class="wp-element-caption">Rotation &amp; Angle Video</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1728" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-64.jpg" alt="" class="wp-image-39674" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-64.jpg 1728w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-270x300.jpg 270w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-768x853.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-1382x1536.jpg 1382w" sizes="(max-width: 1728px) 100vw, 1728px" /><figcaption class="wp-element-caption">Rotation &amp; Angle Graph Entire</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1673" height="1235" src="https://lycos7560.com/wp-content/uploads/2025/02/image-64.png" alt="" class="wp-image-39675" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-64.png 1673w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-300x221.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-768x567.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-64-1536x1134.png 1536w" sizes="(max-width: 1673px) 100vw, 1673px" /><figcaption class="wp-element-caption">Rotation &amp; Angle (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1448" height="1232" src="https://lycos7560.com/wp-content/uploads/2025/02/image-65.png" alt="" class="wp-image-39676" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-65.png 1448w, https://lycos7560.com/wp-content/uploads/2025/02/image-65-300x255.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-65-768x653.png 768w" sizes="(max-width: 1448px) 100vw, 1448px" /><figcaption class="wp-element-caption">Rotation &amp; Angle (2)</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">10. Falling Coins</h2>



<p>해당 내용은 <strong>Unity VFX Graph에서 파티클의 회전 및 물리적 움직임</strong>을 설정하는 방법을 설명합니다.</p>



<p>파티클의 <strong>각속도(Angular Velocity)</strong>, <strong>충돌</strong>, <strong>위치 변화(Position Offset)</strong>, <strong>랜덤한 회전 효과</strong> 등을 적용하는 방식에 대해 다룹니다.</p>



<h3 class="wp-block-heading"><strong>Covered Aspects:</strong></h3>



<ul class="wp-block-list">
<li><strong>Angular Velocity</strong></li>



<li><strong>Angle</strong></li>



<li><strong>Update Rotation</strong></li>
</ul>



<figure class="wp-block-video"><video height="1100" style="aspect-ratio: 1944 / 1100;" width="1944" controls muted src="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_20_15_03_36_8-1.mp4"></video></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1249" height="1920" src="https://lycos7560.com/wp-content/uploads/2025/02/image-66.jpg" alt="" class="wp-image-39680" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-66.jpg 1249w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-195x300.jpg 195w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-768x1181.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-999x1536.jpg 999w" sizes="(max-width: 1249px) 100vw, 1249px" /><figcaption class="wp-element-caption">Falling Coins Graph Entire (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1015" height="2051" src="https://lycos7560.com/wp-content/uploads/2025/02/image-66.png" alt="" class="wp-image-39681" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-66.png 1015w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-148x300.png 148w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-768x1552.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-760x1536.png 760w, https://lycos7560.com/wp-content/uploads/2025/02/image-66-1014x2048.png 1014w" sizes="(max-width: 1015px) 100vw, 1015px" /><figcaption class="wp-element-caption">Falling Coins Graph Entire (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1536" src="https://lycos7560.com/wp-content/uploads/2025/02/image-67.jpg" alt="" class="wp-image-39682" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-67.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-67-300x240.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-67-768x614.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-67-1536x1229.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Falling Coins Graph Entire (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="481" height="1223" src="https://lycos7560.com/wp-content/uploads/2025/02/image-67.png" alt="" class="wp-image-39683" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-67.png 481w, https://lycos7560.com/wp-content/uploads/2025/02/image-67-118x300.png 118w" sizes="(max-width: 481px) 100vw, 481px" /><figcaption class="wp-element-caption">Falling Coins Graph Entire (4)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1245" src="https://lycos7560.com/wp-content/uploads/2025/02/image-68.jpg" alt="" class="wp-image-39684" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-68.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-300x195.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-768x498.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-1536x996.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Falling Coins (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1174" src="https://lycos7560.com/wp-content/uploads/2025/02/image-68-1.jpg" alt="" class="wp-image-39685" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-68-1.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-1-300x183.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-1-768x470.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-1-1536x939.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Falling Coins (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1055" height="1083" src="https://lycos7560.com/wp-content/uploads/2025/02/image-68.png" alt="" class="wp-image-39687" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-68.png 1055w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-292x300.png 292w, https://lycos7560.com/wp-content/uploads/2025/02/image-68-768x788.png 768w" sizes="(max-width: 1055px) 100vw, 1055px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Falling Coins (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1406" height="1026" src="https://lycos7560.com/wp-content/uploads/2025/02/image-70.png" alt="" class="wp-image-39690" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-70.png 1406w, https://lycos7560.com/wp-content/uploads/2025/02/image-70-300x219.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-70-768x560.png 768w" sizes="(max-width: 1406px) 100vw, 1406px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Sliding Coins (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="789" src="https://lycos7560.com/wp-content/uploads/2025/02/image-69.png" alt="" class="wp-image-39691" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-69.png 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-69-300x123.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-69-768x316.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-69-1536x631.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Sliding Coins (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1013" height="952" src="https://lycos7560.com/wp-content/uploads/2025/02/image-71.png" alt="" class="wp-image-39692" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-71.png 1013w, https://lycos7560.com/wp-content/uploads/2025/02/image-71-300x282.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-71-768x722.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Sliding Coins (3)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="2231" height="1145" src="https://lycos7560.com/wp-content/uploads/2025/02/image-72.png" alt="" class="wp-image-39693" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-72.png 2231w, https://lycos7560.com/wp-content/uploads/2025/02/image-72-300x154.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-72-768x394.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-72-1536x788.png 1536w, https://lycos7560.com/wp-content/uploads/2025/02/image-72-2048x1051.png 2048w" sizes="(max-width: 2231px) 100vw, 2231px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Coin&#8217;s Pile (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1640" height="1297" src="https://lycos7560.com/wp-content/uploads/2025/02/image-73.png" alt="" class="wp-image-39694" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-73.png 1640w, https://lycos7560.com/wp-content/uploads/2025/02/image-73-300x237.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-73-768x607.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-73-1536x1215.png 1536w" sizes="(max-width: 1640px) 100vw, 1640px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Coin&#8217;s Pile (2)</figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1920" height="1007" src="https://lycos7560.com/wp-content/uploads/2025/02/image-74.jpg" alt="" class="wp-image-39695" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-74.jpg 1920w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-300x157.jpg 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-768x403.jpg 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-74-1536x806.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><figcaption class="wp-element-caption">Falling Coins &#8211; Coin&#8217;s Pile (3)</figcaption></figure>



<p></p>
<p>The post <a href="https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/">URP VFX Learning Templates (1)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/urp-vfx-learning-templates-1/39596/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_16_18_09_41_580.mp4" length="3880093" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_06_12_55_147.mp4" length="3623393" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_05_30_00_46.mp4" length="6376492" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_08_00_48_775.mp4" length="8397352" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_20_23_53_961.mp4" length="13346588" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_17_20_59_44_317.mp4" length="61298828" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_18_14_14_59_202.mp4" length="13314322" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_18_15_53_46_971.mp4" length="30019818" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_20_12_59_44_165.mp4" length="15609420" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/2025/02/녹화_2025_02_20_15_03_36_8-1.mp4" length="14246069" type="video/mp4" />

			</item>
		<item>
		<title>Unity URP Input.hlsl</title>
		<link>https://lycos7560.com/unity/unity-urp-input-hlsl/38299/</link>
					<comments>https://lycos7560.com/unity/unity-urp-input-hlsl/38299/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sat, 07 Sep 2024 23:23:29 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[Core.hlsl]]></category>
		<category><![CDATA[HLSL Shader]]></category>
		<category><![CDATA[Input.hlsl]]></category>
		<category><![CDATA[normalWS]]></category>
		<category><![CDATA[Packages/com.unity.render-pipelines.universal]]></category>
		<category><![CDATA[positionCS]]></category>
		<category><![CDATA[positionWS]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[ShaderLab]]></category>
		<category><![CDATA[ShaderLibrary]]></category>
		<category><![CDATA[shadowMask]]></category>
		<category><![CDATA[tangentToWorld]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=38299</guid>

					<description><![CDATA[<p>Universal RP 17.0.3 include &#8220;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl&#8221; 내부에 input이 포함됨 include &#8220;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl&#8221; Input.hlsl 1. 헤더 정의 및 보호구문 헤더 파일을 여러 번 포함하는 것을 방지 UNIVERSAL_INPUT_INCLUDED가 정의되지 않은 경우에만 코드가 실행되도록 합니다. 2. 패키지 및 설정 파일 포함 URP의 설정 및 구성을 정의하는 파일을 포함 이 파일에는 URP에서 사용하는 여러 가지 상수 값과 설정이 정의되어 있습니다. 3. [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/unity-urp-input-hlsl/38299/">Unity URP Input.hlsl</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1056" height="649" src="https://lycos7560.com/wp-content/uploads/2024/09/image-12.png" alt="" class="wp-image-38302" srcset="https://lycos7560.com/wp-content/uploads/2024/09/image-12.png 1056w, https://lycos7560.com/wp-content/uploads/2024/09/image-12-300x184.png 300w, https://lycos7560.com/wp-content/uploads/2024/09/image-12-768x472.png 768w" sizes="(max-width: 1056px) 100vw, 1056px" /></figure>



<p>Universal RP 17.0.3</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p>include &#8220;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl&#8221; 내부에 input이 포함됨 <br><strong>include &#8220;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl&#8221; </strong></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Input.hlsl</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#ifndef UNIVERSAL_INPUT_INCLUDED
#define UNIVERSAL_INPUT_INCLUDED
// URP package specific shader input variables and defines.
// Unity Engine specific built-in shader input variables are defined in .universal/ShaderLibrary/UnityInput.hlsl

#include "Packages/com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs.hlsl"

#define MAX_VISIBLE_LIGHTS_UBO  32
#define MAX_VISIBLE_LIGHTS_SSBO 256

// Keep in sync with RenderingUtils.useStructuredBuffer
#define USE_STRUCTURED_BUFFER_FOR_LIGHT_DATA 0

#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderTypes.cs.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Deprecated.hlsl"

// Must match: UniversalRenderPipeline.maxVisibleAdditionalLights
#if defined(SHADER_API_MOBILE) &amp;&amp; defined(SHADER_API_GLES30)
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_LOW_END_MOBILE
// WebGPU's minimal limits are based on mobile rather than desktop, so it will need to assume mobile.
#elif defined(SHADER_API_MOBILE) || (defined(SHADER_API_GLCORE) &amp;&amp; !defined(SHADER_API_SWITCH)) || defined(SHADER_API_GLES3) || defined(SHADER_API_WEBGPU) // Workaround because SHADER_API_GLCORE is also defined when SHADER_API_SWITCH is
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_MOBILE
#else
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_DESKTOP
#endif

// Match with values in UniversalRenderPipeline.cs
#define MAX_ZBIN_VEC4S 1024
#if MAX_VISIBLE_LIGHTS &lt;= 16
    #define MAX_LIGHTS_PER_TILE 32
    #define MAX_TILE_VEC4S 1024
    #define MAX_REFLECTION_PROBES 16
#elif MAX_VISIBLE_LIGHTS &lt;= 32
    #define MAX_LIGHTS_PER_TILE 32
    #define MAX_TILE_VEC4S 1024
    #define MAX_REFLECTION_PROBES 32
#else
    #define MAX_LIGHTS_PER_TILE MAX_VISIBLE_LIGHTS
    #define MAX_TILE_VEC4S 4096
    #define MAX_REFLECTION_PROBES 64
#endif

struct InputData
{
    float3  positionWS;
    float4  positionCS;
    float3  normalWS;
    half3   viewDirectionWS;
    float4  shadowCoord;
    half    fogCoord;
    half3   vertexLighting;
    half3   bakedGI;
    float2  normalizedScreenSpaceUV;
    half4   shadowMask;
    half3x3 tangentToWorld;

    #if defined(DEBUG_DISPLAY)
    half2   dynamicLightmapUV;
    half2   staticLightmapUV;
    float3  vertexSH;

    half3 brdfDiffuse;
    half3 brdfSpecular;

    // Mipmap Streaming Debug
    float2 uv;
    uint mipCount;

    // texelSize :
    // x = 1 / width
    // y = 1 / height
    // z = width
    // w = height
    float4 texelSize;

    // mipInfo :
    // x = quality settings minStreamingMipLevel
    // y = original mip count for texture
    // z = desired on screen mip level
    // w = loaded mip level
    float4 mipInfo;

    // streamInfo :
    // x = streaming priority
    // y = time stamp of the latest texture upload
    // z = streaming status
    // w = 0
    float4 streamInfo;

    float3 originalColor;
    #endif
};

///////////////////////////////////////////////////////////////////////////////
//                      Constant Buffers                                     //
///////////////////////////////////////////////////////////////////////////////

half4 _GlossyEnvironmentColor;
half4 _SubtractiveShadowColor;

half4 _GlossyEnvironmentCubeMap_HDR;
TEXTURECUBE(_GlossyEnvironmentCubeMap);
SAMPLER(sampler_GlossyEnvironmentCubeMap);

#define _InvCameraViewProj unity_MatrixInvVP
float4 _ScaledScreenParams;

// x = Mip Bias
// y = 2.0 ^ [Mip Bias]
float2 _GlobalMipBias;

// 1.0 if it's possible for AlphaToMask to be enabled for this draw and 0.0 otherwise
float _AlphaToMaskAvailable;

float4 _MainLightPosition;
// In Forward+, .a stores whether the main light is using subtractive mixed mode.
half4 _MainLightColor;
half4 _MainLightOcclusionProbes;
uint _MainLightLayerMask;

// x: SSAO Enabled/Disabled (Needed for situations when OFF keyword is stripped out but feature disabled in runtime)
// yz are currently unused
// w: directLightStrength
half4 _AmbientOcclusionParam;

half4 _AdditionalLightsCount;

uint _RenderingLayerMaxInt;
float _RenderingLayerRcpMaxInt;

// Screen coord override.
float4 _ScreenCoordScaleBias;
float4 _ScreenSizeOverride;

uint _EnableProbeVolumes;

#if USE_FORWARD_PLUS
float4 _FPParams0;
float4 _FPParams1;
float4 _FPParams2;

#define URP_FP_ZBIN_SCALE (_FPParams0.x)
#define URP_FP_ZBIN_OFFSET (_FPParams0.y)
#define URP_FP_PROBES_BEGIN ((uint)_FPParams0.z)
// Directional lights would be in all clusters, so they don't go into the cluster structure.
// Instead, they are stored first in the light buffer.
#define URP_FP_DIRECTIONAL_LIGHTS_COUNT ((uint)_FPParams0.w)

// Scale from screen-space UV [0, 1] to tile coordinates [0, tile resolution].
#define URP_FP_TILE_SCALE ((float2)_FPParams1.xy)
#define URP_FP_TILE_COUNT_X ((uint)_FPParams1.z)
#define URP_FP_WORDS_PER_TILE ((uint)_FPParams1.w)

#define URP_FP_ZBIN_COUNT ((uint)_FPParams2.x)
#define URP_FP_TILE_COUNT ((uint)_FPParams2.y)

#endif

#if USE_STRUCTURED_BUFFER_FOR_LIGHT_DATA
StructuredBuffer&lt;LightData> _AdditionalLightsBuffer;
StructuredBuffer&lt;int> _AdditionalLightsIndices;
#else
// GLES3 causes a performance regression in some devices when using CBUFFER.
#ifndef SHADER_API_GLES3
CBUFFER_START(AdditionalLights)
#endif
float4 _AdditionalLightsPosition[MAX_VISIBLE_LIGHTS];
// In Forward+, .a stores whether the light is using subtractive mixed mode.
half4 _AdditionalLightsColor[MAX_VISIBLE_LIGHTS];
half4 _AdditionalLightsAttenuation[MAX_VISIBLE_LIGHTS];
half4 _AdditionalLightsSpotDir[MAX_VISIBLE_LIGHTS];
half4 _AdditionalLightsOcclusionProbes[MAX_VISIBLE_LIGHTS];
float _AdditionalLightsLayerMasks[MAX_VISIBLE_LIGHTS]; // we want uint[] but Unity api does not support it.
#ifndef SHADER_API_GLES3
CBUFFER_END
#endif
#endif

#if USE_FORWARD_PLUS

CBUFFER_START(urp_ZBinBuffer)
        float4 urp_ZBins[MAX_ZBIN_VEC4S];
CBUFFER_END
CBUFFER_START(urp_TileBuffer)
        float4 urp_Tiles[MAX_TILE_VEC4S];
CBUFFER_END

TEXTURE2D(urp_ReflProbes_Atlas);
float urp_ReflProbes_Count;

// 2023.3 Deprecated. This is for backwards compatibility. Remove in the future.
#define samplerurp_ReflProbes_Atlas sampler_LinearClamp

#ifndef SHADER_API_GLES3
CBUFFER_START(urp_ReflectionProbeBuffer)
#endif
float4 urp_ReflProbes_BoxMax[MAX_REFLECTION_PROBES];          // w contains the blend distance
float4 urp_ReflProbes_BoxMin[MAX_REFLECTION_PROBES];          // w contains the importance
float4 urp_ReflProbes_ProbePosition[MAX_REFLECTION_PROBES];   // w is positive for box projection, |w| is max mip level
float4 urp_ReflProbes_MipScaleOffset[MAX_REFLECTION_PROBES * 7];
#ifndef SHADER_API_GLES3
CBUFFER_END
#endif

#endif

#define UNITY_MATRIX_M     unity_ObjectToWorld
#define UNITY_MATRIX_I_M   unity_WorldToObject
#define UNITY_MATRIX_V     unity_MatrixV
#define UNITY_MATRIX_I_V   unity_MatrixInvV
#define UNITY_MATRIX_P     OptimizeProjectionMatrix(glstate_matrix_projection)
#define UNITY_MATRIX_I_P   unity_MatrixInvP
#define UNITY_MATRIX_VP    unity_MatrixVP
#define UNITY_MATRIX_I_VP  unity_MatrixInvVP
#define UNITY_MATRIX_MV    mul(UNITY_MATRIX_V, UNITY_MATRIX_M)
#define UNITY_MATRIX_T_MV  transpose(UNITY_MATRIX_MV)
#define UNITY_MATRIX_IT_MV transpose(mul(UNITY_MATRIX_I_M, UNITY_MATRIX_I_V))
#define UNITY_MATRIX_MVP   mul(UNITY_MATRIX_VP, UNITY_MATRIX_M)
#define UNITY_PREV_MATRIX_M   unity_MatrixPreviousM
#define UNITY_PREV_MATRIX_I_M unity_MatrixPreviousMI

// Note: #include order is important here.
// UnityInput.hlsl must be included before UnityInstancing.hlsl, so constant buffer
// declarations don't fail because of instancing macros.
// UniversalDOTSInstancing.hlsl must be included after UnityInstancing.hlsl
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UniversalDOTSInstancing.hlsl"

// VFX may also redefine UNITY_MATRIX_M / UNITY_MATRIX_I_M as static per-particle global matrices.
#ifdef HAVE_VFX_MODIFICATION
#include "Packages/com.unity.visualeffectgraph/Shaders/VFXMatricesOverride.hlsl"
#endif

#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl"

#endif
</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">1. 헤더 정의 및 보호구문</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#ifndef UNIVERSAL_INPUT_INCLUDED
#define UNIVERSAL_INPUT_INCLUDED</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>헤더 파일을 여러 번 포함하는 것을 방지</p>



<p><code>UNIVERSAL_INPUT_INCLUDED</code>가 정의되지 않은 경우에만 코드가 실행되도록 합니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">2. 패키지 및 설정 파일 포함</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include "Packages/com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs.hlsl"</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>URP의 설정 및 구성을 정의하는 파일을 포함</p>



<p>이 파일에는 URP에서 사용하는 여러 가지 상수 값과 설정이 정의되어 있습니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">3. 최대 조명 및 타일링 설정</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#define MAX_VISIBLE_LIGHTS_UBO  32
#define MAX_VISIBLE_LIGHTS_SSBO 256</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>UBO(Uniform Buffer Object)와 SSBO(Shader Storage Buffer Object)에 사용할 수 있는 최대 조명 개수를 정의</p>



<p>MAX_VISIBLE_LIGHTS_UBO: UBO 방식으로 사용할 수 있는 최대 조명 수 (32).</p>



<p>MAX_VISIBLE_LIGHTS_SSBO: SSBO 방식으로 사용할 수 있는 최대 조명 수 (256).</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">4. 조명 데이터 저장 방법 결정</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#define USE_STRUCTURED_BUFFER_FOR_LIGHT_DATA 0</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>0으로 설정되어 있으며, 이는 <strong>Structured Buffer</strong>가 아닌 <strong>Constant Buffer</strong>를 사용하여 조명 데이터를 저장함을 의미합니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">5. 플랫폼에 따른 최대 조명 설정</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Must match: UniversalRenderPipeline.maxVisibleAdditionalLights
#if defined(SHADER_API_MOBILE) &amp;&amp; defined(SHADER_API_GLES30)
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_LOW_END_MOBILE
// WebGPU's minimal limits are based on mobile rather than desktop, so it will need to assume mobile.
#elif defined(SHADER_API_MOBILE) || (defined(SHADER_API_GLCORE) &amp;&amp; !defined(SHADER_API_SWITCH)) || defined(SHADER_API_GLES3) || defined(SHADER_API_WEBGPU) // Workaround because SHADER_API_GLCORE is also defined when SHADER_API_SWITCH is
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_MOBILE
#else
    #define MAX_VISIBLE_LIGHTS MAX_VISIBLE_LIGHT_COUNT_DESKTOP
#endif</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>플랫폼에 따라</strong> 최대 조명 수를 다르게 설정합니다. </p>



<p>모바일 플랫폼에서는 자원을 덜 사용하도록 제한을 두며, 데스크탑에서는 더 많은 조명을 허용합니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">6. 입력 데이터 구조체 (InputData)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">struct InputData
{
    float3  positionWS;
    float4  positionCS;
    float3  normalWS;
    half3   viewDirectionWS;
    float4  shadowCoord;
    half    fogCoord;
    half3   vertexLighting;
    half3   bakedGI;
    float2  normalizedScreenSpaceUV;
    half4   shadowMask;
    half3x3 tangentToWorld;
};</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>InputData</strong> 구조체는 Shader에서 필요한 여러 데이터를 모아둔 것입니다.</p>



<ul class="wp-block-list">
<li><code>positionWS</code>: <strong>월드 좌표계에서의 정점 위치</strong>.</li>



<li><code>positionCS</code>: <strong>클립 좌표계에서의 정점 위치</strong>.</li>



<li><code>normalWS</code>: <strong>월드 좌표계에서의 법선 벡터</strong>.</li>



<li><code>viewDirectionWS</code>: <strong>월드 좌표계에서의 시선 방향</strong>.</li>



<li><code>shadowCoord</code>: <strong>그림자 좌표</strong>.</li>



<li><code>vertexLighting</code>: <strong>정점 기반의 조명</strong>.</li>



<li><code>bakedGI</code>: <strong>프리컴퓨티드 전역 조명</strong>.</li>



<li><code>normalizedScreenSpaceUV</code>: <strong>화면 공간 UV 좌표</strong>.</li>



<li><code>shadowMask</code>: <strong>그림자 마스크</strong>.</li>



<li><code>tangentToWorld</code>: <strong>탄젠트 공간에서 월드 공간으로 변환하는 행렬</strong>.</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">7. 그 외 입력 구조체 (DEBUG_DISPLAY 포함)</h4>



<p><strong>DEBUG_DISPLAY</strong>가 정의되어 있는 경우 추가적인 디버그용 데이터를 받습니다.</p>



<ul class="wp-block-list">
<li>동적, 정적 라이트맵 UV 좌표, 텍스처 스트리밍 관련 정보 등을 포함합니다.</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">8. 상수 버퍼 및 조명 데이터</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">half4 _GlossyEnvironmentColor;
half4 _SubtractiveShadowColor;
half4 _GlossyEnvironmentCubeMap_HDR;
TEXTURECUBE(_GlossyEnvironmentCubeMap);
SAMPLER(sampler_GlossyEnvironmentCubeMap);</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>환경 반사, 그림자 색상, 큐브맵 반사 등과 관련된 상수 값들이 정의됩니다.</p>



<p><strong>텍스처</strong>와 <strong>샘플러</strong>도 정의됩니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">9. 주 조명 및 추가 조명 데이터</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">float4 _MainLightPosition;
half4 _MainLightColor;
float4 _AdditionalLightsPosition[MAX_VISIBLE_LIGHTS];
half4 _AdditionalLightsColor[MAX_VISIBLE_LIGHTS];</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>주 조명</strong>과 <strong>추가 조명</strong>에 대한 데이터를 저장합니다.</p>



<p>각 조명에 대해 위치, 색상, 감쇠(Attenuation), 스포트라이트 방향 등이 포함됩니다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="751" height="700" src="https://lycos7560.com/wp-content/uploads/2024/09/image-14.png" alt="" class="wp-image-38309" srcset="https://lycos7560.com/wp-content/uploads/2024/09/image-14.png 751w, https://lycos7560.com/wp-content/uploads/2024/09/image-14-300x280.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">10. 타일 기반 및 반사 프로브 처리 (Forward Plus)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">CBUFFER_START(urp_TileBuffer)
    float4 urp_Tiles[MAX_TILE_VEC4S];
CBUFFER_END</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>타일 기반 조명 처리</strong> 및 <strong>반사 프로브</strong>에 대한 데이터를 정의합니다. </p>



<p>이는 Forward Plus 렌더링에서 사용됩니다.타일당 조명 수, 타일 크기, 반사 프로브의 위치 등을 정의합니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">11. 매트릭스 정의</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#define UNITY_MATRIX_M     unity_ObjectToWorld
#define UNITY_MATRIX_I_M   unity_WorldToObject</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>객체에서 월드로 변환하는 매트릭스</strong>와 <strong>반대로 월드에서 객체로 변환하는 매트릭스</strong> 등 다양한 매트릭스가 정의됩니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">12. 기타 패키지 포함</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Unity의 인스턴싱 및 DOTS 관련 쉐이더 라이브러리를 포함하여 <strong>인스턴싱 처리</strong> 및 <strong>VFX 처리</strong> 관련 기능을 지원합니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p>이 코드는 <strong>Universal Render Pipeline</strong>에서 사용하는 다양한 <strong>조명</strong>, <strong>타일 기반 조명 처리</strong>, <strong>반사 처리</strong> 및 <strong>그림자 처리</strong>를 위한 입력 데이터를 처리하는 방법을 정의합니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity-urp-input-hlsl/38299/">Unity URP Input.hlsl</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity-urp-input-hlsl/38299/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Getting started with Shader Graph &#8211; Master Stack / Sticky Notes</title>
		<link>https://lycos7560.com/unity/getting-started-with-shader-graph-master-stack-sticky-notes/38028/</link>
					<comments>https://lycos7560.com/unity/getting-started-with-shader-graph-master-stack-sticky-notes/38028/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 19 Mar 2024 16:07:33 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[Description]]></category>
		<category><![CDATA[Fragment]]></category>
		<category><![CDATA[Getting started with Shader Graph]]></category>
		<category><![CDATA[Graph]]></category>
		<category><![CDATA[Manual]]></category>
		<category><![CDATA[Master]]></category>
		<category><![CDATA[Master Stack]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Shader Graph]]></category>
		<category><![CDATA[Sticky Notes]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[URP]]></category>
		<category><![CDATA[Vertex]]></category>
		<category><![CDATA[기초]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=38028</guid>

					<description><![CDATA[<p>https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Master-Stack.html Master Stack Description Master Stack은 셰이더의 최종 표면 모습을 정의하는 Shader Graph의 끝점입니다.The Master Stack is the end point of a Shader Graph that defines the final surface appearance of a shader. Shader Graph에는 항상 하나의 마스터 스택만 포함되어야 합니다.Your Shader Graph should always contain only one Master Stack. 마스터 스택의 내용은 선택한 Graph [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/getting-started-with-shader-graph-master-stack-sticky-notes/38028/">Getting started with Shader Graph &#8211; Master Stack / Sticky Notes</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Master-Stack.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Master-Stack.html</a></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-12711d18      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							Getting started with Shader Graph						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#master-stack" class="uagb-toc-link__trigger">Master Stack</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#contexts" class="uagb-toc-link__trigger">Contexts</a></li></ul></li><li class="uagb-toc__list"><a href="#sticky-notes" class="uagb-toc-link__trigger">Sticky Notes</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#using-sticky-notes" class="uagb-toc-link__trigger">Using Sticky Notes</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#editing-text" class="uagb-toc-link__trigger">Editing text</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#moving-and-resizing" class="uagb-toc-link__trigger">Moving and resizing</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#duplicating" class="uagb-toc-link__trigger">Duplicating</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#context-menu" class="uagb-toc-link__trigger">Context menu</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-uagb-advanced-heading uagb-block-5260c951"><h2 class="uagb-heading-text">Master Stack</h2></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60)"/>



<p class="has-medium-font-size"><strong>Description</strong></p>



<p>Master Stack은 셰이더의 최종 표면 모습을 정의하는 Shader Graph의 끝점입니다.<br>The Master Stack is the end point of a Shader Graph that defines the final surface appearance of a shader. </p>



<p>Shader Graph에는 항상 하나의 마스터 스택만 포함되어야 합니다.<br>Your Shader Graph should always contain only one Master Stack.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b97d561&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b97d561" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="502" height="780" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-39.png" alt="" class="wp-image-38029" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-39.png 502w, https://lycos7560.com/wp-content/uploads/2024/03/image-39-193x300.png 193w" sizes="(max-width: 502px) 100vw, 502px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Master Stack</figcaption></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>마스터 스택의 내용은 선택한 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Graph-Settings-Tab.html" target="_blank" rel="noreferrer noopener">Graph Settings</a>에 따라 변경될 수 있습니다.<br>The content of the Master Stack might change depending on the <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Graph-Settings-Tab.html" target="_blank" rel="noreferrer noopener">Graph Settings</a> you select. </p>



<p>마스터 스택은 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Block-Node.html" target="_blank" rel="noreferrer noopener">Block nodes</a>를 포함하는 컨텍스트로 구성됩니다.<br>The Master Stack is made up of Contexts, which contain <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Block-Node.html" target="_blank" rel="noreferrer noopener">Block nodes</a>.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b97da93&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b97da93" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="760" height="650" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-40.png" alt="" class="wp-image-38030" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-40.png 760w, https://lycos7560.com/wp-content/uploads/2024/03/image-40-300x257.png 300w" sizes="(max-width: 760px) 100vw, 760px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Lit</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b97de2c&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b97de2c" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="769" height="567" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-41.png" alt="" class="wp-image-38031" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-41.png 769w, https://lycos7560.com/wp-content/uploads/2024/03/image-41-300x221.png 300w" sizes="(max-width: 769px) 100vw, 769px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Unlit</figcaption></figure>
</div>
</div>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-uagb-advanced-heading uagb-block-0d77379d"><h3 class="uagb-heading-text">Contexts</h3></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b97e2ab&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b97e2ab" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="382" height="436" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-42.png" alt="" class="wp-image-38032" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-42.png 382w, https://lycos7560.com/wp-content/uploads/2024/03/image-42-263x300.png 263w" sizes="(max-width: 382px) 100vw, 382px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>마스터 스택에는 두 개의 컨텍스트인<strong> Vertex</strong>와 <strong>Fragment</strong>가 포함되어 있습니다.<br>The Master Stack contains two Contexts: <strong>Vertex</strong> and <strong>Fragment</strong>. </p>



<p>이들은 shader의 두 단계를 나타냅니다.<br>These represent the two stages of a shader.</p>



<p>Vertex Context의 Block에 연결하는 노드는 최종<strong> shader의  Vertex function의 일부가 됩니다.</strong><br>Nodes that you connect to Blocks in the Vertex Context become part of the final shader&#8217;s vertex function.</p>



<p>Fragment Context의 블록에 연결하는 Node는 최종<strong> shader의 Fragment(또는 픽셀) function의 일부</strong>가 됩니다.<br>Nodes that you connect to Blocks in the Fragment Context become part of the final shader&#8217;s fragment (or pixel) function. </p>



<p>두 컨텍스트에 모두 노드를 연결하면 해당 node가 <strong>Vertex function에서 한 번 실행되고 Fragment function에서 다시 한 번 실행</strong>됩니다.<br>If you connect any nodes to both Contexts, they are executed twice, once in the vertex function and then again in the fragment function.</p>



<p>컨텍스트를 잘라내거나 복사하거나 붙여넣을 수 없습니다.<br>You can&#8217;t cut, copy, or paste Contexts.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sticky-Notes.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sticky-Notes.html</a></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="sticky-notes">Sticky Notes</h2>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60)"/>



<p>Sticky Note는 그래프 보기에서 작성할 수 있는 객체로, <strong>코드의 주석과 유사</strong>합니다. <strong>제목</strong>(title)과 <strong>본문</strong>(body)으로 구성되어 있습니다.<br>Sticky Notes are objects in a graph view that you can write in. They are the graph view equivalent of a comment in code, and consist of a title and body. </p>



<p>그래프에서 원하는 만큼 만들 수 있으며 다음과 같은 다양한 용도로 사용할 수 있습니다:<br>You can create as many as you want in the graph, and use them for a variety of purposes, for example:</p>



<ul class="wp-block-list">
<li>그래프의 섹션 작동 방식을 설명하는 데 사용할 수 있습니다.<br>To describe how a section of your graph works.</li>



<li>유니티 프로젝트에서 공동 작업하는 사용자 또는 다른 사용자에게 메모를 남깁니다.<br>To leave notes for yourself or others collaborating in your Unity Project.</li>



<li>나중에 완료할 작업을 포함하는 할 일 목록으로 사용할 수 있습니다.<br>As a to-do list that includes tasks to complete at a later date.</li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="using-sticky-notes">Using Sticky Notes</h3>



<p>Sticky Note를 만들려면 그래프 보기에서 빈 공간을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 <strong>Create Sticky Note</strong>를 클릭합니다.<br>To create a Sticky Note, right-click an empty space in the graph view and, in the context menu, click <strong>Create Sticky Note</strong>. </p>



<p>그런 다음 새 Sticky Note에 내용을 사용자 정의하고 추가할 수 있습니다. <br>You can then customize and add content to the new Sticky Note. </p>



<p>다음에 쓸 수 있는 텍스트 영역은 두 가지입니다:<br>There are two text areas that you can write in:</p>



<ul class="wp-block-list">
<li><strong>제목</strong> : Sticky Note 상단에 있는 텍스트 영역이 제목입니다. 이를 사용하여 Sticky Note에 어떤 정보가 포함되어 있는지 간결하게 설명할 수 있습니다.<br><strong>Title</strong>: The text area at the top of the Sticky Note is the title. You can use it to concisely describe what information the Sticky Note contains.</li>



<li><strong>본문</strong>: 제목 영역 아래에 있는 더 큰 텍스트 영역은 본문입니다. 여기에 메모의 전체 내용을 작성하시면 됩니다.<br><strong>Body</strong>: The larger text area below the title area is the body. You can write the full contents of the note here.</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="311" height="279" src="https://lycos7560.com/wp-content/uploads/2024/03/image-43.png" alt="" class="wp-image-38033" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-43.png 311w, https://lycos7560.com/wp-content/uploads/2024/03/image-43-300x269.png 300w" sizes="(max-width: 311px) 100vw, 311px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="273" height="202" src="https://lycos7560.com/wp-content/uploads/2024/03/image-44.png" alt="" class="wp-image-38034"/></figure>
</div>
</div>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="editing-text">Editing text</h3>



<p>Sticky Note에서 텍스트를 편집하려면 텍스트 영역을 <strong>두 번 클릭</strong>합니다.<br>To edit text on a Sticky Note, <strong>double-click</strong> on a text area.</p>



<p>또한 전체 텍스트 영역을 선택하므로 텍스트를 편집하기 전에 커서를 이동해야 합니다.<br>This also selects the entire text area, so be sure to move the cursor before you edit the text.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="moving-and-resizing">Moving and resizing</h3>



<p>그래프의 아무 곳이나 스티커 메모를 이동할 수 있습니다.<br>You can move Sticky Notes anywhere on the graph. </p>



<p>클릭한 후 드래그하여 Sticky Note의 크기를 수동으로 조정하거나 Sticky Note가 내용에 맞게 자동으로 크기를 조정하도록 할 수도 있습니다.<br>You can also click and drag to manually resize Sticky Notes, or have a Sticky Note automatically resize itself to fit the content. </p>



<p> Sticky Note 크기를 직접 조정하는 방법에 대한 자세한 내용은 아래 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sticky-Notes.html#context-menu" target="_blank" rel="noreferrer noopener">Context menu</a> 섹션의 <strong>Fit To Text</strong>를 참조하십시오.<br>For information on how to make the Sticky Note resize itself, see <strong>Fit To Text</strong> in the <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sticky-Notes.html#context-menu" target="_blank" rel="noreferrer noopener">Context menu</a> section below.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="duplicating">Duplicating</h3>



<p>다음 키보드 바로 가기를 사용하여 Sticky Note를 자르고, 복사하고, 붙여넣고, 복제합니다.<br>Use the following keyboard shortcuts to cut, copy, paste, and duplicate Sticky Notes.</p>



<ul class="wp-block-list">
<li><strong>Copy</strong>: Ctrl+C</li>



<li><strong>Cut</strong>: Ctrl+X</li>



<li><strong>Paste</strong>: Ctrl+V</li>



<li><strong>Duplicate</strong>: Ctrl+D</li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading" id="context-menu">Context menu</h3>



<p>Sticky Note의 컨텍스트 메뉴를 열려면 해당 메뉴의 아무 곳이나 마우스 오른쪽 단추로 클릭합니다.<br>To open the context menu for a Sticky Note, right-click anywhere on it. </p>



<p>컨텍스트 메뉴의 옵션은 다음과 같습니다.<br>The options in the context menu are as follows.</p>



<figure class="wp-block-table"><table><thead><tr><th><strong>Option</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td><strong>Dark Theme/Light Theme</strong></td><td>Sticky Note의 색상 테마를 <strong>밝은 테마</strong>와 <strong>어두운 테마</strong> 사이에서 전환합니다.<br>Toggles the color theme of the Sticky Note between light theme and dark theme.</td></tr><tr><td><strong>Text Size</strong></td><td>각 텍스트 영역의 폰트 크기를 다음과 같은 포인트 값으로 조정합니다.<br>Resizes the font in the text areas to the following point values.</td></tr><tr><td>Small</td><td>Title: 20, Body: 11</td></tr><tr><td>Medium</td><td>Title: 40, Body: 24</td></tr><tr><td>Large</td><td>Title: 60, Body: 36</td></tr><tr><td>Huge</td><td>Title: 80, Body: 56</td></tr><tr><td><strong>Fit To Text</strong></td><td>Sticky Note의 크기를 텍스트 영역에 정확히 맞게 조정합니다. <br>Resizes the Sticky Note so that it precisely fits the text areas. <br>제목이 한 줄을 초과하는 경우 Unity는 제목 텍스트가 한 줄에 맞게 Sticky Note의 크기를 조정합니다.<br>If your title exceeds a single line, Unity resizes the Sticky Note such that title text fits on a single line.</td></tr><tr><td><strong>Delete</strong></td><td>선택한 Sticky Note를 삭제합니다.<br>Deletes the Sticky Note you selected.</td></tr><tr><td><strong>Group Selection</strong></td><td>선택한 Sticky Note를 그룹에 배치합니다.<br>Places any Sticky Notes you select in a group.</td></tr><tr><td><strong>Ungroup Selection</strong></td><td>그룹에서 선택한 모든 Sticky Notes를 제거합니다.<br>Removes any Sticky Notes you select from the group.</td></tr></tbody></table></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="416" height="390" src="https://lycos7560.com/wp-content/uploads/2024/03/image-45.png" alt="" class="wp-image-38035" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-45.png 416w, https://lycos7560.com/wp-content/uploads/2024/03/image-45-300x281.png 300w" sizes="(max-width: 416px) 100vw, 416px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><img decoding="async" width="245" height="214" src="https://lycos7560.com/wp-content/uploads/2024/03/image-46.png" alt="" class="wp-image-38036"/><figcaption class="wp-element-caption"><strong>Group Selection</strong></figcaption></figure>
</div>
</div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>
<p>The post <a href="https://lycos7560.com/unity/getting-started-with-shader-graph-master-stack-sticky-notes/38028/">Getting started with Shader Graph &#8211; Master Stack / Sticky Notes</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/getting-started-with-shader-graph-master-stack-sticky-notes/38028/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Getting started with Shader Graph &#8211; Create Node Menu</title>
		<link>https://lycos7560.com/unity/getting-started-with-shader-graph-create-node-menu/38017/</link>
					<comments>https://lycos7560.com/unity/getting-started-with-shader-graph-create-node-menu/38017/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 19 Mar 2024 15:06:33 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[Block Node]]></category>
		<category><![CDATA[Contextual]]></category>
		<category><![CDATA[Contextual Create Node Menu]]></category>
		<category><![CDATA[Create]]></category>
		<category><![CDATA[Create Node]]></category>
		<category><![CDATA[Create Node Menu]]></category>
		<category><![CDATA[Getting started with Shader Graph]]></category>
		<category><![CDATA[Manual]]></category>
		<category><![CDATA[Master Stack]]></category>
		<category><![CDATA[Master Stack Create Node Menu]]></category>
		<category><![CDATA[Node Menu]]></category>
		<category><![CDATA[Shader Graph]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[URP]]></category>
		<category><![CDATA[노드]]></category>
		<category><![CDATA[노드 생성]]></category>
		<category><![CDATA[생성]]></category>
		<category><![CDATA[유니티]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=38017</guid>

					<description><![CDATA[<p>https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html Create Node Menu Description Shader Graph에서 nodes를 생성하기 위해 Create Node Menu를 사용합니다.Use the Create Node Menu to create nodes in Shader Graph. 노드 생성 메뉴를 열려면 Shader Graph 창의 작업 공간을 마우스 오른쪽 버튼으로 클릭하고 &#8220;Create Node&#8221;을 선택하거나, 스페이스바를 누릅니다.To open the Create Node Menu, either right-click on the workspace in the Shader Graph Window and select Create Node, or press [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/getting-started-with-shader-graph-create-node-menu/38017/">Getting started with Shader Graph &#8211; Create Node Menu</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html</a></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-12711d18      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							Getting started with Shader Graph						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#create-node-menu" class="uagb-toc-link__trigger">Create Node Menu</a><li class="uagb-toc__list"><a href="#contextual-create-node-menu" class="uagb-toc-link__trigger">Contextual Create Node Menu</a><li class="uagb-toc__list"><a href="#master-stack-create-node-menu" class="uagb-toc-link__trigger">Master Stack Create Node Menu</a></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-uagb-advanced-heading uagb-block-5260c951"><h2 class="uagb-heading-text">Create Node Menu</h2></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60)"/>



<p class="has-medium-font-size"><strong>Description</strong></p>



<p>Shader Graph에서 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Node.html" target="_blank" rel="noreferrer noopener">nodes</a>를 생성하기 위해 <strong>Create Node Menu</strong>를 사용합니다.<br>Use the <strong>Create Node Menu</strong> to create <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Node.html" target="_blank" rel="noreferrer noopener">nodes</a> in Shader Graph. </p>



<p>노드 생성 메뉴를 열려면 Shader Graph 창의 작업 공간을 <strong>마우스 오른쪽 버튼으로 클릭하고 &#8220;Create Node&#8221;을 선택하거나, 스페이스바를 누릅니다.</strong><br>To open the <strong>Create Node Menu</strong>, either right-click on the workspace in the <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Shader-Graph-Window.html" target="_blank" rel="noreferrer noopener">Shader Graph Window</a> and select <strong>Create Node</strong>, or press the spacebar.</p>



<p><strong>Create Node Menu</strong>의 맨 위에는 검색 창이 있습니다.<br>At the top of the <strong>Create Node Menu</strong> is a search bar. </p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b985081&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b985081" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="267" height="297" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-34.png" alt="" class="wp-image-38019"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">마우스 우클릭 후 <strong>Create Node</strong> 선택</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b98544b&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b98544b" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="333" height="318" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-35.png" alt="" class="wp-image-38020" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-35.png 333w, https://lycos7560.com/wp-content/uploads/2024/03/image-35-300x286.png 300w" sizes="(max-width: 333px) 100vw, 333px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption"><strong>SpaceBar</strong></figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b9857c1&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b9857c1" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="346" height="327" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-36.png" alt="" class="wp-image-38021" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-36.png 346w, https://lycos7560.com/wp-content/uploads/2024/03/image-36-300x284.png 300w" sizes="(max-width: 346px) 100vw, 346px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption"><strong>Tab</strong>을 이용하여 예측 텍스트 수락</figcaption></figure>
</div>
</div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>node를 검색하려면 검색 필드에 이름의 일부를 입력하십시오.<br>To search for a node, type any part of its name in the search field. </p>



<p>검색 상자는 자동 완성 옵션을 제공하며, 예측 텍스트를 수락하려면 <strong>Tab을 누르십시오.</strong><br>The search box gives you autocomplete options, and you can press Tab to accept the predictive text.</p>



<p>일치하는 텍스트를 노란색으로 강조합니다.<br>It highlights matching text in yellow.</p>



<p><strong>Create Node Menu</strong> lists에는 기능별로 분류된 Shader Graph에서 사용 가능한 모든 노드가 나열됩니다.<br>The <strong>Create Node Menu</strong> lists all nodes that are available in Shader Graph, categorized by their function.</p>



<p>사용자가 작성한 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sub-graph.html" target="_blank" rel="noreferrer noopener">Sub Graphs</a>는 서브 그래프 에셋 하위의 <strong>Create Node Menu</strong>에서 사용할 수 있으며, <strong>Sub Graph Assets</strong>에서 정의한 사용자 지정 카테고리에도 사용할 수 있습니다.<br>User-created <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Sub-graph.html" target="_blank" rel="noreferrer noopener">Sub Graphs</a> are also available in the <strong>Create Node Menu</strong> under <strong>Sub Graph Assets</strong>, or in a custom category that you define in the Sub Graph Asset.</p>



<p>작업 공간에 노드를 추가하려면 <strong>Create Node Menu</strong>에서 해당 노드를 두 번 클릭하십시오.<br>To add a node to the workspace, double-click it in the <strong>Create Node Menu</strong>.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="contextual-create-node-menu">Contextual Create Node Menu</h2>



<p>컨텍스트에 맞는 <strong>Create Node Menu</strong>는 사용 가능한 노드를 필터링하고 선택한 엣지의 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Data-Types.html" target="_blank" rel="noreferrer noopener">Data Type</a>을 사용하는 노드만 표시합니다.<br>A contextual <strong>Create Node Menu</strong> filters the available nodes, and only shows those that use the <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Data-Types.html" target="_blank" rel="noreferrer noopener">Data Type</a> of a selected edge. </p>



<p>해당 Data Type과 일치하는 노드의 모든 사용 가능한 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Port.html" target="_blank" rel="noreferrer noopener">Port</a>를 나열합니다.<br>It lists every available <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Port.html" target="_blank" rel="noreferrer noopener">Port</a> on nodes that match that Data Type.</p>



<p>컨텍스트에 맞는  <strong>Create Node Menu</strong>를 열려면 포트에서 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Edge.html" target="_blank" rel="noreferrer noopener">Edge</a>를 클릭하고 드래그한 다음 작업 공간의 빈 영역에 놓으면 됩니다.<br>To open a contextual <strong>Create Node Menu</strong>, click and drag an <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Edge.html" target="_blank" rel="noreferrer noopener">Edge</a> from a Port, and then release it in an empty area of the workspace.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b985e4e&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b985e4e" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="905" height="389" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-37.png" alt="" class="wp-image-38022" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-37.png 905w, https://lycos7560.com/wp-content/uploads/2024/03/image-37-300x129.png 300w, https://lycos7560.com/wp-content/uploads/2024/03/image-37-768x330.png 768w" sizes="(max-width: 905px) 100vw, 905px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">정점(Edge)을 클릭하고 드래그하여 생성<br>선택한 정점(Edge)의 DataType을 기반으로 사용 가능한 node를 필터링하여 특정 컨텍스트에서 사용자에게 적합한 노드를 제안하는 메뉴</figcaption></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading" id="master-stack-create-node-menu">Master Stack Create Node Menu</h2>



<p>새로운 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html" target="_blank" rel="noreferrer noopener">Block Node</a>를 <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html">Master Stack</a>에 추가하려면 마우스 오른쪽 버튼을 클릭하고 &#8220;<strong>Create Node</strong>&#8220;을 선택하거나 스택을 선택한 상태에서 스페이스바를 누르세요.<br>To add a new <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html" target="_blank" rel="noreferrer noopener">Block Node</a> to the <a href="https://docs.unity3d.com/Packages/com.unity.shadergraph@17.0/manual/Create-Node-Menu.html" target="_blank" rel="noreferrer noopener">Master Stack</a>, either right click and select <strong>Create Node</strong> or press spacebar with the stack selected.</p>



<p>&#8220;<strong>Create Node Menu</strong>&#8220;는 <strong>프로젝트의 렌더 파이프라인을 기반으로 마스터 스택에 사용 가능한 모든 블록을 표시</strong>합니다.<br>The <strong>Create Node Menu</strong> will display all available blocks for the master stack based on the render pipelines in your project.</p>



<p>&#8220;<strong>Create Node Menu</strong>&#8220;를 통해 마스터 스택에 어떤 블록이든 추가할 수 있습니다.<br>Any block can be added to the master stack via the <strong>Create Node Menu</strong>.</p>



<p>추가된 block이 현재 Graph settings과 호환되지 않는 경우, 해당 block은 설정이 지원될 때까지 <strong>비활성화</strong>됩니다.<br>If the block added is not compatible with the current Graph settings, the block will be disabled until the settings are configured to support it.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69da41b9862f2&quot;}" data-wp-interactive="core/image" data-wp-key="69da41b9862f2" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="1164" height="713" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://lycos7560.com/wp-content/uploads/2024/03/image-38.png" alt="" class="wp-image-38023" srcset="https://lycos7560.com/wp-content/uploads/2024/03/image-38.png 1164w, https://lycos7560.com/wp-content/uploads/2024/03/image-38-300x184.png 300w, https://lycos7560.com/wp-content/uploads/2024/03/image-38-768x470.png 768w" sizes="(max-width: 1164px) 100vw, 1164px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="확대하기"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">MasterStack에 블록추가 / 호환되지 않는 경우에는 해당 block은 설정이 지원될 때까지 <strong>비활성화</strong></figcaption></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/getting-started-with-shader-graph-create-node-menu/38017/">Getting started with Shader Graph &#8211; Create Node Menu</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/getting-started-with-shader-graph-create-node-menu/38017/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>12 &#8211; 03 홀로그램(Hologram) 만들기 (Unity Shader)</title>
		<link>https://lycos7560.com/unity/unity_shader/unity-shader-hologram-rim-light/2936/</link>
					<comments>https://lycos7560.com/unity/unity_shader/unity-shader-hologram-rim-light/2936/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 06:42:08 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[2Pass]]></category>
		<category><![CDATA[fresnel]]></category>
		<category><![CDATA[Half-Lambert]]></category>
		<category><![CDATA[Hologram]]></category>
		<category><![CDATA[Holography]]></category>
		<category><![CDATA[Lambert]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Standard Surface Shader]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[만들기]]></category>
		<category><![CDATA[쉐이더]]></category>
		<category><![CDATA[유니티]]></category>
		<category><![CDATA[홀로그램]]></category>
		<category><![CDATA[홀로그램 만들기]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=2936</guid>

					<description><![CDATA[<p>unity의 shader를 이용하여 홀로그램을 구현하는 방법을 정리하고 기록한 글입니다. + 2pass</p>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity-shader-hologram-rim-light/2936/">12 &#8211; 03 홀로그램(Hologram) 만들기 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:61px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">12 &#8211; 03 홀로그램(Hologram) 만들기 (Unity Shader)</h2>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Rim 라이트를 구현할 수 있게 되었으니 알파를 사용하여 홀로그램을 만들 수 있습니다.</p>



<p class="has-medium-font-size">처음은 Lambert 기본형에서 시작합니다.</p>



<div style="height:52px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Holo"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert noambient

        #pragma target 3.0
        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1547" height="519" src="https://lycos7560.com/wp-content/uploads/image-453.png" alt="" class="wp-image-2937" srcset="https://lycos7560.com/wp-content/uploads/image-453.png 1547w, https://lycos7560.com/wp-content/uploads/image-453-300x101.png 300w, https://lycos7560.com/wp-content/uploads/image-453-768x258.png 768w, https://lycos7560.com/wp-content/uploads/image-453-1536x515.png 1536w" sizes="(max-width: 1547px) 100vw, 1547px" /></figure>



<div style="height:67px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">다음은 Fresnel 기본 연산을 구현합니다.</p>



<p class="has-medium-font-size">잠시 Albedo 는 끄고 Emission 으로 결과를 확인하겠습니다.&nbsp;</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1310" height="1022" src="https://lycos7560.com/wp-content/uploads/image-454.png" alt="" class="wp-image-2938" srcset="https://lycos7560.com/wp-content/uploads/image-454.png 1310w, https://lycos7560.com/wp-content/uploads/image-454-300x234.png 300w, https://lycos7560.com/wp-content/uploads/image-454-768x599.png 768w" sizes="(max-width: 1310px) 100vw, 1310px" /></figure>



<div style="height:115px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이제 반투명으로 구현하겠습니다.</p>



<p class="has-medium-font-size">홀로그램의 핵심원리는&nbsp;<strong>&#8221; Rim 라이트 연산을 알파 채널에 넣는다 &#8220;</strong>&nbsp;입니다.</p>



<p class="has-medium-font-size">반투명 구현은 앞 부분의 불을 만들 때 사용한 방식입니다.</p>



<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1295" height="764" src="https://lycos7560.com/wp-content/uploads/image-455.png" alt="" class="wp-image-2939" srcset="https://lycos7560.com/wp-content/uploads/image-455.png 1295w, https://lycos7560.com/wp-content/uploads/image-455-300x177.png 300w, https://lycos7560.com/wp-content/uploads/image-455-768x453.png 768w" sizes="(max-width: 1295px) 100vw, 1295px" /></figure>



<div style="height:76px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">마지막으로 Emission에 원하는 색상을 넣어주면 됩니다.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="738" height="930" src="https://lycos7560.com/wp-content/uploads/image-456.png" alt="" class="wp-image-2940" srcset="https://lycos7560.com/wp-content/uploads/image-456.png 738w, https://lycos7560.com/wp-content/uploads/image-456-238x300.png 238w" sizes="(max-width: 738px) 100vw, 738px" /></figure>



<div style="height:59px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="700" style="aspect-ratio: 1232 / 700;" width="1232" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_11_19_52.mp4"></video></figure>



<div style="height:102px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">다음은 두께를 조절하게 해줍니다.</p>



<div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="812" height="1002" src="https://lycos7560.com/wp-content/uploads/image-457.png" alt="" class="wp-image-2942" srcset="https://lycos7560.com/wp-content/uploads/image-457.png 812w, https://lycos7560.com/wp-content/uploads/image-457-243x300.png 243w, https://lycos7560.com/wp-content/uploads/image-457-768x948.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>



<div style="height:39px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="836" style="aspect-ratio: 1480 / 836;" width="1480" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_12_29_337.mp4"></video></figure>



<div style="height:72px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">입안이 이상하게 구현된 것은 캐릭터가 입안까지 모델링이 되었기 때문입니다.</p>



<p class="has-medium-font-size">반투명이 되면서 반대편의 오브젝트나 안쪽의 오브젝트가 비쳐 보이는 것은 나중에 Z버퍼를 이용한 2pass 쉐이더를 사용하여 해결합니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="has-medium-font-size wp-block-heading">전체 코드</h2>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Holo"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _RimColor("RimColor", Color) = (1,1,1,1)
        _RimPower("RimPower", Range(1,10)) = 3
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert noambient alpha:fade

        #pragma target 3.0
        sampler2D _MainTex;
        float4 _RimColor;
        float _RimPower;

        struct Input
        {
            float2 uv_MainTex;
            float3 viewDir;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float rim = saturate(dot(o.Normal, IN.viewDir));
            rim = pow(1 - rim, _RimPower);
            o.Emission = _RimColor.rgb;
            o.Alpha = rim;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<p class="has-medium-font-size">기본형은 만들었지만 이것만으로는 부족합니다.</p>



<p class="has-medium-font-size">다양한 효과를 넣어 봅시다.</p>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">첫번째로 이 홀로그램을 깜빡이게 표현합니다.</p>



<p class="has-medium-font-size">Sin(_Time.y) 를 이용합니다.</p>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="804" height="319" src="https://lycos7560.com/wp-content/uploads/image-458.png" alt="" class="wp-image-2944" srcset="https://lycos7560.com/wp-content/uploads/image-458.png 804w, https://lycos7560.com/wp-content/uploads/image-458-300x119.png 300w, https://lycos7560.com/wp-content/uploads/image-458-768x305.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></figure>



<div style="height:87px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">깜빡임 속도 증가</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="770" height="1037" src="https://lycos7560.com/wp-content/uploads/image-459.png" alt="" class="wp-image-2945" srcset="https://lycos7560.com/wp-content/uploads/image-459.png 770w, https://lycos7560.com/wp-content/uploads/image-459-223x300.png 223w, https://lycos7560.com/wp-content/uploads/image-459-768x1034.png 768w" sizes="(max-width: 770px) 100vw, 770px" /></figure>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="828" style="aspect-ratio: 1448 / 828;" width="1448" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_16_27_300.mp4"></video></figure>



<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">그런데, 이러면 깜빡일 떄 안보이는 시간이 너무 길게 나타납니다.</p>



<p class="has-medium-font-size">이것은 sin 또는 cos 곡선에서 일어나는 당연한 결과 입니다.</p>



<p class="has-medium-font-size">이 곡선들이 -1 ~ 1을 반복하다 보니 그림처럼 0 이하로 내려가는 부분이 절반이기 때문입니다.</p>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="748" height="443" src="https://lycos7560.com/wp-content/uploads/image-460.png" alt="" class="wp-image-2947" srcset="https://lycos7560.com/wp-content/uploads/image-460.png 748w, https://lycos7560.com/wp-content/uploads/image-460-300x178.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></figure>



<div style="height:88px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">saturate 해주는 것은 0 이나 &#8211; 1 이나 우리눈에 안보이는 것은 같기 때문에 의미가 없습니다.</p>



<div style="height:66px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">첫번째로&nbsp; * 0.5 + 0.5 를 사용하는 방법이 있습니다.</p>



<p class="has-medium-font-size">하프 램버트에서 사용했던 공식을 이용하면 -1 ~ 1을 0 ~ 1로 변화시켜주므로 부드럽게 지속적으로 반짝이는 곡선을 구할 수 있게 됩니다.</p>



<p class="has-medium-font-size">sin(_Time.y) * 0.5 + 0.5;</p>



<div style="height:24px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="789" height="488" src="https://lycos7560.com/wp-content/uploads/image-461.png" alt="" class="wp-image-2948" srcset="https://lycos7560.com/wp-content/uploads/image-461.png 789w, https://lycos7560.com/wp-content/uploads/image-461-300x186.png 300w, https://lycos7560.com/wp-content/uploads/image-461-768x475.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></figure>



<div style="height:81px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">또 다른 방법으로는 abs () 함수를 사용하여 모든 음수를 양수로 변화시킬 수 있습니다.</p>



<p class="has-medium-font-size">abs(sin(_Time.y));</p>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="790" height="503" src="https://lycos7560.com/wp-content/uploads/image-462.png" alt="" class="wp-image-2949" srcset="https://lycos7560.com/wp-content/uploads/image-462.png 790w, https://lycos7560.com/wp-content/uploads/image-462-300x191.png 300w, https://lycos7560.com/wp-content/uploads/image-462-768x489.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="919" height="411" src="https://lycos7560.com/wp-content/uploads/image-463.png" alt="" class="wp-image-2950" srcset="https://lycos7560.com/wp-content/uploads/image-463.png 919w, https://lycos7560.com/wp-content/uploads/image-463-300x134.png 300w, https://lycos7560.com/wp-content/uploads/image-463-768x343.png 768w" sizes="(max-width: 919px) 100vw, 919px" /></figure>



<div style="height:42px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Holo"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _RimColor("RimColor", Color) = (1,1,1,1)
        _RimPower("RimPower", Range(1,10)) = 3
        _HoloTwinkling("HoloTwinkling",Range(1,5)) = 1
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert noambient alpha:fade

        #pragma target 3.0
        sampler2D _MainTex;
        float4 _RimColor;
        float _RimPower;
        float _HoloTwinkling;

        struct Input
        {
            float2 uv_MainTex;
            float3 viewDir;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float rim = saturate(dot(o.Normal, IN.viewDir));
            rim = pow(1 - rim, _RimPower);
            o.Emission = _RimColor.rgb;

            //o.Alpha = rim * sin(_Time.y * _HoloTwinkling);
            //o.Alpha = rim * sin(_Time.y * _HoloTwinkling) *0.5 + 0.5;
            o.Alpha = rim * abs(sin(_Time.y * _HoloTwinkling));
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:71px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="828" style="aspect-ratio: 1448 / 828;" width="1448" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_20_37_32.mp4"></video></figure>



<div style="height:43px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<p class="has-medium-font-size">다음은 홀로그램의 줄무늬가 올라가는 효과를 만들겠습니다.</p>



<p class="has-medium-font-size">버텍스 컬러를 이용하여 아래에서 위로 밝아지게 칠할 수도 있고, 두번째 UV를 펴는 방법도 있습니다.</p>



<p class="has-medium-font-size">여기서는 Input 구조체에서 다른 값을 이용하겠습니다.</p>



<div style="height:43px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Manual/SL-SurfaceShaders.html</a> &lt;- 영문</p>



<figure class="wp-block-image size-full"><a href="https://docs.unity3d.com/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1302" height="319" src="https://lycos7560.com/wp-content/uploads/image-464.png" alt="" class="wp-image-2952" srcset="https://lycos7560.com/wp-content/uploads/image-464.png 1302w, https://lycos7560.com/wp-content/uploads/image-464-300x74.png 300w, https://lycos7560.com/wp-content/uploads/image-464-768x188.png 768w" sizes="(max-width: 1302px) 100vw, 1302px" /></a></figure>



<div style="height:42px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html</a> &lt;-한글</p>



<figure class="wp-block-image size-full"><a href="https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1306" height="318" src="https://lycos7560.com/wp-content/uploads/image-465.png" alt="" class="wp-image-2953" srcset="https://lycos7560.com/wp-content/uploads/image-465.png 1306w, https://lycos7560.com/wp-content/uploads/image-465-300x73.png 300w, https://lycos7560.com/wp-content/uploads/image-465-768x187.png 768w" sizes="(max-width: 1306px) 100vw, 1306px" /></a></figure>



<div style="height:118px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">표면 셰이더 입력 구조</h2>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">입력 구조&nbsp;Input에는 일반적으로 셰이더가 필요로 하는 텍스처 좌표가 있습니다. 텍스처 좌표의 이름은 텍스처 이름 앞에 “uv”가 붙는 형식으로 지어야 합니다(또는 두 번째 텍스처 좌표 세트를 사용하려면 “uv2”로 시작해야 합니다).</p>



<p class="has-medium-font-size">다음 값을 입력 구조에 추가할 수 있습니다.</p>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">float3 viewDir &#8211; 뷰 방향을 포함합니다. 패럴랙스 이펙트, 림 조명 등의 컴퓨팅에 사용합니다.</p>



<p class="has-medium-font-size">float4와 COLOR 시맨틱 &#8211; 보간된 버텍스당 컬러를 포함합니다.</p>



<p class="has-medium-font-size">float4 screenPos &#8211; 반사 또는 스크린 공간 효과를 위한 스크린 공간 포지션을 포함합니다. GrabPass에는 적합하지 않습니다. ComputeGrabScreenPos 함수를 사용하여 커스텀 UV를 직접 계산해야 합니다.</p>



<p class="has-medium-font-size">float3 worldPos &#8211; 월드 공간 포지션을 포함합니다.</p>



<p class="has-medium-font-size">float3 worldRefl &#8211; 표면 셰이더가 o.Normal에 기록하지 않는 경우 월드 반사 벡터를 포함합니다. 예를 들어 리플렉트-디퓨즈(Reflect-Diffuse) 셰이더가 있습니다.</p>



<p class="has-medium-font-size">float3 worldNormal &#8211; 표면 셰이더가 o.Normal에 기록하지 않는 경우 월드 노멀 벡터를 포함합니다.</p>



<p class="has-medium-font-size">float3 worldRefl; INTERNAL_DATA &#8211; 표면 셰이더가 o.Normal에 기록하는 경우 월드 반사 벡터를 포함합니다. 픽셀당 노멀 맵을 기반으로 반사 벡터를 얻으려면 WorldReflectionVector (IN, o.Normal)를 사용해야 합니다. 예를 들어 리플렉트-범프드(Reflect-Bumped) 셰이더가 있습니다.</p>



<p class="has-medium-font-size">float3 worldNormal; INTERNAL_DATA &#8211; 표면 셰이더가 o.Normal에 기록하는 경우 월드 노멀 벡터를 포함합니다. 픽셀당 노멀 맵에 기반한 노멀 벡터를 얻으려면 WorldNormalVector (IN, o.Normal)를 사용해야 합니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이번에는 float3 worldPos를 사용합니다.</p>



<p class="has-medium-font-size">해당 변수의 기능을 확인하기 위해서 코드를 변경합니다.</p>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="891" height="1003" src="https://lycos7560.com/wp-content/uploads/image-466.png" alt="" class="wp-image-2955" srcset="https://lycos7560.com/wp-content/uploads/image-466.png 891w, https://lycos7560.com/wp-content/uploads/image-466-267x300.png 267w, https://lycos7560.com/wp-content/uploads/image-466-768x865.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></figure>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="608" style="aspect-ratio: 840 / 608;" width="840" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_25_54_541.mp4"></video></figure>



<div style="height:56px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">해당 x, y, z 가 각각 r, g, b 에 대입하여 나타납니다.</p>



<p class="has-medium-font-size">우리는 상/하의 값인 Y만 필요하기 때문에 g (y)만 출력합니다.</p>



<div style="height:61px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="667" height="283" src="https://lycos7560.com/wp-content/uploads/image-467.png" alt="" class="wp-image-2957" srcset="https://lycos7560.com/wp-content/uploads/image-467.png 667w, https://lycos7560.com/wp-content/uploads/image-467-300x127.png 300w" sizes="(max-width: 667px) 100vw, 667px" /></figure>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="608" style="aspect-ratio: 840 / 608;" width="840" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_28_17_74.mp4"></video></figure>



<div style="height:71px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위의 코드로는&nbsp; 위로 올라가면 1이 넘는 값이 될 것이고 아래로 내려가면 -1의 아래 값으로 변하게 됩니다.</p>



<p class="has-medium-font-size">이러한 상황에서 유용한 내장 함수는 frac ( ) 입니다.</p>



<p class="has-medium-font-size">frac ( ) 은 안에 들어온 숫자의 &#8220;소수점 부분&#8221; 만 리턴해 줍니다.</p>



<p class="has-medium-font-size">즉, 1.1 은 0.1을 리턴하고 1.9는 0.9를 리턴합니다.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="716" height="299" src="https://lycos7560.com/wp-content/uploads/image-468.png" alt="" class="wp-image-2959" srcset="https://lycos7560.com/wp-content/uploads/image-468.png 716w, https://lycos7560.com/wp-content/uploads/image-468-300x125.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></figure>



<figure class="wp-block-video"><video height="608" style="aspect-ratio: 1088 / 608;" width="1088" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_29_32_254.mp4"></video></figure>



<div style="height:55px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이제 흰 부분을 줄여 주겠습니다.</p>



<p class="has-medium-font-size">그라디에이션에서 검정 부분을 확장시키고 흰 부분을 줄이는 것은 이전에&nbsp; fresnel 을 배울 때 pow ( ) 함수를 이용하여 해결했습니다.</p>



<p class="has-medium-font-size">추가로 시간에 따라 위로 흘러가게 해줍니다.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="642" height="211" src="https://lycos7560.com/wp-content/uploads/image-469.png" alt="" class="wp-image-2961" srcset="https://lycos7560.com/wp-content/uploads/image-469.png 642w, https://lycos7560.com/wp-content/uploads/image-469-300x99.png 300w" sizes="(max-width: 642px) 100vw, 642px" /></figure>



<div style="height:57px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:39px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">NormalMap 적용 후 변경이 가능하게 프로퍼티로 설정</p>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Holo"
{
    Properties
    {
        _BumpMap("Normal Map", 2D) = "white" {}
        _RimColor ("RimColor", Color) = (1,1,1,1)
        _RimPower ("RimPower", Range(1,10)) = 3
        _HoloTwinkling ("HoloTwinkling",Range(1,5)) = 1
        _HoloSpeed ("HoloSpeed",Range(1,5)) = 1
        _HoloInterval ("HoloInterval",Range(1,5)) = 5
        
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert noambient alpha:fade

        #pragma target 3.0
        sampler2D _BumpMap;
        float4 _RimColor;
        float _RimPower;
        float _HoloTwinkling;
        float _HoloSpeed;
        float _HoloInterval;

        struct Input
        {
            float2 uv_BumpMap;
            float3 viewDir;
            float3 worldPos;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            float rim = saturate(dot(o.Normal, IN.viewDir));
            rim = pow(1 - rim, _RimPower);
            o.Emission = pow (frac(IN.worldPos.g * _HoloInterval - _Time.y * _HoloSpeed), 5) + _RimColor.rgb;
            o.Alpha = rim * abs(sin(_Time.y * _HoloTwinkling));
        }
        ENDCG
    }
    FallBack "Transparent/Diffuse"
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="584" style="aspect-ratio: 1080 / 584;" width="1080" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_32_17_586.mp4"></video></figure>



<div style="height:45px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="525" height="158" src="https://lycos7560.com/wp-content/uploads/image-470.png" alt="" class="wp-image-2963" srcset="https://lycos7560.com/wp-content/uploads/image-470.png 525w, https://lycos7560.com/wp-content/uploads/image-470-300x90.png 300w" sizes="(max-width: 525px) 100vw, 525px" /></figure>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Transparent/Diffuse 는 그림자를 생성하지 않게 하도록 넣는 코드입니다.</p>



<p class="has-medium-font-size">원래 FallBack은 그래픽 카드에서 이 쉐이더 연산을 실패 했을 때의 대체 쉐이더를 적는 란이지만</p>



<p class="has-medium-font-size">이 책의 저자분은 그림자 연산할 때 이 FallBack에 씌여진 쉐이더가 영향을 끼치게 된다는 것을 발견했다고 합니다.</p>



<p class="has-medium-font-size">이 쉐이더는 마치 이펙트와 같은 쉐이더이기 때문에 그림자가 필요없으므로 해당 코드를 넣습니다.</p>



<div style="height:48px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">홀로그램 2Pass</h2>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Holo"
{
    Properties
    {
        _BumpMap("Normal Map", 2D) = "white" {}
        _RimColor ("RimColor", Color) = (1,1,1,1)
        _RimPower ("RimPower", Range(1,10)) = 3
        _HoloTwinkling ("HoloTwinkling",Range(1,5)) = 1
        _HoloSpeed ("HoloSpeed",Range(1,5)) = 1
        _HoloInterval ("HoloInterval",Range(1,5)) = 5
        
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }

        ZWrite On
        ColorMask 0

        LOD 200

        CGPROGRAM
        #pragma surface surf _NoLight
        #pragma target 3.0

        struct Input
        {
            float4 color:COLOR;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
        }

        float4 Lighting_NoLight(SurfaceOutput s, float3 lightDir, float atten) {
            return 0;
        }
        ENDCG

        ZWrite Off

        CGPROGRAM
        #pragma surface surf Lambert noambient alpha:fade

        #pragma target 3.0
        sampler2D _BumpMap;
        float4 _RimColor;
        float _RimPower;
        float _HoloTwinkling;
        float _HoloSpeed;
        float _HoloInterval;

        struct Input
        {
            float2 uv_BumpMap;
            float3 viewDir;
            float3 worldPos;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            float rim = saturate(dot(o.Normal, IN.viewDir));
            rim = pow(1 - rim, _RimPower);
            o.Emission = pow (frac(IN.worldPos.g * _HoloInterval - _Time.y * _HoloSpeed), 30) + _RimColor.rgb;
            o.Alpha = rim * abs(sin(_Time.y * _HoloTwinkling));
        }
        ENDCG
    }
    FallBack "Transparent/Diffuse"
}</pre>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="248" style="aspect-ratio: 696 / 248;" width="696" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_34_44_771.mp4"></video></figure>



<div style="height:127px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity-shader-hologram-rim-light/2936/">12 &#8211; 03 홀로그램(Hologram) 만들기 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity_shader/unity-shader-hologram-rim-light/2936/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_11_19_52.mp4" length="415490" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_12_29_337.mp4" length="1110285" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_16_27_300.mp4" length="1509941" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_20_37_32.mp4" length="1043747" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_25_54_541.mp4" length="1406549" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_28_17_74.mp4" length="611718" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_29_32_254.mp4" length="325196" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_32_17_586.mp4" length="5003364" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_15_34_44_771.mp4" length="4246465" type="video/mp4" />

			</item>
		<item>
		<title>12 &#8211; 01 ~ 02 Rim 라이트의 기초 (Unity Shader)</title>
		<link>https://lycos7560.com/unity/unity_shader/unity-shader-rim-light-fresnel/2900/</link>
					<comments>https://lycos7560.com/unity/unity_shader/unity-shader-rim-light-fresnel/2900/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 05:34:19 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[fresnel]]></category>
		<category><![CDATA[loat3 lightDir]]></category>
		<category><![CDATA[normalmap]]></category>
		<category><![CDATA[pow]]></category>
		<category><![CDATA[Rim]]></category>
		<category><![CDATA[RimLight]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Standard Surface Shader]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[viewDir]]></category>
		<category><![CDATA[공식]]></category>
		<category><![CDATA[노멀맵]]></category>
		<category><![CDATA[림]]></category>
		<category><![CDATA[림라이트]]></category>
		<category><![CDATA[방향 벡터]]></category>
		<category><![CDATA[쉐이더]]></category>
		<category><![CDATA[유니티]]></category>
		<category><![CDATA[프레넬]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=2900</guid>

					<description><![CDATA[<p>Rim 라이트의 기초와 유니티에서 프레넬 공식을 통하여 구현하는 방법을 예제를 통해 간단하게 작성하였습니다. </p>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity-shader-rim-light-fresnel/2900/">12 &#8211; 01 ~ 02 Rim 라이트의 기초 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:45px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">12 &#8211; 01 ~ 02 Rim 라이트의 기초 (Unity Shader)</h2>



<div style="height:26px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">주변을 자세히 보면 모든 물체는 기울어 질수록 반사가 심해집니다.</p>



<p class="has-medium-font-size">실제로 모든 물체는 기울어 질수록 심하게 반사가 되며 그 반사율은 재질에 따라 다르게 나타납니다.</p>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="804" height="353" src="https://lycos7560.com/wp-content/uploads/image-432.png" alt="" class="wp-image-2901" srcset="https://lycos7560.com/wp-content/uploads/image-432.png 804w, https://lycos7560.com/wp-content/uploads/image-432-300x132.png 300w, https://lycos7560.com/wp-content/uploads/image-432-768x337.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">만약 역광이 있을 떄, 털이나 반투명의 재질을 가진 물체들은 이 현상이 매우 강렬하게 나타날 수 있고</p>



<p class="has-medium-font-size">재질에 따라 때로는 잘 보이지 않게 나타날 수도 있습니다.</p>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">사진 분야에서는 이것을 Rim Light ( 림 라이트 ) 라고 부릅니다.</p>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="553" height="239" src="https://lycos7560.com/wp-content/uploads/image-433.png" alt="" class="wp-image-2902" srcset="https://lycos7560.com/wp-content/uploads/image-433.png 553w, https://lycos7560.com/wp-content/uploads/image-433-300x130.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></figure>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">우리가 사용하는 Standard Shader와 같은 물리 기반의 쉐이더는 이러한 재질의 특성에 따른 반사율이</p>



<p class="has-medium-font-size">BRDF(Bidirectional Reflectance Distribution Function &#8211;&nbsp;양방향 반사 분포 함수) 를 이용하여 구현되어 있습니다.</p>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1341" height="809" src="https://lycos7560.com/wp-content/uploads/image-434.png" alt="" class="wp-image-2903" srcset="https://lycos7560.com/wp-content/uploads/image-434.png 1341w, https://lycos7560.com/wp-content/uploads/image-434-300x181.png 300w, https://lycos7560.com/wp-content/uploads/image-434-768x463.png 768w" sizes="(max-width: 1341px) 100vw, 1341px" /></figure>



<div style="height:44px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이러한 반사 공식을&nbsp;<strong>fresnel (프레넬)</strong>&nbsp;이라 부릅니다.</p>



<p class="has-medium-font-size">이번에 설명할 fresnel 공식은 그보다는 간단하게, 빛의 방향과는 전혀 상관이 없게 만드는 효과입니다.</p>



<p class="has-medium-font-size">기본적으로 배경과 캐릭터의 분리나 강조를 위해, 혹은 선택되었을때나 특정 상태를 표현하기 위한 특수한 효과를 위해 사용합니다.</p>



<div style="height:26px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="959" height="695" src="https://lycos7560.com/wp-content/uploads/image-435.png" alt="" class="wp-image-2904" srcset="https://lycos7560.com/wp-content/uploads/image-435.png 959w, https://lycos7560.com/wp-content/uploads/image-435-300x217.png 300w, https://lycos7560.com/wp-content/uploads/image-435-768x557.png 768w" sizes="(max-width: 959px) 100vw, 959px" /></figure>



<div style="height:143px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">직접 확인해보기 위해서 아래 에셋을 사용했습니다. (무료)</p>



<p class="has-medium-font-size"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener">https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519</a>&nbsp;&lt;- TestAsset</p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1304" height="317" src="https://lycos7560.com/wp-content/uploads/image-388.png" alt="" class="wp-image-2824" srcset="https://lycos7560.com/wp-content/uploads/image-388.png 1304w, https://lycos7560.com/wp-content/uploads/image-388-300x73.png 300w, https://lycos7560.com/wp-content/uploads/image-388-768x187.png 768w" sizes="(max-width: 1304px) 100vw, 1304px" /></a></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>fresnel 공식 구현</strong></h2>



<div style="height:17px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">텍스쳐를 한장만 받는 기본형으로 쉐이더를 변경합니다.</p>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/RimLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        
        #pragma surface surf Lambert noambient
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1313" height="545" src="https://lycos7560.com/wp-content/uploads/image-436.png" alt="" class="wp-image-2905" srcset="https://lycos7560.com/wp-content/uploads/image-436.png 1313w, https://lycos7560.com/wp-content/uploads/image-436-300x125.png 300w, https://lycos7560.com/wp-content/uploads/image-436-768x319.png 768w" sizes="(max-width: 1313px) 100vw, 1313px" /></figure>



<div style="height:58px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">o.Albedo 를 0 으로 만들어서 검게 만들고 시작하는 것이 좋습니다. </p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1533" height="476" src="https://lycos7560.com/wp-content/uploads/image-438.png" alt="" class="wp-image-2907" srcset="https://lycos7560.com/wp-content/uploads/image-438.png 1533w, https://lycos7560.com/wp-content/uploads/image-438-300x93.png 300w, https://lycos7560.com/wp-content/uploads/image-438-768x238.png 768w" sizes="(max-width: 1533px) 100vw, 1533px" /></figure>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이전에 배운 Lambert 공식은 노멀 벡터와 조명 벡터를 dot 연산한 공식입니다.</p>



<p class="has-medium-font-size">이 공식을 간단하게 정의하면 두 벡터, 즉 노멀벡터와 조명 벡터의 각도가 같으면 밝고, 90도가 되면 어두워져서 검정색이 된다는 것입니다.</p>



<p class="has-medium-font-size">그렇다면 여기에서 input 구조체에서 다른 값을 받아 봅시다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/Manual/SL-SurfaceShaders.html</a> &lt;- 영문</p>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><a href="https://docs.unity3d.com/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1309" height="315" src="https://lycos7560.com/wp-content/uploads/image-439.png" alt="" class="wp-image-2908" srcset="https://lycos7560.com/wp-content/uploads/image-439.png 1309w, https://lycos7560.com/wp-content/uploads/image-439-300x72.png 300w, https://lycos7560.com/wp-content/uploads/image-439-768x185.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></a></figure>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<p><a href="https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html</a> &lt;- 한글</p>



<figure class="wp-block-image size-full"><a href="https://docs.unity3d.com/kr/2021.3/Manual/SL-SurfaceShaders.html" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1302" height="315" src="https://lycos7560.com/wp-content/uploads/image-440.png" alt="" class="wp-image-2909" srcset="https://lycos7560.com/wp-content/uploads/image-440.png 1302w, https://lycos7560.com/wp-content/uploads/image-440-300x73.png 300w, https://lycos7560.com/wp-content/uploads/image-440-768x186.png 768w" sizes="(max-width: 1302px) 100vw, 1302px" /></a></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">표면 셰이더 입력 구조</p>



<p class="has-medium-font-size">입력 구조 Input에는 일반적으로 셰이더가 필요로 하는 텍스처 좌표가 있습니다. 텍스처 좌표의 이름은 텍스처 이름 앞에 “uv”가 붙는 형식으로 지어야 합니다(또는 두 번째 텍스처 좌표 세트를 사용하려면 “uv2”로 시작해야 합니다.)</p>



<div style="height:55px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="has-medium-font-size wp-block-heading">다음 값을 입력 구조에 추가할 수 있습니다.</h2>



<p class="has-medium-font-size">float3 viewDir&nbsp;&#8211; 뷰 방향을 포함합니다. 패럴랙스 이펙트, 림 조명 등의 컴퓨팅에 사용합니다.</p>



<p class="has-medium-font-size">float4와&nbsp;COLOR&nbsp;시맨틱 &#8211; 보간된 버텍스당 컬러를 포함합니다.</p>



<p class="has-medium-font-size">float4 screenPos&nbsp;&#8211; 반사 또는 스크린 공간 효과를 위한 스크린 공간 포지션을 포함합니다.&nbsp;GrabPass에는 적합하지 않습니다.&nbsp;ComputeGrabScreenPos&nbsp;함수를 사용하여 커스텀 UV를 직접 계산해야 합니다.</p>



<p class="has-medium-font-size">float3 worldPos&nbsp;&#8211; 월드 공간 포지션을 포함합니다.</p>



<p class="has-medium-font-size">float3 worldRefl&nbsp;&#8211;&nbsp;표면 셰이더가 o.Normal에 기록하지 않는 경우&nbsp;월드 반사 벡터를 포함합니다. 예를 들어 리플렉트-디퓨즈(Reflect-Diffuse) 셰이더가 있습니다.</p>



<p class="has-medium-font-size">float3 worldNormal&nbsp;&#8211;&nbsp;표면 셰이더가 o.Normal에 기록하지 않는 경우&nbsp;월드 노멀 벡터를 포함합니다.</p>



<p class="has-medium-font-size">float3 worldRefl; INTERNAL_DATA&nbsp;&#8211;&nbsp;표면 셰이더가 o.Normal에 기록하는 경우&nbsp;월드 반사 벡터를 포함합니다. 픽셀당 노멀 맵을 기반으로 반사 벡터를 얻으려면&nbsp;WorldReflectionVector (IN, o.Normal)를 사용해야 합니다. 예를 들어 리플렉트-범프드(Reflect-Bumped) 셰이더가 있습니다.</p>



<p class="has-medium-font-size">float3 worldNormal; INTERNAL_DATA&nbsp;&#8211;&nbsp;표면 셰이더가 o.Normal에 기록하는 경우&nbsp;월드 노멀 벡터를 포함합니다. 픽셀당 노멀 맵에 기반한 노멀 벡터를 얻으려면&nbsp;WorldNormalVector (IN, o.Normal)를 사용해야 합니다.</p>



<div style="height:84px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">우리가 사용할 값은 float3 viewDir 입니다.</p>



<p class="has-medium-font-size">float3 는 3차원 벡터 Input 구조체 안에 있는 것으로 봐서 엔진에서 받을 수 있는 데이터입니다.</p>



<div style="height:27px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="718" height="186" src="https://lycos7560.com/wp-content/uploads/image-441.png" alt="" class="wp-image-2911" srcset="https://lycos7560.com/wp-content/uploads/image-441.png 718w, https://lycos7560.com/wp-content/uploads/image-441-300x78.png 300w" sizes="(max-width: 718px) 100vw, 718px" /></figure>



<div style="height:71px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">float3 lightDir가 <strong>버텍스에서 바라보는 조명의 방향을 나타내는 길이가 1인 벡터</strong>라면</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1076" height="623" src="https://lycos7560.com/wp-content/uploads/image-442.png" alt="" class="wp-image-2912" srcset="https://lycos7560.com/wp-content/uploads/image-442.png 1076w, https://lycos7560.com/wp-content/uploads/image-442-300x174.png 300w, https://lycos7560.com/wp-content/uploads/image-442-768x445.png 768w" sizes="(max-width: 1076px) 100vw, 1076px" /></figure>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">float3 viewDir 은 <strong>버텍스에서 바라보는 카메라의 방향</strong>을 나타냅니다.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1071" height="646" src="https://lycos7560.com/wp-content/uploads/image-443.png" alt="" class="wp-image-2913" srcset="https://lycos7560.com/wp-content/uploads/image-443.png 1071w, https://lycos7560.com/wp-content/uploads/image-443-300x181.png 300w, https://lycos7560.com/wp-content/uploads/image-443-768x463.png 768w" sizes="(max-width: 1071px) 100vw, 1071px" /></figure>



<div style="height:38px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">그럼 Normal dot lightDir&nbsp; 대신&nbsp; Normal dot viewDir 을 하면</p>



<p class="has-medium-font-size">카메라가 마치 조명처럼 인식되어 내가 바라보는 방향이 계속 밝아진다는 것입니다.&nbsp;</p>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="878" height="445" src="https://lycos7560.com/wp-content/uploads/image-444.png" alt="" class="wp-image-2914" srcset="https://lycos7560.com/wp-content/uploads/image-444.png 878w, https://lycos7560.com/wp-content/uploads/image-444-300x152.png 300w, https://lycos7560.com/wp-content/uploads/image-444-768x389.png 768w" sizes="(max-width: 878px) 100vw, 878px" /></figure>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1488 / 832;" width="1488" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_20_50_14.mp4"></video></figure>



<div style="height:64px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">반전</h2>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="701" height="385" src="https://lycos7560.com/wp-content/uploads/image-445.png" alt="" class="wp-image-2916" srcset="https://lycos7560.com/wp-content/uploads/image-445.png 701w, https://lycos7560.com/wp-content/uploads/image-445-300x165.png 300w" sizes="(max-width: 701px) 100vw, 701px" /></figure>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1216 / 832;" width="1216" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_22_41_652.mp4"></video></figure>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/RimLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        
        #pragma surface surf Lambert noambient
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
            float3 viewDir;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float rim = dot(o.Normal, IN.viewDir);
            o.Emission = 1 - rim; // 결과 뒤집기
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:88px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위에서 조심할 내용은 dot 연산은 -1 까지 내려가서 나중에 결과가 이상해 질 수 가 있습니다.   saturate() 를 잊지마세요</p>



<div style="height:47px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">보는 각도를 바꿔도 언제나 외각이 밝아 보이면서 이제 Rim 라이트처럼 보이기 시작합니다.</p>



<p class="has-medium-font-size">그런데 Rim라이트가 너무 두꺼워서 Rim 라이트 느낌이 살아나지 않습니다.</p>



<p class="has-medium-font-size">흰테두리를 더 얇게 만들어줄 필요가 있습니다.</p>



<div style="height:55px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">검정부터 흰색까지 변하는 음영을 표로 보면 아래와 같습니다.</p>



<p class="has-medium-font-size">가로축은 1 &#8211; dot(o.Normal, IN.viewDir) 이고 세로축은 색상 (흑백)을 의미합니다. 두 벡터의 각도 차이가 벌어질수록, 색상도 흰색이 됩니다. </p>



<div style="height:65px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="563" height="457" src="https://lycos7560.com/wp-content/uploads/image-446.png" alt="" class="wp-image-2918" srcset="https://lycos7560.com/wp-content/uploads/image-446.png 563w, https://lycos7560.com/wp-content/uploads/image-446-300x244.png 300w" sizes="(max-width: 563px) 100vw, 563px" /></figure>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">pow 를 이용하면 지수함수와 같은 그래프로 어두운 부분이 한참동안 존재하다가 갑자기 밝아지는 모양이 됩니다.</p>



<p class="has-medium-font-size">이 그래프를 이용하여 흰 테두리를 얇게 만듭니다.</p>



<div style="height:26px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="563" height="383" src="https://lycos7560.com/wp-content/uploads/image-447.png" alt="" class="wp-image-2919" srcset="https://lycos7560.com/wp-content/uploads/image-447.png 563w, https://lycos7560.com/wp-content/uploads/image-447-300x204.png 300w" sizes="(max-width: 563px) 100vw, 563px" /></figure>



<div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1538" height="639" src="https://lycos7560.com/wp-content/uploads/image-448.png" alt="" class="wp-image-2920" srcset="https://lycos7560.com/wp-content/uploads/image-448.png 1538w, https://lycos7560.com/wp-content/uploads/image-448-300x125.png 300w, https://lycos7560.com/wp-content/uploads/image-448-768x319.png 768w, https://lycos7560.com/wp-content/uploads/image-448-1536x638.png 1536w" sizes="(max-width: 1538px) 100vw, 1538px" /></figure>



<div style="height:64px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">이제 rim 라이트에 색상을 추가합니다.</h2>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="895" height="891" src="https://lycos7560.com/wp-content/uploads/image-449.png" alt="" class="wp-image-2921" srcset="https://lycos7560.com/wp-content/uploads/image-449.png 895w, https://lycos7560.com/wp-content/uploads/image-449-300x300.png 300w, https://lycos7560.com/wp-content/uploads/image-449-150x150.png 150w, https://lycos7560.com/wp-content/uploads/image-449-768x765.png 768w" sizes="(max-width: 895px) 100vw, 895px" /></figure>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="972" style="aspect-ratio: 1424 / 972;" width="1424" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_25_40_789.mp4"></video></figure>



<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">두께 조절 프로퍼티도 만들어줍니다.</p>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="908" height="1051" src="https://lycos7560.com/wp-content/uploads/image-450.png" alt="" class="wp-image-2923" srcset="https://lycos7560.com/wp-content/uploads/image-450.png 908w, https://lycos7560.com/wp-content/uploads/image-450-259x300.png 259w, https://lycos7560.com/wp-content/uploads/image-450-768x889.png 768w" sizes="(max-width: 908px) 100vw, 908px" /></figure>



<div style="height:27px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="972" style="aspect-ratio: 1728 / 972;" width="1728" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_26_59_679.mp4"></video></figure>



<div style="height:59px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">NormalMap 추가</h2>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Rim 연산에서 o.Normal을 사용하기 때문에 반드시 Rim라이트 연산 이전에 NormalMap 을 적용시켜줘야 합니다.</p>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="762" height="1063" src="https://lycos7560.com/wp-content/uploads/image-451.png" alt="" class="wp-image-2925" srcset="https://lycos7560.com/wp-content/uploads/image-451.png 762w, https://lycos7560.com/wp-content/uploads/image-451-215x300.png 215w" sizes="(max-width: 762px) 100vw, 762px" /></figure>



<div style="height:34px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="836" style="aspect-ratio: 1480 / 836;" width="1480" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_29_23_149.mp4"></video></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이제 dot 연산에서 -1로 넘어가는 부분을 막아주고 noambient 까지 지워서 완성합니다.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="818" height="1057" src="https://lycos7560.com/wp-content/uploads/image-452.png" alt="" class="wp-image-2927" srcset="https://lycos7560.com/wp-content/uploads/image-452.png 818w, https://lycos7560.com/wp-content/uploads/image-452-232x300.png 232w, https://lycos7560.com/wp-content/uploads/image-452-768x992.png 768w" sizes="(max-width: 818px) 100vw, 818px" /></figure>



<div style="height:74px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="836" style="aspect-ratio: 1480 / 836;" width="1480" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_30_45_465.mp4"></video></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이것이 Rim 라이트라고 부르는 Fresnel 이 적용된 결과 입니다.</p>



<p class="has-medium-font-size">게임에서 캐릭터가 데미지를 입었을 때나 선택할 때, 혹은 단순히 배경과 분리된 느낌을 원할 때 자주 사용되는 방식이지만</p>



<p class="has-medium-font-size">실제 존재하는 Rim 라이트를 구현했다고 부르기에는 약간 부족합니다.</p>



<p class="has-medium-font-size">우리가 만든 Rim 라이트는 조명의 방향과 전혀 연관이 없습니다.</p>



<p class="has-medium-font-size">이상적인 Rim 라이트는 역광일 때 주로 나타나고 직광일 때는 보이지 않습니다. (나중에 커스텀 라이트를 만들 때 가능합니다.)</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity-shader-rim-light-fresnel/2900/">12 &#8211; 01 ~ 02 Rim 라이트의 기초 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity_shader/unity-shader-rim-light-fresnel/2900/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_20_50_14.mp4" length="2364166" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_22_41_652.mp4" length="3371153" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_25_40_789.mp4" length="1297617" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_26_59_679.mp4" length="1234314" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_29_23_149.mp4" length="825114" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_14_30_45_465.mp4" length="3354833" type="video/mp4" />

			</item>
		<item>
		<title>11 &#8211; 03 ~ 04 Half-Lambert(하프 램버트) 연산 및 완성 (Unity Shader)</title>
		<link>https://lycos7560.com/unity/unity_shader/unity_shader-half-lambert/2873/</link>
					<comments>https://lycos7560.com/unity/unity_shader/unity_shader-half-lambert/2873/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 05:04:08 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[atten]]></category>
		<category><![CDATA[Half-Lambert]]></category>
		<category><![CDATA[Lambert]]></category>
		<category><![CDATA[light]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Standard Surface Shader]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[공식]]></category>
		<category><![CDATA[램버트]]></category>
		<category><![CDATA[쉐이더]]></category>
		<category><![CDATA[연산]]></category>
		<category><![CDATA[영상]]></category>
		<category><![CDATA[유니티]]></category>
		<category><![CDATA[하프]]></category>
		<category><![CDATA[하프 램버트]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=2873</guid>

					<description><![CDATA[<p>Unity Shader에서 Half-Lambert(하프 램버트) 연산이 적용되는 방식을 간략하게 예제로 설명합니다.</p>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-half-lambert/2873/">11 &#8211; 03 ~ 04 Half-Lambert(하프 램버트) 연산 및 완성 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">11 &#8211; 03 ~ 04 Half-Lambert(하프 램버트) 연산 및 완성 (Unity Shader)</h2>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Lambert 라이트는 꽤 가벼운 조명 공식이지만, cos 그래프 연산의 특성상 밝다가&nbsp;너무 갑자기 검게 음영이 떨어지는 단점이 있습니다.&nbsp;</p>



<p class="has-medium-font-size">그래서 이 단점을 해결하고자 만든 것이 Half-Lambert (하프 램버트) 공식입니다.</p>



<p class="has-medium-font-size">물리적으로는 옳지 않지만, 매우 가벼우며 보기 좋은 장점이 있습니다.</p>



<div style="height:24px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="870" height="407" src="https://lycos7560.com/wp-content/uploads/image-417.png" alt="" class="wp-image-2874" srcset="https://lycos7560.com/wp-content/uploads/image-417.png 870w, https://lycos7560.com/wp-content/uploads/image-417-300x140.png 300w, https://lycos7560.com/wp-content/uploads/image-417-768x359.png 768w" sizes="(max-width: 870px) 100vw, 870px" /></figure>



<div style="height:24px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">저번에 글에서 사용한 코드에서 시작하겠습니다.&nbsp;</p>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = saturate(dot(s.Normal, lightDir));
            return ndotl;
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">직접 확인해보기 위해서 아래 에셋을 사용했습니다. (무료)</p>



<p class="has-medium-font-size"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener">https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519</a>&nbsp;&lt;- TestAsset</p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1304" height="317" src="https://lycos7560.com/wp-content/uploads/image-388.png" alt="" class="wp-image-2824" srcset="https://lycos7560.com/wp-content/uploads/image-388.png 1304w, https://lycos7560.com/wp-content/uploads/image-388-300x73.png 300w, https://lycos7560.com/wp-content/uploads/image-388-768x187.png 768w" sizes="(max-width: 1304px) 100vw, 1304px" /></a></figure>



<div style="height:33px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1520" height="508" src="https://lycos7560.com/wp-content/uploads/image-418.png" alt="" class="wp-image-2875" srcset="https://lycos7560.com/wp-content/uploads/image-418.png 1520w, https://lycos7560.com/wp-content/uploads/image-418-300x100.png 300w, https://lycos7560.com/wp-content/uploads/image-418-768x257.png 768w" sizes="(max-width: 1520px) 100vw, 1520px" /></figure>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위의 이미지는 saturate() 함수로 인하여 0 이하의 값은 전부 0 이 되었습니다.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="885" height="860" src="https://lycos7560.com/wp-content/uploads/image-419.png" alt="" class="wp-image-2876" srcset="https://lycos7560.com/wp-content/uploads/image-419.png 885w, https://lycos7560.com/wp-content/uploads/image-419-300x292.png 300w, https://lycos7560.com/wp-content/uploads/image-419-768x746.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></figure>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">saturate() 를 다시 제거해서 다시 -1 ~ 1까지의 범위를 출력하도록 만들어 줍니다.</p>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1181" height="234" src="https://lycos7560.com/wp-content/uploads/image-420.png" alt="" class="wp-image-2877" srcset="https://lycos7560.com/wp-content/uploads/image-420.png 1181w, https://lycos7560.com/wp-content/uploads/image-420-300x59.png 300w, https://lycos7560.com/wp-content/uploads/image-420-768x152.png 768w" sizes="(max-width: 1181px) 100vw, 1181px" /></figure>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1097" height="578" src="https://lycos7560.com/wp-content/uploads/image-421.png" alt="" class="wp-image-2878" srcset="https://lycos7560.com/wp-content/uploads/image-421.png 1097w, https://lycos7560.com/wp-content/uploads/image-421-300x158.png 300w, https://lycos7560.com/wp-content/uploads/image-421-768x405.png 768w" sizes="(max-width: 1097px) 100vw, 1097px" /></figure>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">변경 전</p>



<div style="height:45px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="840" style="aspect-ratio: 1272 / 840;" width="1272" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_40_14_926.mp4"></video></figure>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">그리고 라이팅의 결과물에&nbsp; Half- Lamber ( 하프 람버트 ) 공식인&nbsp;&nbsp;<strong>* 0.5 + 0.5</strong>&nbsp; 를 적용해줍니다.</p>



<div style="height:52px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="948" height="167" src="https://lycos7560.com/wp-content/uploads/image-422.png" alt="" class="wp-image-2880" srcset="https://lycos7560.com/wp-content/uploads/image-422.png 948w, https://lycos7560.com/wp-content/uploads/image-422-300x53.png 300w, https://lycos7560.com/wp-content/uploads/image-422-768x135.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></figure>



<div style="height:76px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Half- Lamber ( 하프 람버트 공식) 적용 후</h2>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1304 / 832;" width="1304" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_43_51_403.mp4"></video></figure>



<div style="height:55px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><strong>* 0.5 + 0.5</strong>&nbsp; 의 식은 -1 에서부터 1까지의 숫자를 0 에서 부터 1까지의 범위로 만들어 줍니다.</p>



<p class="has-medium-font-size">아래의 푸른 cos 이 붉은 라인으로 끌어 올라오게 됩니다.</p>



<p class="has-medium-font-size">이로 인하여 매우 부드러운 결과 값이 나오게 됩니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="802" height="732" src="https://lycos7560.com/wp-content/uploads/image-423.png" alt="" class="wp-image-2882" srcset="https://lycos7560.com/wp-content/uploads/image-423.png 802w, https://lycos7560.com/wp-content/uploads/image-423-300x274.png 300w, https://lycos7560.com/wp-content/uploads/image-423-768x701.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">실제 사용할 때에는 빛의 영향을 좀 줄이고자 제곱을 해서 사용합니다.&nbsp;&nbsp;</p>



<div style="height:39px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1078" height="196" src="https://lycos7560.com/wp-content/uploads/image-424.png" alt="" class="wp-image-2883" srcset="https://lycos7560.com/wp-content/uploads/image-424.png 1078w, https://lycos7560.com/wp-content/uploads/image-424-300x55.png 300w, https://lycos7560.com/wp-content/uploads/image-424-768x140.png 768w" sizes="(max-width: 1078px) 100vw, 1078px" /></figure>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = dot(s.Normal, lightDir) * 0.5 + 0.5;
            return pow(ndotl, 3); // pow는 제곱
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">pow&nbsp; &nbsp;제곱 적용 후</p>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="828" style="aspect-ratio: 1304 / 828;" width="1304" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_45_59_585.mp4"></video></figure>



<div style="height:129px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Lambert 라이트 완성하기</h2>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위의 상황은 빛 방향에 따른 밝기만 구현되었을 뿐, 조명의 색상과 강고 / 빛 감쇄 Albedo 텍스쳐 는 전혀 적용되지 않았습니다.</p>



<p class="has-medium-font-size">아래에서 나머지 내용을 추가하겠습니다.&nbsp;</p>



<p class="has-medium-font-size">pow와 dot 계산식을 하나로 병합합니다.</p>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="968" height="171" src="https://lycos7560.com/wp-content/uploads/image-425.png" alt="" class="wp-image-2885" srcset="https://lycos7560.com/wp-content/uploads/image-425.png 968w, https://lycos7560.com/wp-content/uploads/image-425-300x53.png 300w, https://lycos7560.com/wp-content/uploads/image-425-768x136.png 768w" sizes="(max-width: 968px) 100vw, 968px" /></figure>



<div style="height:54px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">제 텍스쳐와 조명색상, 감쇠를 연산해서 조명을 완성해줍니다.</p>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1023" height="258" src="https://lycos7560.com/wp-content/uploads/image-426.png" alt="" class="wp-image-2886" srcset="https://lycos7560.com/wp-content/uploads/image-426.png 1023w, https://lycos7560.com/wp-content/uploads/image-426-300x76.png 300w, https://lycos7560.com/wp-content/uploads/image-426-768x194.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></figure>



<div style="height:78px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">전체 코드</p>



<div style="height:24px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = pow ( dot(s.Normal, lightDir) * 0.5 + 0.5 , 3 );
            float4 final;
            final.rgb = ndotl * s.Albedo * _LightColor0.rgb * atten;
            final.a = s.Alpha;
            return final; 
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="540" height="441" src="https://lycos7560.com/wp-content/uploads/image-427.png" alt="" class="wp-image-2887" srcset="https://lycos7560.com/wp-content/uploads/image-427.png 540w, https://lycos7560.com/wp-content/uploads/image-427-300x245.png 300w" sizes="(max-width: 540px) 100vw, 540px" /></figure>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">비어있던 MainTex도 넣어줍니다.</p>



<div style="height:44px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="828" style="aspect-ratio: 1336 / 828;" width="1336" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_49_10_310.mp4"></video></figure>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="935" height="134" src="https://lycos7560.com/wp-content/uploads/image-428.png" alt="" class="wp-image-2889" srcset="https://lycos7560.com/wp-content/uploads/image-428.png 935w, https://lycos7560.com/wp-content/uploads/image-428-300x43.png 300w, https://lycos7560.com/wp-content/uploads/image-428-768x110.png 768w" sizes="(max-width: 935px) 100vw, 935px" /></figure>



<div style="height:164px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>s.Albedo&nbsp;</strong></h2>



<p class="has-medium-font-size">Albedo 로 입력받은 텍스쳐 입니다.</p>



<p class="has-medium-font-size">SurfaceOutput이 s 로 들어왔으니 s.Albedo 가 됩니다.</p>



<p class="has-medium-font-size">여기서 들어온 Albedo 텍스쳐가 Lambert 라이트와 연산이 되어서 Diffuse (확산) 됩니다.&nbsp;</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>_LightColor0.rgb</strong></h2>



<p class="has-medium-font-size">이전에 연산했던 Ndotl 연산은 조명과 노멀의 각도를 표현한 것 뿐입니다.</p>



<p class="has-medium-font-size">조명의 색상이나 강도는 이 내장 변수를 이용해서 조명의 색상이나 강도를 가져옵니다.</p>



<p class="has-medium-font-size">이 변수를 곱한 후 조명의 생상과 강도를 변화시키면 그대로 반영됩니다.&nbsp;</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>atten</strong></h2>



<p class="has-medium-font-size">빛의 감쇠 현상을 시뮬레이트합니다.</p>



<p class="has-medium-font-size">빛의 감쇠가 일어나는 경우는 아래와 같습니다. (atten를 계산하지 않으면 다음 일이 일어나지 않습니다.)</p>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>1. self shadow가 생기지 않습니다.</strong></h2>



<p class="has-medium-font-size">자신의 그림자를 자신이 받지 않습니다.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1132" height="446" src="https://lycos7560.com/wp-content/uploads/image-429.png" alt="" class="wp-image-2890" srcset="https://lycos7560.com/wp-content/uploads/image-429.png 1132w, https://lycos7560.com/wp-content/uploads/image-429-300x118.png 300w, https://lycos7560.com/wp-content/uploads/image-429-768x303.png 768w" sizes="(max-width: 1132px) 100vw, 1132px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong><u>2. receive shadow가 동작하지 않습니다.</u></strong></h2>



<p class="has-medium-font-size">다른 물체가 그림자를 드리우지 못합니다.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1519" height="479" src="https://lycos7560.com/wp-content/uploads/image-430.png" alt="" class="wp-image-2891" srcset="https://lycos7560.com/wp-content/uploads/image-430.png 1519w, https://lycos7560.com/wp-content/uploads/image-430-300x95.png 300w, https://lycos7560.com/wp-content/uploads/image-430-768x242.png 768w" sizes="(max-width: 1519px) 100vw, 1519px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>3. 조명의 감쇠 현상이 일어나지 않습니다.</strong></h2>



<p class="has-medium-font-size">Directional 라이트에서는 확인이 불가능하고&nbsp; point 라이트에서 확인이 가능합니다.</p>



<p class="has-medium-font-size">point 라이트가 멀어질수록 어두워지는데 이것이 atten가 하는 일입니다.&nbsp;</p>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">atten 미적용</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1280 / 832;" width="1280" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_54_13_816.mp4"></video></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">atten 적용</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1280 / 832;" width="1280" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_55_17_400.mp4"></video></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">//&nbsp; noambient&nbsp; 제거</p>



<div style="height:33px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight //noambient  
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = pow ( dot(s.Normal, lightDir) * 0.5 + 0.5 , 3 );
            float4 final;
            final.rgb = ndotl * s.Albedo * _LightColor0.rgb * atten;
            final.a = s.Alpha;
            return final; 
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="832" style="aspect-ratio: 1480 / 832;" width="1480" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_56_59_799.mp4"></video></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<figure class="wp-block-image size-full"><img decoding="async" width="1084" height="114" src="https://lycos7560.com/wp-content/uploads/image-431.png" alt="" class="wp-image-2895" srcset="https://lycos7560.com/wp-content/uploads/image-431.png 1084w, https://lycos7560.com/wp-content/uploads/image-431-300x32.png 300w, https://lycos7560.com/wp-content/uploads/image-431-768x81.png 768w" sizes="(max-width: 1084px) 100vw, 1084px" /></figure>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이렇게 적용하면 얼굴이 밝아지면서 atten으로 생기는 얼굴의 그림자가 두드러지게 보이는 단점이 생길 것 입니다.</p>



<p class="has-medium-font-size">정답은 없고 atten를 제거해도 좋고 pow 함수를 이용하여 적절하게 숨기는 것도 하나의 방법입니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이제 완전한 Lambert 가 완성되었습니다.</p>



<p class="has-medium-font-size">이것은 유니티4까지 사용되었던 Bump Diffuse와 완전히 같은 쉐이더이며</p>



<p class="has-medium-font-size">유니티5에서도 Legacy Shaders / Bumped Diffuse와도 완전히 같은 쉐이더입니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-half-lambert/2873/">11 &#8211; 03 ~ 04 Half-Lambert(하프 램버트) 연산 및 완성 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity_shader/unity_shader-half-lambert/2873/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_40_14_926.mp4" length="1789228" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_43_51_403.mp4" length="1396326" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_45_59_585.mp4" length="1170911" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_49_10_310.mp4" length="1081007" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_54_13_816.mp4" length="527708" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_55_17_400.mp4" length="823267" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_13_56_59_799.mp4" length="1167010" type="video/mp4" />

			</item>
		<item>
		<title>11 &#8211; 01 ~ 02 커스텀 라이트 기본형 / Lambert 라이트 연산 (Unity Shader)</title>
		<link>https://lycos7560.com/unity/unity_shader/unity_shader-custom-lights-lambert-lights/2852/</link>
					<comments>https://lycos7560.com/unity/unity_shader/unity_shader-custom-lights-lambert-lights/2852/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 02:50:54 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[Lambert]]></category>
		<category><![CDATA[light]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Standard Surface Shader]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[기본형]]></category>
		<category><![CDATA[쉐이더]]></category>
		<category><![CDATA[유니티]]></category>
		<category><![CDATA[유니티 쉐이더 스타트업]]></category>
		<category><![CDATA[커스텀라이트]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=2852</guid>

					<description><![CDATA[<p>커스텀 라이트의 기본형과 Lambert 라이트를 구현하는 방법을 예제로 간략하게 설명한 글입니다.</p>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-custom-lights-lambert-lights/2852/">11 &#8211; 01 ~ 02 커스텀 라이트 기본형 / Lambert 라이트 연산 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:58px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">11 &#8211; 01 ~ 02 커스텀 라이트 기본형 / Lambert 라이트 연산 (Unity Shader)</h2>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">텍스처 한 장만 받는 기본형 쉐이더를 만듭니다.</p>



<div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">직접 확인해보기 위해서 아래 에셋을 사용했습니다. (무료)</p>



<p class="has-medium-font-size"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener">https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519</a>&nbsp;&lt;- TestAsset</p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><a href="https://assetstore.unity.com/packages/3d/characters/humanoids/barbarian-warrior-75519" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1304" height="317" src="https://lycos7560.com/wp-content/uploads/image-388.png" alt="" class="wp-image-2824" srcset="https://lycos7560.com/wp-content/uploads/image-388.png 1304w, https://lycos7560.com/wp-content/uploads/image-388-300x73.png 300w, https://lycos7560.com/wp-content/uploads/image-388-768x187.png 768w" sizes="(max-width: 1304px) 100vw, 1304px" /></a></figure>



<div style="height:58px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert noambient  
        // noambient - 주변광 또는 라이트 프로브를 적용하지 않습니다.
        #pragma target 3.0
        
        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:41px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1523" height="526" src="https://lycos7560.com/wp-content/uploads/image-404.png" alt="" class="wp-image-2853" srcset="https://lycos7560.com/wp-content/uploads/image-404.png 1523w, https://lycos7560.com/wp-content/uploads/image-404-300x104.png 300w, https://lycos7560.com/wp-content/uploads/image-404-768x265.png 768w" sizes="(max-width: 1523px) 100vw, 1523px" /></figure>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Lambert 라이트를 삭제하고 자신만의 라이트 이름을 지어서 커스텀 라이트를 구동시켜 보겠습니다.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="947" height="939" src="https://lycos7560.com/wp-content/uploads/image-405.png" alt="" class="wp-image-2854" srcset="https://lycos7560.com/wp-content/uploads/image-405.png 947w, https://lycos7560.com/wp-content/uploads/image-405-300x297.png 300w, https://lycos7560.com/wp-content/uploads/image-405-150x150.png 150w, https://lycos7560.com/wp-content/uploads/image-405-768x762.png 768w" sizes="(max-width: 947px) 100vw, 947px" /></figure>



<div style="height:49px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1530" height="476" src="https://lycos7560.com/wp-content/uploads/image-406.png" alt="" class="wp-image-2855" srcset="https://lycos7560.com/wp-content/uploads/image-406.png 1530w, https://lycos7560.com/wp-content/uploads/image-406-300x93.png 300w, https://lycos7560.com/wp-content/uploads/image-406-768x239.png 768w" sizes="(max-width: 1530px) 100vw, 1530px" /></figure>



<div style="height:68px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">바뀌거나 추가된 내용을 하나씩 보겠습니다.</p>



<div style="height:32px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="812" height="120" src="https://lycos7560.com/wp-content/uploads/image-407.png" alt="" class="wp-image-2856" srcset="https://lycos7560.com/wp-content/uploads/image-407.png 812w, https://lycos7560.com/wp-content/uploads/image-407-300x44.png 300w, https://lycos7560.com/wp-content/uploads/image-407-768x113.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>



<div style="height:26px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Lambert 대신에 _MyLight로 바뀌었습니다.</p>



<p class="has-medium-font-size">여기는 이름을 마음대로 지어도 상관없습니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="904" height="147" src="https://lycos7560.com/wp-content/uploads/image-408.png" alt="" class="wp-image-2857" srcset="https://lycos7560.com/wp-content/uploads/image-408.png 904w, https://lycos7560.com/wp-content/uploads/image-408-300x49.png 300w, https://lycos7560.com/wp-content/uploads/image-408-768x125.png 768w" sizes="(max-width: 904px) 100vw, 904px" /></figure>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">우리가 만든 커스텀 함수의 모습입니다.</p>



<p class="has-medium-font-size">이전까지는 void surf 사용했습니다.</p>



<p class="has-medium-font-size">이 함수는 float4로 시작합니다. 함수가 float4 를 반환 하므로 return float4&nbsp; 출력값을 가지고 있습니다.&nbsp;</p>



<p class="has-medium-font-size">이어서 나오는 이름도 Lighting + &#8220;커스텀 라이트 이름&#8221; 을 추가해 주어야 합니다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="542" height="57" src="https://lycos7560.com/wp-content/uploads/image-409.png" alt="" class="wp-image-2858" srcset="https://lycos7560.com/wp-content/uploads/image-409.png 542w, https://lycos7560.com/wp-content/uploads/image-409-300x32.png 300w" sizes="(max-width: 542px) 100vw, 542px" /></figure>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">SurfaceOutput 구조체를 통째로 받아옵니다.</p>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="835" height="365" src="https://lycos7560.com/wp-content/uploads/image-410.png" alt="" class="wp-image-2859" srcset="https://lycos7560.com/wp-content/uploads/image-410.png 835w, https://lycos7560.com/wp-content/uploads/image-410-300x131.png 300w, https://lycos7560.com/wp-content/uploads/image-410-768x336.png 768w" sizes="(max-width: 835px) 100vw, 835px" /></figure>



<div style="height:26px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="693" height="400" src="https://lycos7560.com/wp-content/uploads/image-411.png" alt="" class="wp-image-2860" srcset="https://lycos7560.com/wp-content/uploads/image-411.png 693w, https://lycos7560.com/wp-content/uploads/image-411-300x173.png 300w" sizes="(max-width: 693px) 100vw, 693px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">float3 lightDir 은 이전 파트에서 배웠던 조명 방향의 벡터 입니다.</p>



<p class="has-medium-font-size">단, 조명 계산을 편하게 사용하기 위해서 뒤집혀지고 길이가 1인 단위 벡터의 상태입니다.</p>



<div style="height:27px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="818" height="455" src="https://lycos7560.com/wp-content/uploads/image-412.png" alt="" class="wp-image-2861" srcset="https://lycos7560.com/wp-content/uploads/image-412.png 818w, https://lycos7560.com/wp-content/uploads/image-412-300x167.png 300w, https://lycos7560.com/wp-content/uploads/image-412-768x427.png 768w" sizes="(max-width: 818px) 100vw, 818px" /></figure>



<div style="height:23px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">float atten</p>



<p class="has-medium-font-size">atten ( attenuation ) 감쇠</p>



<p class="has-medium-font-size">그림자를 받거나 거리가 멀어지면서 점점 조명이 흐려지는 라이트의 거리별 감쇠 현상을 나타냅니다.</p>



<p class="has-medium-font-size">내가 빛을 받는 것을 없앨 때 사용하는 부분입니다.</p>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<p class="has-medium-font-size">Lambert&nbsp;라이트&nbsp;연산</p>



<p class="has-medium-font-size">우리가 만든 커스텀 라이트에서 변경합니다.</p>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1058" height="403" src="https://lycos7560.com/wp-content/uploads/image-413.png" alt="" class="wp-image-2862" srcset="https://lycos7560.com/wp-content/uploads/image-413.png 1058w, https://lycos7560.com/wp-content/uploads/image-413-300x114.png 300w, https://lycos7560.com/wp-content/uploads/image-413-768x293.png 768w" sizes="(max-width: 1058px) 100vw, 1058px" /></figure>



<div style="height:33px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        // noambient - 주변광 또는 라이트 프로브를 적용하지 않습니다.
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = dot(s.Normal, lightDir);
            // dot 노멀 백터와 라이트 벡터를 내적 연산
            // surf 에서 Normal 값을 받지 않아도 버텍스에서 노말값을 평범하게 받음

            return ndotl;
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:43px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="688" style="aspect-ratio: 1464 / 688;" width="1464" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_38_53_802.mp4"></video></figure>



<div style="height:47px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">lightDir은 버텍스에서 바라보는 조명의 방향인 뒤집힌 방향 이기 때문에 두 벤터를 단순하게 내적해주면 cos 값이 나오게 됩니다.</p>



<div style="height:36px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1533" height="530" src="https://lycos7560.com/wp-content/uploads/image-414.png" alt="" class="wp-image-2864" srcset="https://lycos7560.com/wp-content/uploads/image-414.png 1533w, https://lycos7560.com/wp-content/uploads/image-414-300x104.png 300w, https://lycos7560.com/wp-content/uploads/image-414-768x266.png 768w" sizes="(max-width: 1533px) 100vw, 1533px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위와 같은 코드는 가장 밝은 곳이 1 / 어두워 지는 경계선은 0 / 가장 어두운 곳은 -1 값으로 되어서</p>



<p class="has-medium-font-size">나중에 추가 라이트를 비추거나 할 때 문제가 됩니다.&nbsp;</p>



<p class="has-medium-font-size">이 현상을 방지하기 위해서&nbsp; saturate (값) 함수를 사용합니다.</p>



<p class="has-medium-font-size">max 함수도 사용하지만 최대 값이 없습니다.</p>



<p class="has-medium-font-size">max(0, dot(s.Normal, lightDir));</p>



<p class="has-medium-font-size">float&nbsp;ndotl&nbsp;=&nbsp;max(0,&nbsp;dot(s.Normal,&nbsp;lightDir));</p>



<div style="height:24px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="819" height="225" src="https://lycos7560.com/wp-content/uploads/image-415.png" alt="" class="wp-image-2865" srcset="https://lycos7560.com/wp-content/uploads/image-415.png 819w, https://lycos7560.com/wp-content/uploads/image-415-300x82.png 300w, https://lycos7560.com/wp-content/uploads/image-415-768x211.png 768w" sizes="(max-width: 819px) 100vw, 819px" /></figure>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        // noambient - 주변광 또는 라이트 프로브를 적용하지 않습니다.
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = saturate(dot(s.Normal, lightDir));

            // dot 노멀 백터와 라이트 벡터를 내적 연산
            // surf 에서 Normal 값을 받지 않아도 버텍스에서 노말값을 평범하게 받음
            // saturate 0 이하 값을 0으로 만들어줌
            
            // float ndotl = max(0, dot(s.Normal, lightDir));
            // max 함수도 있지만 최대 값이 없습니다.

            return ndotl;
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="688" style="aspect-ratio: 1464 / 688;" width="1464" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_41_55_314.mp4"></video></figure>



<div style="height:101px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">NormalMap 적용</p>



<div style="height:29px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/CustomLight"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf _MyLight noambient  
        // noambient - 주변광 또는 라이트 프로브를 적용하지 않습니다.
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {

            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            float3 d = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
            o.Normal = d;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }

        
        float4 Lighting_MyLight(SurfaceOutput s, float3 lightDir, float atten)
        {
            float ndotl = saturate(dot(s.Normal, lightDir));

            // dot 노멀 백터와 라이트 벡터를 내적 연산
            // surf 에서 Normal 값을 받지 않아도 버텍스에서 노말값을 평범하게 받음
            // saturate 0 이하 값을 0으로 만들어줌
            
            // float ndotl = max(0, dot(s.Normal, lightDir));
            // max 함수도 있지만 최대 값이 없습니다.

            return ndotl;
        }

        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="688" style="aspect-ratio: 1464 / 688;" width="1464" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_43_19_983.mp4"></video></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">환경광 제거</p>



<div style="height:52px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="924" height="185" src="https://lycos7560.com/wp-content/uploads/image-416.png" alt="" class="wp-image-2868" srcset="https://lycos7560.com/wp-content/uploads/image-416.png 924w, https://lycos7560.com/wp-content/uploads/image-416-300x60.png 300w, https://lycos7560.com/wp-content/uploads/image-416-768x154.png 768w" sizes="(max-width: 924px) 100vw, 924px" /></figure>



<div style="height:33px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="696" style="aspect-ratio: 1464 / 696;" width="1464" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_44_56_814.mp4"></video></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-custom-lights-lambert-lights/2852/">11 &#8211; 01 ~ 02 커스텀 라이트 기본형 / Lambert 라이트 연산 (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity_shader/unity_shader-custom-lights-lambert-lights/2852/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_38_53_802.mp4" length="1320242" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_41_55_314.mp4" length="1044809" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_43_19_983.mp4" length="2358455" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_44_56_814.mp4" length="1993886" type="video/mp4" />

			</item>
		<item>
		<title>9 &#8211; 02 ~ 03 Lambert (램버트) / Blinn-Phong(블린-퐁) (Unity Shader)</title>
		<link>https://lycos7560.com/unity/unity_shader/unity_shader-lambert-blinn-phong/2841/</link>
					<comments>https://lycos7560.com/unity/unity_shader/unity_shader-lambert-blinn-phong/2841/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 02:26:12 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[UnityShader]]></category>
		<category><![CDATA[_SpecColor]]></category>
		<category><![CDATA[Blinn-Phong]]></category>
		<category><![CDATA[Lambert]]></category>
		<category><![CDATA[light]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Specular]]></category>
		<category><![CDATA[Standard Surface Shader]]></category>
		<category><![CDATA[Unity Shader]]></category>
		<category><![CDATA[라이트]]></category>
		<category><![CDATA[쉐이더]]></category>
		<category><![CDATA[유니티]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=2841</guid>

					<description><![CDATA[<p>Unity의 Lambert 라이트와 blinn-pong 라이트를 간단하게 설명하면서 구현하는 글입니다.</p>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-lambert-blinn-phong/2841/">9 &#8211; 02 ~ 03 Lambert (램버트) / Blinn-Phong(블린-퐁) (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:47px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">9 &#8211; 02 ~ 03 Lambert (램버트) / Blinn-Phong(블린-퐁) (Unity Shader)</h2>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">유니티4 이전 시절에 존재하던 가벼운 라이팅 방식인 Lambert 라이팅</p>



<p class="has-medium-font-size">램버트 라이팅 초기 구조</p>



<div style="height:28px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="709" height="854" src="https://lycos7560.com/wp-content/uploads/image-399.png" alt="" class="wp-image-2842" srcset="https://lycos7560.com/wp-content/uploads/image-399.png 709w, https://lycos7560.com/wp-content/uploads/image-399-249x300.png 249w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<div style="height:37px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/Lambert"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Lambert
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:39px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">둔탁한 느낌의 이미지가 Lambert 라이트의 특징입니다.</p>



<p class="has-medium-font-size">o.Specular / o.Gloss 는 사용하지 않으므로 값을 넣어도 나타나지 않습니다.</p>



<p class="has-medium-font-size">겉으로는 크게 바뀐 것 같지 않지만 내장된 기본 라이팅 구조 중에서 가장 가벼운 라이트입니다. (저사양 기기에서도 잘 구동됩니다.)</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1307" height="874" src="https://lycos7560.com/wp-content/uploads/image-400.png" alt="" class="wp-image-2843" srcset="https://lycos7560.com/wp-content/uploads/image-400.png 1307w, https://lycos7560.com/wp-content/uploads/image-400-300x201.png 300w, https://lycos7560.com/wp-content/uploads/image-400-768x514.png 768w" sizes="(max-width: 1307px) 100vw, 1307px" /></figure>



<div style="height:72px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1339" height="872" src="https://lycos7560.com/wp-content/uploads/image-401.png" alt="" class="wp-image-2844" srcset="https://lycos7560.com/wp-content/uploads/image-401.png 1339w, https://lycos7560.com/wp-content/uploads/image-401-300x195.png 300w, https://lycos7560.com/wp-content/uploads/image-401-768x500.png 768w" sizes="(max-width: 1339px) 100vw, 1339px" /></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="836" style="aspect-ratio: 1440 / 836;" width="1440" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_15_46_258.mp4"></video></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">간단한 Blinn Phong 라이트 구현&nbsp;</h2>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="692" height="799" src="https://lycos7560.com/wp-content/uploads/image-402.png" alt="" class="wp-image-2846" srcset="https://lycos7560.com/wp-content/uploads/image-402.png 692w, https://lycos7560.com/wp-content/uploads/image-402-260x300.png 260w" sizes="(max-width: 692px) 100vw, 692px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/BlinnPhong"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf BlinnPhong
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };


        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:64px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">BlinnPhong 공식이 가동 되었지만 Specular는 보이지 않습니다.</p>



<p class="has-medium-font-size">Specular를 보기위해 추가로 데이터를 입력합니다.</p>



<div style="height:66px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="689" height="939" src="https://lycos7560.com/wp-content/uploads/image-403.png" alt="" class="wp-image-2847" srcset="https://lycos7560.com/wp-content/uploads/image-403.png 689w, https://lycos7560.com/wp-content/uploads/image-403-220x300.png 220w" sizes="(max-width: 689px) 100vw, 689px" /></figure>



<div style="height:49px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/BlinnPhong"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _SpecColor("SpecColor", color) = (1,1,1,1)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf BlinnPhong
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };


        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Specular = 0.5;
            o.Gloss = 1;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="828" style="aspect-ratio: 1488 / 828;" width="1488" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_18_55_461.mp4"></video></figure>



<div style="height:51px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">위의 코드에서 어디에서도 _SpecColor 를 받는 부분이 없습니다.</p>



<p class="has-medium-font-size">_SpecColor 는 절대로 코드에서 받으면 안 되고, 단지&nbsp; Properties 에서만 만들어야 한다는 것 입니다.</p>



<p class="has-medium-font-size">그리고 _SpecColor 라는 이름 외에 다른 이름을 써서도 안됩니다.</p>



<p class="has-medium-font-size"><strong>BlinnPong 내부의 코드를 열어보면 _SpecColor 이름이 예약어이며 절대로 코드 내부에서 받으면 안된다는 특이한 예외 사항이 존재합니다.</strong></p>



<p class="has-medium-font-size">o.Gloss 는 0~ 1 사이의 값을 넣어야 하며 Specular 의 강도를 의미합니다.</p>



<p class="has-medium-font-size">0이면 둔탁한 재질 / 1이면 매끄러운 재질을 의미합니다.</p>



<p class="has-medium-font-size">o.Specular는 0~ 1 사이의 값을 넣어야 하며 Specular 의 크기를 의미합니다.</p>



<p class="has-medium-font-size">0이면 크기가 커지고&nbsp; / 1이면 크기가 작아집니다.</p>



<div style="height:70px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">확인용 코드</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Shader "Custom/BlinnPhong"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _SpecColor("SpecColor", color) = (1,1,1,1)
        _SpecAmount("SpecAmount",Range(0,1)) = 0.5
        _GlossAmount("_GlossAmount",Range(0,1)) = 1
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf BlinnPhong
        #pragma target 3.0

        sampler2D _MainTex;
        float _SpecAmount;
        float _GlossAmount;

        struct Input
        {
            float2 uv_MainTex;
        };


        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Specular = _SpecAmount;
            o.Gloss = _GlossAmount;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}</pre>



<div style="height:72px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-video"><video height="688" style="aspect-ratio: 1464 / 688;" width="1464" controls src="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_21_22_869.mp4"></video></figure>



<div style="height:133px" aria-hidden="true" class="wp-block-spacer"></div>
<p>The post <a href="https://lycos7560.com/unity/unity_shader/unity_shader-lambert-blinn-phong/2841/">9 &#8211; 02 ~ 03 Lambert (램버트) / Blinn-Phong(블린-퐁) (Unity Shader)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity_shader/unity_shader-lambert-blinn-phong/2841/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_15_46_258.mp4" length="1365005" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_18_55_461.mp4" length="2616931" type="video/mp4" />
<enclosure url="https://lycos7560.com/wp-content/uploads/녹화_2022_12_01_11_21_22_869.mp4" length="900683" type="video/mp4" />

			</item>
	</channel>
</rss>
