vertex shader ile küçük poligonlara bölünmüş objede bu kürenin içinde olan her vertexi kürenin yüzeyindeki en yakın noktaya gönderirim.
bu sayede parçalanmanın yarısı, yani parçalanan büyük objenin parçalanmış kısmının görünmeme olayı halledilmiş oldu. geri kalan kısmı, yani parçalanma bölgesinde dağılan edevatlar göstermeyi de büyük objenin küçülmesinden bağımsız bir şekilde, etrafa rasgele (giderek açılan tabi) prizmalar dağıtarak hallederim.
Ben tam anlamadim. Eger kurenin icinde kalan vertexleri kurenin yuzeyine gonderirsen gorunmelerini engellemis olmayacaksin gibi geliyor bana sadece objenin kure icinde kalan bolumu balon gibi sisiyor olmayacak mi? Sonucta Nested'da kurenin yuzeyine gonderilen vertexler gorunmeye devam ediyor.
Dagilan edevat ile ilgili ise particle system'lere benzer bir durum oldugunu dusunuyorum ben. her edevat prizmasinin t= t0_piece aninda buyuk objeyle alligned olarak baslamasi ve sonrasinda da hafif variationlarla, ivme, hiz ve pozisyonlarinin update edilip. rotationlarin da fiziksel dayanak olmaksizin oldugunu saniyorum.
Dolayisiyla ben olsam edevat prizmalari icin buyuk bir vertex bufferda her vertex basina bazi extra fieldlarda su bilgileri saklardim:
- ait oldugu prizmanin local orijini
- ait oldugu prizmanin patlamadan once gorunen bir vertexi mi degil mi (buna originally visible vertex diyelim)
- ait oldugu prizmanin t0_piece yani patlama anini
- prizmanin x exseni etrafi rotasyon hizi (rot_spd_x)
- prizmanin y exseni etrafi rotasyon hizi (rot_spd_y)
- prizmanin z exseni etrafi rotasyon hizi (rot_spd_z)
- prizmanin ustundeki a_init, v_init vektorleri
daha sonra vertex shadera her frame sunlari gecirirdim:
- t
- buyuk objenin x y z eksenlerine yaptigi aci (yani bir nevi buyuk objenin rotasyon matrisi)
- buyuk objenin x y z pozisyonu
sonra da vertex shaderda
-t_local = t - t0_piece
--t_local negatif ise ve originally visible degil ise hide vertex (!?)
--t_local negatif ise ve originally visible ise render edicez
--t_local pozitif ise t_local, rot_spd_x, rot_spd_y, rot_spd_z, kullanip bunlari buyuk objenin rot_x, rot_y, rot_z si ile toplayarak prizmanin rotasyon matrisini hesapla
- t_local, a_init, v_init ve buyuk obje pozisyonlarini kullanarak prizma pozisyonunu bul
- pozisyon ve rotasyon bilgilerini kullanarak ModelToWorld matrisini olustur, vertexi carp ve dunyaya yerlestir
Boylece prizmalarin inital pozisyonlarinin buyuk objede alligned olmasi garantilenmis olur. butun hesaplamalar vertex shaderda oldugu icin cok hizli olur ve cpuya yuklenmez.
Fakat benim problemim bir vertexi (ve ona bagli olan poligonlari) render etmemek istedigimde bunu yapacak optimum bir yol bulamamis olmam. Aklima gelen tek sey. pixel shader'a her vertexten 1 veya 0 bir value gecirip, ps'da o value 1 mi diye bakmak (eger ucgenin koselerinden biri 0 ise poligondaki pixeller icin interpolasyon degeri 0dan kucuk olur). Ama bu cok inefektif olur.
O yuzden anes'in bunu nasil yapmayi planladigini merak ettim zaten
Bi de tabi o buyuk vertex bufferi hazirlamak gibi de guzel bi problem var