Unity HDRP Water Shader

Поділитися
Вставка
  • Опубліковано 28 бер 2021
  • You can right click the video and then "Loop" for an uncut experience.
    Current features:
    - Depth based color
    - Reflections (SSR for locals, Skybox for global)
    - Refraction
    - Texture waves as base model
    - Gerstner waves as physical model (14 waves for this scene)
    - Foam (object intersection + breaking waves)
    - Caustics
    - Cheap SSS
  • Ігри

КОМЕНТАРІ • 11

  • @thetego
    @thetego 3 роки тому

    İyi günler shader graph ile mi yaptınız? Öyleyse kaynak vs. paylaşabilir misiniz?

    • @1MOLNH3
      @1MOLNH3  3 роки тому +3

      Merhaba, bir miktar geç döndüğüm için üzgünüm. İlk sorunuza gelirsek evet, Shadergraph ile yapıldı.
      Kaynaklar için öncelikle genel anlamda su shader'larını tanıtan, sahip olmaları gereken derinlik bazlı renklendirme, kırılmalar, yansımalar gibi temel özellikler hakkında bilgi veren ve geçmişten günümüze kullanılan tekniklere değinen iki makale bırakıyorum. Konu hakkında bilmeniz gereken aşağı yukarı her şeyi vererek genel bir fikir oluşturacaktır. Bunların ardından ise iki video tutorial ve kanal linki vereceğim. Aydınlatıcı olma durumlarına göre makaleler ve videolar arasındaki sıra değiştirilebilir.
      Makalelerden ilki için asıl kaynak şu şekilde:
      >> bedrnik.at/images/Masterthesis.pdf
      Ancak bende sayfa açılmadığı için ne olur ne olmaz diye de buraya elimdeki halini yükledim:
      >> drive.google.com/file/d/1TqWp6wi2QCNhwYL8sSll9ekwe5KN1pfv/view?usp=sharing

      İkinci olarak ise yalnızca geçmişten günümüze fiziksel dalga(düz bir yüzey yerine yüksekliğe sahip dalgalar) oluşturmada kullanılan tekniklere değinen bir makale bırakıyorum:
      >> programmersought.com/article/54924233175/
      Video kısmında ise bu linkte Bioware'de teknik artist olarak çalışan Ben Cloward abimize ait su shader'larına eğilen oldukça kaliteli bir seri bulunuyor:
      >> ua-cam.com/video/r68DnTMeFFQ/v-deo.html&ab_channel=BenCloward
      Aynı zamanda shaderlar hakkında genel bilgi almak için yine Ben Cloward'ın kanalında mükemmel bir seri bulunduğunu da belirteyim.
      Polytoots kanalında da yine su shaderlarına dair hem Shadergraph hem de Amplify Shader Editor için fazlaca içerik bulunuyor. Başlamak için en uygun olan hemen aşağıya bıraktığımdır diye düşünüyorum zira bunun sonrasında atılanlar genellikle daha çok farklı şekillerde fiziksel dalga oluşturabilmek üzerine iken öncesindekiler ise bir miktar eski kaldılar:
      >> ua-cam.com/video/bl8sAEDpiTs/v-deo.html&ab_channel=PolyToots
      Bir bonus olarak ise şurada Unity'nin Universal Render Pipeline versiyonu için resmi su shader tutorial'i bulunuyor:
      >> ua-cam.com/video/gRq-IdShxpU/v-deo.html&ab_channel=Unity
      Bu videoda görülen fiziksel dalga modeli olarak kullanılan Gerstner dalgaları Nvidia'nın GPU Gems dergisinde bulunan aşağıdaki makale baz alınarak oluşturuldu. Bırakacağım iki link de aynı sayfaya açılıyor ancak formüller arasında ufak bir farklılık var. Bir tanesinde formüllere pi sayısı dahil edilirken güncel olanda edilmiyor. Yanlarında farkı belirttim:
      >> developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch01.html >> Pi sayısı var.
      >> developer.nvidia.com/gpugems/gpugems/part-i-natural-effects/chapter-1-effective-water-simulation-physical-models >> Pi sayısı yok.
      Videodaki shader üstteki pi sayısını dahil eden versiyona göre kodlandı ki doğru olanın bu olduğuna inanıyorum.
      Dokipen'in kanalında ise hemen yukarıdaki Gerstner dalgalarına ait makalenin nasıl koda aktarılacağı ve genel olarak Gerstner dalgalarının çalışma mantığı anlatan harika iki video bulunuyor:
      >> ua-cam.com/video/s5oNkEHeeXs/v-deo.html&ab_channel=Dokipen >> Gerstner dalgalarının çalışma mantığı
      >> ua-cam.com/video/_y7Z0MbGOMw/v-deo.html&ab_channel=Dokipen >> Unreal için Gerstner dalgaları
      Bu noktada dikkat edilmesi gereken şu ki Dokipen'in Unreal için yaptığı video da ve makale de uzayın yukarı bakan eksenini "Z - (Z Up)" olarak kabul ederken Unity ise "Y - (Y Up)" eksenini yukarı bakan eksen olarak kullanıyor.
      Gerstner dalgalarının yönlerini uygun bir şekilde ayarlayıp bu kaotik havayı verebilmesi için ise aşağıdaki GDC konuşmasının 26.41'inci dakikasındaki teknik uygulandı:
      >> ua-cam.com/video/MdC7L1OloKE/v-deo.html&ab_channel=GDC
      Köpük mevzusunda ise genel olarak iki makaleyi denedim:
      >> www.academia.edu/2600476/Very_Fast_Real_Time_Ocean_Wave_Foam_Rendering_Using_Halftoning
      >> www.researchgate.net/publication/262402999_Real-time_Animation_and_Rendering_of_Ocean_Whitecaps >> Video için bu kullanıldı.
      Şu ana kadar attığım kaynaklar videodaki tüm içeriği kapsıyor. Aklımda kalan ve aktif olarak kullandığım belli başlı kaynaklar bu şekilde idi. Bunun yanı sıra yine su shaderlarına dair birkaç bonus kaynak daha bırakayım:
      Promit isimli kullanıcının gönderisinde olayın genelini kısaca özetleyen harika bir yazı bulunuyor:
      >> www.gamedev.net/forums/topic/673011-water-rendering/
      Videodaki suyun ışığı kırması efektini oluşturmak için kullanılan teknik aşağıdaki linkteki ile aynı. Bu teknik yukarıda linkleri bulunan Ben Cloward ve Polytoots kanallarındaki videolarda da bulunuyor:
      >> developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-19-generic-refraction-simulation
      Burada Assassin's Creed III için kullanılan suya ilişkin güzel ve detaylı bir teknik inceleme var:
      >> www.fxguide.com/fxfeatured/assassins-creed-iii-the-tech-behind-or-beneath-the-action/
      Suya dair şu ana kadar yapılmış pek çok çalışmanın bir derlemesi:
      >> vterrain.org/Water/
      Aklınıza takılan başka bir şey olursa elimden geldiğince cevaplamaya çalışırım.

  • @heissenbergei_6126
    @heissenbergei_6126 2 роки тому +1

    Yüksek dalgalar en yüksek pozisyonlarında birkaç partikül çıkarsa çok daha şık durabilir. Gerçek hayatta da oluyor ya böyle bazen su sıçratıyolar.

    • @1MOLNH3
      @1MOLNH3  2 роки тому +1

      Güzel bir noktaya değinmişssin dostum. Bu bahsettiğin genelde çoğu yerde uygulanan bir olay aslında. Çeşitli teknikler de mevcut ancak şuan ki bu ürün işin temel kısımlarını içeriyor. İlerideki aşamalarda su altı efektleri, kaldırma kuvveti, etkileşim gibi olaylarla beraber ona da geleceğiz. Birde o mevzuya geçmeden önce Unity'nin VFX Graph adını verdiği sistemi üzerine bir miktar çalışmam gerekiyor ki bu konuda bayağı heyecanlıyım zira deli içerikler vaat ediyor. :D Bu VFX Graph aslında pek çok oyun motorunda son yıllarda yaptıkları bir değişimi Unity'e de ekleyerek (örneğin Unreal'daki karşılığı Niagara diye biliyorum) partikül efektlerinin işlemci de değilde ekran kartında çalıştırılarak ekran kartının paralel iş yapabilme gücü sayesinde daha hızlı ve daha optimize olmalarını sağlıyor. Teorik olarak konuşuyorum işlemci 8 işi aynı anda yapabiliyorsa CUDA çekirdeği sayısı 2650 olan 1080 GTX aynı anda 2650 kod parçasını çalıştırabiliyor. Bu durum da çok fazla partikülün çok daha hızlı bir şekilde oynatılabilmesi gibi güzel sonuçlarla geliyor. Aynı zamanda modern oyunlardaki partikül sayılarının belirgin seviyede artmasının sebebi de buna dayanıyor.

    • @heissenbergei_6126
      @heissenbergei_6126 2 роки тому

      @@1MOLNH3 Sıradaki çalışmalarını iple çekiyorum.

  • @muhammadowais9661
    @muhammadowais9661 2 роки тому

    How did you make it?

    • @1MOLNH3
      @1MOLNH3  2 роки тому

      It may be hard to describe here but if you can take a look at my answer at the other comment and follow the links that lead to the resources it might be useful.

    • @muhammadowais9661
      @muhammadowais9661 2 роки тому

      @@1MOLNH3 they are not in english also drive link is not access able

  • @metrocop9087
    @metrocop9087 2 роки тому

    is it downloadable or something?

    • @1MOLNH3
      @1MOLNH3  2 роки тому +1

      Unfortunately not. It's just for showcase purposes.

    • @metrocop9087
      @metrocop9087 2 роки тому +1

      @@1MOLNH3 okay