<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">EPPEngine</title>
      <subtitle type="html">각종 기술문서 및 잡담</subtitle>
      <updated>2012-02-06T16:09:05P</updated>
   <id>http://www.eppengine.com/zbxe/?module=rss&amp;act=atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://www.eppengine.com/zbxe/"/>
   <link rel="self" type="application/atom+xml" href="http://www.eppengine.com/zbxe/?module=rss&amp;act=atom"/>
   <generator uri="http://www.xpressengine.com/" version="1.2.4">XpressEngine</generator>
   <entry>
      <title>deferred 에 대한 단상</title>
      <id>http://www.eppengine.com/zbxe/16616</id>
      <published>2011-09-20T17:23:19P</published>
      <updated>2011-09-20T17:23:19P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/16616"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/16616#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;allgd.net 라는 사이트를 통해 여러 개발자 분들의 생각을 많이 보고 느끼고 있는 도중&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://cagetu.egloos.com/&quot;&gt;http://cagetu.egloos.com/&lt;/a&gt;&amp;nbsp;라는 분의 사이트에서 deferred 에 대한 공감가는 부분들이 있어 글을 적습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;요즘 게임에서 지연렌더링이 필수인가 라고 한다면.. 전 아닌것 같다는 의견입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필수가 아니라는 거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 내부지형에서 많은 수의 라이트가 동적으로 오브젝트들에 빛을 조사하는 형태가 필요한 게임이라면,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;혹은 외부지형에서라도 특정 이벤트에 따른 수십개의 빛이 동적으로 계산되어야 하는 경우라면, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또 다른 부분이라 생각듭니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 위의 경우라 하더라도, 실제 단일 객체가 영향을 받는 라이트 수는 사실 생각보다 많지는 않습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;책상, 의자, 가구, 말, 자동차 등과 같이 일반적인 크기의 단일 객체라면, 실제 태양광 과 역광을 제외한 영향을 받는 라이트가&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3개 이상만 되어도 크게 잘 느껴지지가 않더군요. 그래서 대략 5개 정도라면 (태양광, 역광을 포함한 7개정도?) 충분히 다양한&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;느낌을 표현 할 수 있지 않을까 생각이 듭니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 큰 건물 이라던지, 지형 이라던지 와 같은 큰 객체의 경우라면 적용되는 라이트가 넓은 공간에 걸쳐서 많이 존재하기에&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;작은수의 라이트로는 표현이 안 될지 모르지만, 그 부분의 경우라도, 데칼을 통한 실시간 라이트 묘사 등을 같이 활용한다면&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;충분히 표현 할 수 있지 않을까 라고 생각이 듭니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 최근 게임들이 글로벌 라이팅에 대한 여러가지 시도를 많이 하고는 있고, 그에 따른 라이트 사용수가 엄청나게 증가는&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하고 있지만, 이 역시 화면 후처리를 통해 어느정도의 수준까지는 표현 할 수 가 있지 않나 생각 합니다. (아니면 라이트맵 -_-;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그러므로 제 점수는.... -_-;; 제 결론은&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;게임에 따라서 렌더링 방식을 정하는 것은 당연 하겠지만, 일반적인 상황에서조차 최신 기술 혹은 &quot;&amp;nbsp;빠르다던데&quot;.. 등의 이유에서&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지연렌더링으로 가는 것은 좋은 생각이 아닌것 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;충분히 foward 로도 표현이 ... ...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;p.s. deferred 로 변경하면 퀄리티가 좋아진다더라.. 라고 이야기 하는 분들도 있었습니다. 물론 deferred 방식의 도입을 통해&lt;/p&gt;
