๊ทธ๋ž˜๋ธŒ ํŒจ์Šค์—์„œ ํ˜„์žฌ ํ™”๋ฉด ์บก์ฒ˜ํ•˜๊ณ 

์บก์ฒ˜๋œ ์ด๋ฏธ์ง€๋ฅผ ํ‰๋ฉด์— ํ…์Šค์ฒ˜์ฒ˜๋Ÿผ ์ ์šฉํ•ด์„œ ํˆฌ๋ช…ํ•œ ์œ ๋ฆฌ์ฐฝ์ฒ˜๋Ÿผ ๋งŒ๋“œ๋Š” ์‰์ด๋”๋ฅผ ๋”ฐ๋ผํ•˜๊ณ  ์ž‡์—‡๋‹ค


๊ทผ๋Œ€ ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๋Š”๊ฑฐ ์•„๋‹ˆ๊ฒŸ๋…ธ


v2f vert (appdata v)

{

v2f o;

o.vertex = UnityObjectToClipPos(v.vertex);

ย  ย  ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย  ย  ย  //add this to check if the image needs flipping

# if UNITY_UV_STARTS_AT_TOP

ย  ย  ย  ย  ย  ย  ย  ย  float scale = -1.0;

ย  ย  ย  ย  ย  ย  ย  ย  # else

ย  ย  ย  ย  ย  ย  ย  ย  float scale = 1.0f;

ย  ย  ย  ย  ย  ย  ย  ย  # endif

ย  ย  ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย  ย  ย  //include scale in this formulae as below

ย  ย  ย  ย  ย  ย  ย  ย  o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y * scale) + o.vertex.w) * 0.5;

ย  ย  ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย  ย  ย  o.uvgrab.zw = o.vertex.zw;

o.uv = TRANSFORM_TEX( v.uv, _MainTex );

o.uvbump = TRANSFORM_TEX( v.uv, _BumpMap );

return o;

}


o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y * scale) + o.vertex.w) * 0.5;

์ด๊ฒŒ ์•Œ๊ณ ๋ณด๋‹ˆ๊นŒย ์œ ๋‹ˆํ‹ฐ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ComputeScreenPos ํ•จ์ˆ˜๋ž‘ ๋˜‘๊ฐ™์ด ์ž‘๋™ํ•˜๋Š”๋ฐ

์—ฌ๊ธฐ์„œ ํด๋ฆฝ ์ŠคํŽ˜์ด์Šค์— ์ž‡๋Š” ํ‰๋ฉด์˜ uv ์—๋‹ค๊ฐ€ ์ •์ ์˜ w ๋ฅผ ๊ฐ๊ฐ ๋”ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋จธ์ž„? 0.5 ๊ณฑํ•˜๋Š” ์ด์œ ๋„ ๋ชจ๋ฅด๊ฒŸ์Œ

๋„์›€ ์•™๋งํ•œ๋‹คย