Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Shaderお絵描き初級編

Avatar for hacha hacha
November 28, 2018

 Shaderお絵描き初級編

2018/11/28 Gotanda.unity #9 でのLTスライドです。
プロジェクトはこちら https://github.com/hacha/ForGotandaUnity_9

Avatar for hacha

hacha

November 28, 2018

Other Decks in Programming

Transcript

  1. Step1 ৭ΛృΔ fixed4 frag (v2f_img i) : SV_Target { return

    fixed4(1, 0, 0, 1); } ൘ϙϦΛਅͬ੺ʹϕλృΓ͢Δɻ ϑϥάϝϯτγΣʔμʔͷ෦෼͚ͩൈਮ 3(#"ͷ஋Λฦ͢ͱɺͦͷ৭Ͱృͬͯ͘ΕΔɻ ͦΕ͕ϑϥάϝϯτγΣʔμʔͬͯ΍ͭͩɻ
  2. Step2 നࠇͷάϥσʔγϣϯʹ͢Δ fixed4 frag (v2f_img i) : SV_Target { //

    i.uv ʹUV࠲ඪͷ஋͕ೖ͍ͬͯΔ float c = i.uv.x * i.uv.y; return fixed4(c, c, c, 1); } ϕλృΓ͡Ό໘ന͘ͳ͍ͷͰɺάϥσʔγϣϯʹ ͢Δɻ
  3. Step3 ԁΛඳ͘ fixed4 frag (v2f_img i) : SV_Target { float2

    pos = i.uv; // 0.0ʙ1.0 ͷൣғͷ pos Λ -1.0ʙ1.0 ͷൣғʹͳΔΑ͏ม׵ pos = pos * 2.0 - 1.0; // ԁΛඳ͘ float c = 1.0 - length(pos); return fixed4(c, c, c, 1); } த৺͔Βͷڑ཭ʹԠͯ͡৭͕มΘΔΑ͏ʹ͍ͯ͠ Δɻ
  4. Step4 ಈ͔͢ fixed4 frag (v2f_img i) : SV_Target { float2

    pos = i.uv; // 0.0ʙ1.0 ͷൣғͷ pos Λ -1.0ʙ1.0 ͷൣғʹͳΔΑ͏ม׵ pos = pos * 2.0 - 1.0; // ԁΛඳ͘ float c = 1.0 - length(pos); // ࣌ؒܦաͰ஋͕มΘΔΑ͏ʹ͢Δ c = frac(c + _Time.x * 5.0); return fixed4(c, c, c, 1); } _Timeͬͯͷ͸ఆٛࡁΈͷ࣌ؒͰɺ૿͑ଓ͚Δ஋ɻ ͦͷ··଍͠ࠐΉͱ1Λ௒͑ͪΌ͏ͷͰɺfrac()ؔ਺Ͱ 0.0ʙ1.0ͷൣғʹͳΔΑ͏ௐ੔ɻ
  5. Step5 ৭Λ෇͚Δ { ʙ͜ΕҎલ͸লུʙ return fixed4(c, c, c, 1); }

    { ʙ͜ΕҎલ͸লུʙ fixed4 ret = hsv2rgb(c, 1.0, 1.0); // ผ్ఆٛͯ͠·͢ return ret; } ͜͜·ͰRGB͕શͯಉ͡஋Ͱฦ͍ͯͨ͠ͷͰࠇ͔Βനͷάϥσʔγϣϯͩͬͨɻ HSV͔ΒRGBʹม׵ͯ͠ฦ͢Α͏ʹͯ͠ΈΔɻ hsv2rgb()ͷৄࡉ͸ׂѪɻͦ͏͍͏͕ࣜ͋ΔͬΆ͍ͷΛ͖͚࣋ͬͯͨͩͳΜͰɻ
  6. Step6 ϙελϦθʔγϣϯ { ʙ͜ΕҎલ͸লུʙ c = floor(c * 6.0) /

    6.0; fixed4 ret = hsv2rgb(c, 1.0, 1.0); return ret; } ͋͑ͯ৭ௐΛམͱ͢ͱύΩοͱͯ͠ΠΠΧϯδʹ ͳΔɻ
  7. Step6 ϙελϦθʔγϣϯ y=x ͱ y=floor(x * 6.0) / 6.0 ͷରൺΠϝʔδ

    0.0ʙ1.0ͷ஋ͷൣғΛɺ0.0ʙ6.0ʹҾ͖৳͹ͯ͠
 floor()Ͱখ਺఺ҎԼ੾Γࣺ͔ͯͯΒ
 ·ͨ0.0ʙ1.0ͷൣғʹ໭͢ɻ ͭ·Γ஋ͷσΟςΟʔϧ͕ݮΔɺΈ͍ͨͳɻ
  8. Step7 ฒ΂Δ { float2 pos = i.uv; // 0.0ʙ1.0 ͷൣғΛ

    0.0ʙ2.0 ͷൣғʹ্ͨ͠Ͱɺ࠶౓ 0.0ʙ1.0 ʹԡ͠ࠐΊΔ pos.x = frac(pos.x * 2.0); pos.y = frac(pos.y * 2.0); // 0.0ʙ1.0 ͷൣғͷ pos Λ -1.0ʙ1.0 ͷൣғʹͳΔΑ͏ม׵ pos = pos * 2.0 - 1.0; // ԁΛඳ͘ // ҎԼུ }