&lt;p&gt;얻어지는 여러가지 부산물로 다양한 후처리를 할 수는 있지만, deferred == 높은 퀄리티 를 이야기 하는 분들을 보면&lt;/p&gt;
&lt;p&gt;좀 아니다 싶더군요. deferred 는 단지 빛 계산을 보다 효율적으로 처리하기 위한 방식일 뿐인데 말이죠..&lt;/p&gt;
&lt;p&gt;빛 계산이 효율적일 뿐, foward 랑 다른 공식을 쓰는 것도 아니고..&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>HSV 공간을 RGB 공간으로, RGB 공간을 HSV 공간으로 전환.</title>
      <id>http://www.eppengine.com/zbxe/16238</id>
      <published>2011-07-30T11:50:55P</published>
      <updated>2011-07-30T11:53:15P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/16238"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/16238#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;출처 : &lt;a href=&quot;http://ploobs.com.br/?p=1499&quot;&gt;http://ploobs.com.br/?p=1499&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;float3 Hue(float H)&lt;br  /&gt;{&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float R = abs(H * 6 - 3) - 1;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float G = 2 - abs(H * 6 - 2);&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float B = 2 - abs(H * 6 - 4);&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return saturate(float3(R,G,B));&lt;br  /&gt;}&lt;br  /&gt;&lt;br  /&gt;float4 HSVtoRGB(in float3 HSV)&lt;br  /&gt;{&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return float4(((Hue(HSV.x) - 1) * HSV.y + 1) * HSV.z,1);&lt;br  /&gt;}&lt;br  /&gt;&lt;br  /&gt;float4 RGBtoHSV(in float3 RGB)&lt;br  /&gt;{&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float3 HSV = 0;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.z = max(RGB.r, max(RGB.g, RGB.b));&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float M = min(RGB.r, min(RGB.g, RGB.b));&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float C = HSV.z - M;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (C != 0)&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.y = C / HSV.z;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float3 Delta = (HSV.z - RGB) / C;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delta.rgb -= Delta.brg;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delta.rg += float2(2,4);&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (RGB.r &amp;gt;= HSV.z)&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.x = Delta.b;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (RGB.g &amp;gt;= HSV.z)&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.x = Delta.r;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.x = Delta.g;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HSV.x = frac(HSV.x / 6);&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return float4(HSV,1);&lt;br  /&gt;}&lt;br  /&gt;&lt;br  /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>게임메카 기사 떳습니다. ㅠ,.ㅠ 주르륵</title>
      <id>http://www.eppengine.com/zbxe/15228</id>
      <published>2011-05-20T21:18:03P</published>
      <updated>2011-05-23T02:30:39P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/15228"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/15228#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://www.gamemeca.com/news/news_view.html?seq=35&amp;amp;ymd=20110520&amp;amp;page=1&amp;amp;point_ck=1&amp;amp;search_ym=&amp;amp;sort_type=&amp;amp;search_text=&amp;amp;send=&amp;amp;mission_num=&amp;amp;mission_seq&quot;&gt;http://www.gamemeca.com/news/news_view.html?seq=35&amp;amp;ymd=20110520&amp;amp;page=1&amp;amp;point_ck=1&amp;amp;search_ym=&amp;amp;sort_type=&amp;amp;search_text=&amp;amp;send=&amp;amp;mission_num=&amp;amp;mission_seq&lt;/a&gt;=&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기사를 써준 강민호 기자님께 감사를 전하며...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주르륵.. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;국내 게임업계에 보탬이 될만한 업체가 되도록 최선을 다하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;감사합니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>16-Bit Color Encoding on the GPU</title>
      <id>http://www.eppengine.com/zbxe/8105</id>
      <published>2011-01-16T10:30:19P</published>
      <updated>2011-01-16T10:30:19P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/8105"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/8105#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;pre style=&quot;FONT-FAMILY: monospace&quot; class=&quot;c&quot;&gt;출처 : &lt;a href=&quot;http://theinstructionlimit.com/?p=33&quot;&gt;http://theinstructionlimit.com/?p=33&lt;/a&gt;&lt;/pre&gt;&lt;pre style=&quot;FONT-FAMILY: monospace&quot; class=&quot;c&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;FONT-FAMILY: monospace&quot; class=&quot;c&quot;&gt;float2 EncodeR5G6B5&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;float3 rgb24&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;COLOR: #009900&quot;&gt;{&lt;/span&gt;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// scale up to 8-bit&lt;/span&gt;
	rgb24 &lt;span style=&quot;COLOR: #339933&quot;&gt;*=&lt;/span&gt; &lt;span style=&quot;COLOR: #800080&quot;&gt;255.0f&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// remove the 3 LSB of red and blue, and the 2 LSB of green&lt;/span&gt;
	int3 rgb16 &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; rgb24 &lt;span style=&quot;COLOR: #339933&quot;&gt;/&lt;/span&gt; int3&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;COLOR: #0000dd&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// split the green at bit 3 (we&apos;ll keep the 6 bits around the split)&lt;/span&gt;
	&lt;span style=&quot;COLOR: #993333&quot;&gt;float&lt;/span&gt; greenSplit &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;g&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;COLOR: #800080&quot;&gt;8.0f&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// pack it up (capital G&apos;s are MSB, the rest are LSB)&lt;/span&gt;
	float2 packed&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	packed.&lt;span style=&quot;COLOR: #202020&quot;&gt;x&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;r&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;8&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;+&lt;/span&gt; floor&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;greenSplit&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;		&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// rrrrrGGG&lt;/span&gt;
	packed.&lt;span style=&quot;COLOR: #202020&quot;&gt;y&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; frac&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;greenSplit&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;256&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;+&lt;/span&gt; rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;		&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// gggbbbbb&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// scale down and return&lt;/span&gt;
	packed &lt;span style=&quot;COLOR: #339933&quot;&gt;/=&lt;/span&gt; &lt;span style=&quot;COLOR: #800080&quot;&gt;255.0f&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;COLOR: #b1b100&quot;&gt;return&lt;/span&gt; packed&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;COLOR: #009900&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
float3 DecodeR5G6B5&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;float2 packed&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;COLOR: #009900&quot;&gt;{&lt;/span&gt;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// scale up to 8-bit&lt;/span&gt;
	packed &lt;span style=&quot;COLOR: #339933&quot;&gt;*=&lt;/span&gt; &lt;span style=&quot;COLOR: #800080&quot;&gt;255.0f&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// round and split the packed bits&lt;/span&gt;
	float2 split &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; round&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;packed&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// first component at bit 3&lt;/span&gt;
	split.&lt;span style=&quot;COLOR: #202020&quot;&gt;y&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;/=&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;				&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// second component at bit 5&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// unpack (obfuscated yet optimized crap follows)&lt;/span&gt;
	float3 rgb16 &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; 0.0f.&lt;span style=&quot;COLOR: #202020&quot;&gt;rrr&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;gb&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;=&lt;/span&gt; frac&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;split&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;rg&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;+=&lt;/span&gt; floor&lt;span style=&quot;COLOR: #009900&quot;&gt;(&lt;/span&gt;split&lt;span style=&quot;COLOR: #009900&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	rgb16.&lt;span style=&quot;COLOR: #202020&quot;&gt;r&lt;/span&gt; &lt;span style=&quot;COLOR: #339933&quot;&gt;*=&lt;/span&gt; &lt;span style=&quot;COLOR: #0000dd&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;// scale down and return&lt;/span&gt;
	rgb16 &lt;span style=&quot;COLOR: #339933&quot;&gt;/=&lt;/span&gt; &lt;span style=&quot;COLOR: #800080&quot;&gt;255.0f&lt;/span&gt;&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;COLOR: #b1b100&quot;&gt;return&lt;/span&gt; rgb16&lt;span style=&quot;COLOR: #339933&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;COLOR: #009900&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>게임 엔진..(잡생각 + 잡고찰)</title>
      <id>http://www.eppengine.com/zbxe/7940</id>
      <published>2010-12-29T19:02:54P</published>
      <updated>2011-01-15T16:54:35P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/7940"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/7940#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;게임 엔진이라는게, 단순히 렌더러만 있다고해서 엔진이라고 할 수 는 없습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전부는 아니더라도, 게임에 필요한 각종 기능을 담아야 하는 것은 물론이거니와,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런 기능들 조차 적지 않습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기능 이외에도 툴을 제공해야 하는데, 이 툴이 가장 문제입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;툴이라는게, 단순히 리소스를 만들어내는 도구는 아니라고 생각합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;툴에서 어떤 정보들을 뽑아낼 수 있느냐에 따라서 작업방향, 작업 프로세스가 결정되게 되는거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 정보의 범위가 요즘은 상당히 넓습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EPPENGINE 의 경우는 각종 LOD 정보 ( 셰이더 교체, 오브젝트 교체, 폴리곤LOD, 셰이더 Pass LOD, Animation Frame LOD, Bone LOD ...)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;를 툴에서 설정 할 뿐아니라,&amp;nbsp; 인스턴싱으로 그릴지 말지에 대한 설정들도 툴에서 하게 됩니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 헤어렌더링과 같이 복잡한 렌더스테이트를 가진 정보역시, 툴에서 설정하게 됩니다. (심지어 스키닝을 GPU 에서 할지 CPU 에서 할지&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;에 대한 정보도)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 많은 정보들이 툴에서 생성되다 보니, 디자이너가 프로그래머를 기다리던 상황도 많이 해소가 되며, 프로그래머가 하던 각종&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;설정들도 엔진에서 자동으로 처리되게 됩니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 이또한 문제가 있더군요. 그래픽쪽에 넘겨준 각종 설정들은 프로그램적 지식없이 접근하기 힘들다는 점 입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이처럼 툴이라는게, 어느 정보를 담느냐에 전체 작업프로세스가 달라지게 되는거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;툴 다음은 역시 API 가 되겠네요. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;얼마나 명확하게 API 가 구성되어 있고, 이런 것들이 얼마나 편하게 엔진 안쪽에서 알아서 잘~ 처리해 주느냐가 관건 인데요,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것 또한 쉽지 않은 문제더군요. 뭐 저희야 나름 잘 하고 있다고 생각들지만, 이건 정말 끝이 없는것 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나중에는 create_good_game(&amp;nbsp; MMORPG ) 하면 좋은게임이 툭 하고 나와버리는.... 그런 API 하나 나오면.......&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여튼 게임엔진이라는게, 기획, 그래픽, 프로그램 등 프로젝트의 많은 구성원들이 함께쓰는 도구이다 보니, 참 힘든것 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>winsock.h 와 windows.h includ 순서에 따른 문제 해결</title>
      <id>http://www.eppengine.com/zbxe/6312</id>
      <published>2010-11-16T02:58:06P</published>
      <updated>2010-12-03T11:01:43P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/6312"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/6312#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;h4&gt;winsock.h 중복 재정의 에러&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;원인&lt;/strong&gt;windows.h 가 구버전의 winsock.h 를 포함하고 있기 때문이다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;해결방법&lt;/strong&gt;&lt;span style=&quot;BACKGROUND-COLOR: rgb(255,255,255)&quot;&gt;&lt;span style=&quot;FONT-FAMILY: verdana; COLOR: #006bd4&quot;&gt;#include &amp;lt;windows.h&lt;span style=&quot;WIDTH: 1px; FLOAT: right; HEIGHT: 1px&quot; id=&quot;callbacknestelkytistorycom1468745&quot;&gt;&lt;/span&gt; &amp;gt;&lt;/span&gt;&lt;font color=&quot;#333333&quot; face=&quot;&quot;&gt; 문장 위에 아래 문장을 추가해 준다.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;BACKGROUND-COLOR: rgb(255,255,255); FONT-FAMILY: verdana; COLOR: #006bd4&quot;&gt;#ifndef _WINSOCKAPI_&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;BACKGROUND-COLOR: rgb(255,255,255); FONT-FAMILY: verdana; COLOR: #006bd4&quot;&gt;#define _WINSOCKAPI&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;BACKGROUND-COLOR: rgb(255,255,255); FONT-FAMILY: verdana; COLOR: #006bd4&quot;&gt;#endif&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Reconstructing Position from depth</title>
      <id>http://www.eppengine.com/zbxe/5647</id>
      <published>2010-10-01T07:45:03P</published>
      <updated>2010-12-03T11:01:43P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/5647"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/5647#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div style=&quot;MARGIN: 0px&quot; id=&quot;cContent&quot;&gt;
&lt;div style=&quot;MARGIN: 0px&quot; id=&quot;contentDiv&quot; class=&quot;cContentBody&quot;&gt;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://editor.daum.net/services/blog/css/contents4view.css?ver=1.1.182&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
	&lt;!--
		div { color: #555555; }
		li { color: #555555; }
		a, a:link, a:hover, a:visited { color: #555555; }
		td { color: #555555; }
		.txc-search-border { border-color: #555555; }
		.me2day_daily_digest p, .me2day_daily_digest a, .me2day_daily_digest a:hover { font: 11px &apos;돋움&apos;, dotum, sans-serif; }
	//--&gt;
	&lt;/style&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;출처 : &lt;a href=&quot;http://blog.daum.net/rockeracer/38&quot;&gt;http://blog.daum.net/rockeracer/38&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일반적으로 Deferred 시스템에서 오브젝트의 위치값은 따로 저장하지 않고 깊이값을 이용해 계산해내는 방식을 사용한다. 추가적인 RenderTarget 사용을 없앨 수 있기 때문이다. 깊이값으로 위치값을 계산하는데는 여러 방법이 있는데 그 중 몇가지만 소개하고자한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;1. Projection-Inverse 행렬 사용&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;가장 간단한 방법은 깊이 버퍼에 저장되는 값을 계산하는 과정을&amp;nbsp;거꾸로 적용하는 것이다. 깊이 버퍼에는 위치에 View-Projection 행렬을 적용한 값을 저장하고, 위치를 계산할 때는 깊이 버퍼에 저장된 값에 Projection 행렬의 역행렬을 적용하는 것이다. Projection 행렬의 역행렬을 적용하면 View-공간 위치를 얻을 수 있고 View-Projection행렬의 역행렬을 적용하면 World-공간 위치를 얻을 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;코드를&amp;nbsp;보면...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 깊이 저장&lt;/p&gt;
&lt;p&gt;VSOUTPUT VS(VSINPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;output.position =&amp;nbsp;mul(input.position, matWVP);&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;output.depth = output.position.z/output.position.w;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;output.depth =&amp;nbsp; input.depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 위치 계산&lt;/p&gt;
&lt;p&gt;float4 PS (VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;float depth = tex2D(DepthBuffer, input.screencoord);&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;float4 PosInProj = {input.screencoord.x, input.screencoord.y, depth , 1};&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;float4 PosInView = mul(PosInProj , matProjInverse);&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;PosInView /= PosInView .w;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;가장 간단한 방식이긴 하지만 행렬 연산이기&amp;nbsp;때문에&amp;nbsp;비용이 크다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;2. 카메라에서 원평면으로의 광선&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;또 다른 방법은 정점 쉐이더에서 카메라에서 원평면까지의 벡터를 계산하고 픽셀 쉐이더에서 이 벡터와 깊이값을 사용해 위치를 계산하는 방법이다. 깊이 버퍼에는 Linear-깊이 값을 저장하고, 카메라-To-원평면 벡터에 이 깊이 값을 곱하면 위치값을 구할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style=&quot;FLOAT: none; CLEAR: none; CURSOR: pointer&quot; id=&quot;A_135775314C9B398D7CBD99&quot; class=&quot;tx-daum-image&quot; border=&quot;0&quot; hspace=&quot;1&quot; vspace=&quot;1&quot; src=&quot;http://cfile233.uf.daum.net/image/135775314C9B398D7CBD99&quot; width=&quot;486&quot; isset=&quot;true&quot; actualwidth=&quot;486&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: center&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;우선, 이 방법은 스크린-공간 사각형을 렌더링할 때 사용할 수 있다. 정점 쉐이더에서 카메라-To-정점 벡터를 구해서 픽셀 쉐이더에 넘겨주고, 픽셀 쉐이더에서는&amp;nbsp;이 벡터들이 선형 보간되어&amp;nbsp;해당 픽셀을 지나는 카메라-To-원평면 벡터(위 그림의 파란 백터)가 된다. 그럼 구하고자 하는 위치(위 그림의 빨간점)는 이 벡터위에 있게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;이제 이 벡터의 길이만 조절해주면 카메라-To-위치 벡터(위 그림의 녹색 벡터)가 된다. 이 때 사용하는 것이 깊이-버퍼에 저장된 값이다. 깊이-버퍼에는 해당 위치의 Linear-깊이 값이 저장된다. 위 그림에서 보면 Depth/Far_Distance 값이 저장된다. 카메라-To-원평면 벡터에 이 값을 곱하기만 하면 카메라-To-위치 벡터가 된다. 정점 쉐이더에서 카메라-To-정점 벡터가 View-공간에서 계산되었다면 카메라-To-위치 벡터가 그대로 View-공간 위치가 된다. 카메라-To-정점 벡터가 World-공간에서 계산되었다면 카메라의 World-공간 위치에 카메라-To-위치 벡터를 더하면 World-공간 위치를 구할 수 있다. View-공간 위치를 구하는 것이 비용상 이득이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;코드를&amp;nbsp;보면,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 깊이 저장&lt;/p&gt;
&lt;p&gt;VSOUTPUT VS(VSINPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;output.depth = PosInView.z / g_FarDistance;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;output.depth = input.depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 위치 계산&lt;/p&gt;
&lt;p&gt;VSOUTPUT VS(VSINPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//View-공간&amp;nbsp; 카메라-To-정점 벡터&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//= View-공간 위치 - View-공간 카메라 위치&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//= View-공간 위치 - float3(0,0,0) = View-공간 위치&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;ouput.ray = PosInView;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//스크린-공간 사각형을 사용하기 때문에 기하의 텍스쳐 좌표가 곧 스크린 좌표가 된다.&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;float depth = tex2D(DepthBuffer, input.&lt;font color=&quot;#e31600&quot;&gt;texcoord&lt;/font&gt;);&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;float3 PosInView = input.ray * depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 방법은 곱셈 한번으로 위치를 구할 수 있기 때문에 첫번째 방법에 비해 비용이 훨씬 싸다. 그리고 깊이 버퍼에 Linear-깊이를 저장하기 때문에 Linear-깊이가 필요한&amp;nbsp;다른 Post-이펙트에서 깊이 버퍼 값을 그대로 사용할 수 있다. 단점은 스크린-공간 사각형을 렌더링할 때만 사용할 수 있다는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;3. 카메라에서 기하(geometry)까지의 광선&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Deferred 시스템에서는 일반적으로 Point Light 나 Spot Light 를 렌더링할 때는 Light 범위에 맞는 기하(구, 원뿔등) 를 사용하기 때문에 두번째 방법을 그대로 사용할 수 없다. 이 방법은 스크린-공간 사각형을 포함하여 어떤 기하 형태든 사용할 수 있도록 두번째 방식을 약간 변형한 것이다. Ray를 이용하는 것은&amp;nbsp;동일하지만 깊이-버퍼에 저장하는 값이 다르다. 깊이 버퍼에 Linear-깊이가 아닌 카메라까지의 거리를 저장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;위치를 계산할 때는&amp;nbsp;우선 정점 쉐이더에서 받은 벡터를 정규화한다.&amp;nbsp;방향이 있으므로 크기만 있으면&amp;nbsp;카메라-To-위치 벡터를 구할 수 있다. &amp;nbsp;크기는 깊이-버퍼에 저장되어 있으므로&amp;nbsp;정규화된 벡터에 깊이-버퍼에 저장된 값을 곱하기만 하면 된다. 여기서 주의할 점은 정점 쉐이더에서 벡터를 정규화하는 것은 의미가 없다는 것이다. 정점 쉐이더에서 정규화를 하더라도 선형 보간되어 픽셀 쉐이더로 넘어가면 정규화되지 않은 벡터가 되기 때문이다. 따라서 꼭 픽셀 쉐이더에서 정규화해주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;코드를 보면, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 깊이 저장&lt;/p&gt;
&lt;p&gt;VSOUTPUT VS(VSINPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;output.depth = length(PosInView);&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;output.depth = input.depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 위치 계산&lt;/p&gt;
&lt;p&gt;VSOUTPUT VS(VSINPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//View-공간&amp;nbsp; 카메라-To-정점 벡터&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//= View-공간 위치 - View-공간 카메라 위치&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;//= View-공간 위치 - float3(0,0,0) = View-공간 위치&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;ouput.ray = PosInView;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;float depth = tex2D(DepthBuffer, input.screencoord);&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;float3 PosInView = normalize(input.ray) * depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;4. 픽셀 쉐이더에서 카메라-To-원평면&amp;nbsp;광선 계산&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2, 3번째 방법의 단점은 해당 픽셀 외에 다른 픽셀의 위치를 계산할 수 없다는 것이다. SSAO같은 Post-이펙트는 다른 픽셀에서의 위치값이 필요하기 때문에&amp;nbsp;또 다른&amp;nbsp;방식이 필요하다. 2, 3번째 방식은 정점 쉐이더에서 Ray를 계산해서 픽셀 쉐이더에 넘겨주는 방식이기 때문에 다른 픽셀에 대한 Ray를 얻을 수 없다. 정점 쉐이더가 아닌 픽셀 쉐이더에서 Ray를 계산할 수 있으면 이런 제한이 사라진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;픽셀 쉐이더에서 Ray를 계산하는 것은 간단하다. 원평면의 네 꼭지점을 스크린 좌표로 보간하기만 하면 된다. 원평면의 top-right 점과 left-bottom 점을 보간하면 되는데,&amp;nbsp;View-공간 Ray를 계산한다면 실제로 픽셀 쉐이더에서 필요한 값은 top-right 점의 View-공간 위치 하나이다. left-bottom 점의 View-공간 위치는 top-right 점의 부호만 바꾸면 되기 때문이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;깊이-버퍼에 저장되는 값은 두번째 방법과 동일하다. 두번재 방법과 마찬가지로 카메라-To-원평면 Ray를 사용하기 때문이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;코드를 보면, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 위치 계산&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#e31600&quot;&gt;//정점 쉐이더는 필요없다.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PSOUTPUT PS(VSOUTPUT input)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#e31600&quot;&gt;float3 ray = lerp(-g_FarTopRight, g_FarTopRight, input.screencoord);&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;float depth = tex2D(DepthBuffer, input.screencoord);&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;float3 PosInView = ray * depth;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 방식의 또 다른 장점은 두번째 방법과 마찬가지로 어떤 기하 모양을 사용하든 적용할 수 있다는 것이다. 또한 두번째 방법과 비교했을 때&amp;nbsp;normalize() 연산을 하는 대신에 lerp() 연산을 하기 때문에 추가 비용도 없다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/&quot; target=&quot;_blank&quot;&gt;http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/&lt;/a&gt;&lt;/p&gt;&lt;br  /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--
	articleFileViewGeneration();
	var myAgent = navigator.userAgent.toLowerCase();
   	if(myAgent.indexOf(&quot;msie 8&quot;)!=-1){
		var webFontStyleEl = parent.document.getElementById(&quot;fontStyle&quot;); 
		if(webFontStyleEl) webFontStyleEl.styleSheet.cssText = webFontStyleEl.styleSheet.cssText;
	}
//--&gt;
&lt;/script&gt;&lt;/link&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>선헌한 날씨 만큼이나 기분 좋네요.</title>
      <id>http://www.eppengine.com/zbxe/5571</id>
      <published>2010-09-27T22:33:00P</published>
      <updated>2011-01-15T16:54:46P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/5571"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/5571#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;일은 많지만 회사도 안정화에 접어들고,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기분 좋습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;선선한 날씨 만큼이나 오늘 왠지 기분이 좋네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그냥 들뜬다고 해야 하나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;개발자 분들 명절 잘 보내셨나요? &lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>GPU에 최적화된 프레임 구성</title>
      <id>http://www.eppengine.com/zbxe/4926</id>
      <published>2010-09-13T21:55:42P</published>
      <updated>2010-12-12T02:41:41P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/4926"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/4926#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 : &lt;a href=&quot;http://www.gamecode.org/tt/entry/1851&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#aaaaaa&quot; face=&quot;&quot;&gt;http://www.gamecode.org/tt/entry/1851&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Present 호출후 대기 시간의 활용에 대한 부분입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좋은 글 이네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#include &amp;lt;stdio.h&amp;gt; &lt;br  /&gt;#include &amp;lt;windows.h&amp;gt; &lt;br  /&gt;&lt;br  /&gt;HANDLE &amp;nbsp; &amp;nbsp;g_hFlip, g_hRenderScene; &lt;br  /&gt;&lt;br  /&gt;void _process() &lt;br  /&gt;{ &lt;br  /&gt;&amp;nbsp; &amp;nbsp;static int cnt=0; &lt;br  /&gt;&amp;nbsp; &amp;nbsp;printf(&quot;process(%d)n&quot;, cnt++); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;Sleep(500); &lt;br  /&gt;} &lt;br  /&gt;&lt;br  /&gt;void _flip() &lt;br  /&gt;{ &lt;br  /&gt;&amp;nbsp; &amp;nbsp;Sleep(500); &lt;br  /&gt;} &lt;br  /&gt;&lt;br  /&gt;int g_done = 1; &lt;br  /&gt;&lt;br  /&gt;DWORD WINAPI _flipper(void * ptr) &lt;br  /&gt;{ &lt;br  /&gt;&amp;nbsp; &amp;nbsp;WaitForSingleObjectEx(g_hFlip, INFINITE, FALSE); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;while(g_done) { &lt;br  /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_flip(); &lt;br  /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SetEvent(g_hRenderScene); &lt;br  /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WaitForSingleObjectEx(g_hFlip, INFINITE, FALSE); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;} &lt;br  /&gt;&amp;nbsp; &amp;nbsp;return 0; &lt;br  /&gt;} &lt;br  /&gt;&lt;br  /&gt;void _display() &lt;br  /&gt;{ &lt;br  /&gt;&amp;nbsp; &amp;nbsp;static int cnt=0; &lt;br  /&gt;&amp;nbsp; &amp;nbsp;static int time = timeGetTime(); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;WaitForSingleObjectEx(g_hRenderScene, INFINITE, FALSE); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;int delta = timeGetTime() - time; &lt;br  /&gt;&amp;nbsp; &amp;nbsp;time += delta; &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;printf(&quot;tdisplay (%d) %dn&quot;, cnt++, delta); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;Sleep(500); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;SetEvent(g_hFlip); &lt;br  /&gt;} &lt;br  /&gt;&lt;br  /&gt;void main() &lt;br  /&gt;{ &lt;br  /&gt;&amp;nbsp; &amp;nbsp;DWORD threadid; &lt;br  /&gt;&amp;nbsp; &amp;nbsp;int i; &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;g_hFlip = CreateEvent(NULL, FALSE, FALSE, NULL); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;g_hRenderScene = CreateEvent(NULL, FALSE, TRUE, NULL); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;CreateThread(NULL, 0, _flipper, 0, 0, &amp;amp;threadid); &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;for(i=0; i&amp;lt;5; i++) { &lt;br  /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_process(); &lt;br  /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_display(); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;} &lt;br  /&gt;&lt;br  /&gt;&amp;nbsp; &amp;nbsp;CloseHandle(g_hFlip); &lt;br  /&gt;&amp;nbsp; &amp;nbsp;CloseHandle(g_hRenderScene); &lt;br  /&gt;} &lt;br  /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>http://legendfinger.com/403</title>
      <id>http://www.eppengine.com/zbxe/3740</id>
      <published>2010-07-21T17:59:01P</published>
      <updated>2011-01-15T16:54:56P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3740"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3740#comment"/>
      <author>
         <name>ㅈㅂ</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&amp;nbsp;http://legendfinger.com/403&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>엔진 개발자 구인중</title>
      <id>http://www.eppengine.com/zbxe/3650</id>
      <published>2010-06-12T13:24:03P</published>
      <updated>2011-01-15T16:55:04P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3650"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3650#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;엔진 라이선스가 늘어남에 따라 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;개발자 구인이 필요해 졌습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좋은 사람 없나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;p.s. 신입도 상관 없어요. 누가 추천좀 해주세요~ 개발자분 모시면서 일 열심히 하겠습니다. &lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>좋은 욕심.</title>
      <id>http://www.eppengine.com/zbxe/3620</id>
      <published>2010-06-01T13:27:18P</published>
      <updated>2011-01-15T16:55:15P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3620"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3620#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;사람은 누구나 욕심이 있다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;욕심이 없다던 사람도 마지막에 가서는 욕심을 보인다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나는 그래서 욕심 없다는 말을 믿지를 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;욕심을 내지 않는것이 좋다고는 생각 들지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사람은 적당한 욕심을 부릴줄 아는 것 이 한걸음 성장하게 한다고 믿고 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;욕심을 부리되, 적당히 부리고, 상대방을 이용하거나 피해를 주는 행위를 하지 않는다면, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좋은 욕심이 아닐까?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어릴적부터 남에게 피해주지 않고 자라는걸 배워왔다. 오랫동안 몸에 배여서 그런지, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다른사람들도 당연히 남들에게 피해 안주려고 하나보다 라고 생각했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 그렇지 못한 사람들이 너무 많다라....&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;상대방의 장점을 자기가 손해보지 않는이상 이용하려 드는.... 그런 하이에나 같은 사람들...... &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>EPPEngine2.0 주요기능 정리</title>
      <id>http://www.eppengine.com/zbxe/3527</id>
      <published>2010-04-13T17:21:41P</published>
      <updated>2010-12-12T02:41:41P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3527"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3527#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;기능 전체라기 보다는 주요 기능들만 정리해 두었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Post Processing&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;HDR (&lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;높은 다이나믹 레인지를 바탕으로 실제 환경에서의 라이팅 효과를 모사 할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Tone Mapping ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;빛의 세기를 기록하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동굴속 혹은 하늘을 바라봤을때의 동공의 움직임에 따른 빛의 받아들임을 모사 할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;SSAO ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;글로벌 라이팅 기술의 일종으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;환경광 차폐에 따른 자연스러운 화면연출이 가능하다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;SSGI ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;글로벌 라이팅 기술의 일종으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;모든 오브젝트들이 빛을 반사한다는 계념으로 녹색 &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/span&gt;오브젝트가 벽 근처에 놓여졌을 때&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;벽의 색이 녹색이 묻어나게 한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;DOF ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;카메라의 조리개를 표현한 것으로 조리개가 열렸을 때 초점을 맞은부분을 제외하고는 흐려지게 한다&lt;span lang=&quot;EN-US&quot;&gt;. )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Deferred / Inferred Rendering ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;지연렌더링으로 &lt;span lang=&quot;EN-US&quot;&gt;Forward &lt;/span&gt;렌더링과 다른계념으로 이미지 단위의 라이팅 처리기술로써&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;많은수의 라이팅을 보다 빠르게 처리한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Bright Bloom Filter ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;화면에서 밝은 부분만 추출하여&lt;span lang=&quot;EN-US&quot;&gt; Blur &lt;/span&gt;처리함으로써 몽환적인 느낌을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;2.5D Motion Blur (&lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;카메라 혹은 빠르게 움직이는 오브젝트의 표현을 자연스럽게 모사한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Light Shafts ( 빛줄기 표현 , 대기에서 빛의 양을 모사하여 태양을 바라보는 상황이 아니더라도 빛줄기 를 표현.)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Effect&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Particle System ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;아래의 여러가지 시스템들을 중첩하여 표현가능&lt;span lang=&quot;EN-US&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Soft Particle ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;입자들이 오브젝트와 중첩될 때 어색한 라인을 제거한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Refract Particle ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;입자들을 외부 환경과 굴절시킨다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;&amp;gt; &lt;/span&gt;불에서 이글거림 표현&lt;span lang=&quot;EN-US&quot;&gt; )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Distort Particle ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;입자에 사용될 텍스쳐를 외곡하여 표현한다&lt;span lang=&quot;EN-US&quot;&gt;. )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Screen Particle ( &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;입자를 화면전체에 덮는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;&amp;gt;FPS &lt;/span&gt;에서 피격당했을 때 화면에 나타나는 표현&lt;span lang=&quot;EN-US&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Mesh Effect System&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Effect Group System ( Mesh Effect &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Particle &lt;/span&gt;을 하나로 묶어 다양한 효과의 표현이 가능하다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Texture&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Bump Maping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Specular Maping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Diffuse Maping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Opacity Maping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Parallax Maping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Parallax Occlusion Mapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Offset Mapping&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Light Mapping ( multi uv channel )&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Font&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot; lang=&quot;EN-US&quot;&gt;Freetype library &lt;/span&gt;&lt;span style=&quot;mso-bidi-font-weight: bold&quot;&gt;를 활용한 고품질 폰트 렌더링을 지원&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;특정 폴더의 폰트를 로드&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Loading System&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Zone &lt;/span&gt;기반&lt;span lang=&quot;EN-US&quot;&gt; Loading System ( &lt;/span&gt;지역단위로 로딩처리&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Backgrounds Loading System &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/span&gt;(&lt;/span&gt;스래드를 활용하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;작업 뒤쪽에서 로딩한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Stream Loading System ( &lt;/span&gt;매틱당 조금씩 로딩한다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Seamless Loading System ( &lt;/span&gt;위의 로딩 시스템을 활용하여 최대한 끈김없는 로딩처리&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Multi Threading&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;XBOX360 &lt;/span&gt;의 트리플코어에 최적화된 멀티 스래딩&lt;span lang=&quot;EN-US&quot;&gt; ( EPPENGIEN 1.0 &lt;/span&gt;에만 해당됨&lt;span lang=&quot;EN-US&quot;&gt; /&lt;/span&gt;프로세스&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;렌더링&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;물리와 입력&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;PC ( &lt;/span&gt;코어수에 따른 멀티 스래딩&lt;span lang=&quot;EN-US&quot;&gt; , OpenMP &lt;/span&gt;를 활용한 스래딩처리&lt;span lang=&quot;EN-US&quot;&gt; + &lt;/span&gt;프로세스&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;렌더링&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;물리&lt;span lang=&quot;EN-US&quot;&gt;(physicX &lt;/span&gt;자체 스래딩&lt;span lang=&quot;EN-US&quot;&gt;)/&lt;/span&gt;사운드&lt;span lang=&quot;EN-US&quot;&gt;(FMOD &lt;/span&gt;자체 스래딩&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;를 나누어 스래딩 처리&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Threading &lt;/span&gt;작업시 별도의 코드수정이 필요하지 않으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;단순히 엔진컴파일 만으로 자동으로 처리됨&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Material System&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ShaderModel 2.0, ShaderModel 3.0 , ShaderModel 4.0 &lt;/span&gt;지원&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Shader &lt;/span&gt;를 자동으로&lt;span lang=&quot;EN-US&quot;&gt; Parsing &lt;/span&gt;하여 정보를 툴에 표현한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Material Editor &lt;/span&gt;제공예정&lt;span lang=&quot;EN-US&quot;&gt;. ( Uber System + Visual Material Editor)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Animation&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Vertex Animation ( LOD &lt;/span&gt;지원&lt;span lang=&quot;EN-US&quot;&gt; , Animation Blending &lt;/span&gt;지원&lt;span lang=&quot;EN-US&quot;&gt; )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Skeletal Animation ( LOD &lt;/span&gt;지원&lt;span lang=&quot;EN-US&quot;&gt; ,&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/span&gt;Animation Blending &lt;/span&gt;지원&lt;span lang=&quot;EN-US&quot;&gt; , software / hardware skinning )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Sound&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fmod &lt;/span&gt;를 활용한 다양한&lt;span lang=&quot;EN-US&quot;&gt; Sound System &lt;/span&gt;지원&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;별도&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Physics&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;PhysicX &lt;/span&gt;를&lt;span lang=&quot;EN-US&quot;&gt; IPP &lt;/span&gt;하여 &lt;span lang=&quot;EN-US&quot;&gt;PhysicX &lt;/span&gt;의 각종 기능들을 사용 할 수 있음&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Signal System&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;툴을 통해 에니메이션의 특정 프레임에 특정 시그널을 삽입하여&lt;span lang=&quot;EN-US&quot;&gt; call back &lt;/span&gt;형태로 정보를 자동으로 받을 수 있음&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Default Signal &lt;/span&gt;제공&lt;span lang=&quot;EN-US&quot;&gt; ( &lt;/span&gt;사운드&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이펙트&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;화면효과&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;카메라 진동&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;트레일&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;칼 잔상표현등&lt;span lang=&quot;EN-US&quot;&gt;..) )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Base Object ( Geometry + Texture ) *.eoj&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Skin Object ( Base Object + Rendering + LOD( Bone Lod, Geometry Lod, Material Lod) + Physics ) *.skin&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Entity Object ( Skin Object + Object Signal + Animation + Animation Signal ) *.eeo&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;World&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Outdoor System ( Layer &lt;/span&gt;쵀대&lt;span lang=&quot;EN-US&quot;&gt; 4&lt;/span&gt;개&lt;span lang=&quot;EN-US&quot;&gt;, Layer &lt;/span&gt;별로 텍스쳐&lt;span lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;장 범프맵&lt;span lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;장 지원&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Seamless &lt;/span&gt;지형 생성&lt;span lang=&quot;EN-US&quot;&gt; ( &lt;/span&gt;하나의&lt;span lang=&quot;EN-US&quot;&gt; World &lt;/span&gt;에 여러 개의&lt;span lang=&quot;EN-US&quot;&gt; Outdoor &lt;/span&gt;등록&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;편집 가능&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ase or Obj &lt;/span&gt;파일로 익스포트 가능&lt;span lang=&quot;EN-US&quot;&gt; ( Max &lt;/span&gt;를 통한 라이트맵 생성시&lt;span lang=&quot;EN-US&quot;&gt; )&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Indoor System ( BSP/PVS &lt;/span&gt;를 통한 내부지형 생성&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;임의 &lt;span lang=&quot;EN-US&quot;&gt;Potal &lt;/span&gt;면 지정 가능&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;World = OutDoor + Indoor (&lt;/span&gt;특정&lt;span lang=&quot;EN-US&quot;&gt; Trigger &lt;/span&gt;를 통해&lt;span lang=&quot;EN-US&quot;&gt; OutDoor &lt;/span&gt;과 연결가능&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Trigger System &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span lang=&quot;EN-US&quot;&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;맑은 고딕&quot;&gt;Shadow&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Single Shadow Map / Multi Shadow Map (Cascade Shadow System)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Depth shadow ( Self Shadow )&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Projection Shadow&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;맑은 고딕&quot;&gt;Volume Shadow ( Self Shadow )&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>C++ 개발자/게임개발자를 위한 VS2010 세미나 참가</title>
      <id>http://www.eppengine.com/zbxe/3330</id>
      <published>2010-04-02T10:59:02P</published>
      <updated>2011-01-15T16:56:33P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3330"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3330#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;저도 이 세미나를 들어볼까 해서 참가 신청을 했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그때 게임 개발자분들이라면 서로 인사도 하고 그랬으면 좋겠네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그럼 좋은하루 되시고, 가시는 분들 계시면 리플이라도 달아주세요. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;거기서 같이 인사도 하고 점심도 먹고 하자구요. ^^&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>엔진사업을 위해서 새로운 사무실준비 완료.</title>
      <id>http://www.eppengine.com/zbxe/3274</id>
      <published>2010-02-23T13:05:51P</published>
      <updated>2011-01-15T16:56:33P</updated>
      <link rel="alternate" type="text/html" href="http://www.eppengine.com/zbxe/3274"/>
      <link rel="replies" type="text/html" href="http://www.eppengine.com/zbxe/3274#comment"/>
      <author>
         <name>e++개발자</name>
                  <uri>http://eppengine.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;구로쪽에 사무실을 하나 구입했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바로앞에 공원도 있고, 산책하기도 좋군요. 전경도 좋고...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다들 좋은 하루 되시고 복받으십시요. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저도 열심히 살야야 겠습니다. ^^&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
</feed> 

