Senin, 25 November 2019

Mengenal Beberapa Tipe Data dan Fungsi pada Shader Minecraft PE (GLSL)

Halo teman-teman!!
Pada artikel kali ini kita akan membahas tentang tipe data dan fungsi dasar pada bahasa Shader Minecraft PE (glsl).

Karena penjelasan di google kadang sulit dipahami, maka saya akan coba menggunakan penyampaian sendiri. Semoga saja kalian paham ya 😁.

Source: Aplikasi Shader Editor

Pada dasarnya, ada beberapa tipe data dan fungsi paling dasar untuk posisi dan pewarnaan. Yaitu bool, int, float, vec2, vec3, dan vec4.


Pengertian dari fungsi di atas adalah, sbb:

  • bool, merupakan tipe data yang hanya menyimpan data bernilai true atau false. Contoh: bool jalankan = true;
  • int, merupakan tipe data yang hanya menyimpan nilai bilangan bulat. Contoh: int angka = 10;
  • float, merupakan tipe data yang hanya menyimpan nilai bilangan desimal. Contoh: float angka = 10.0;
  • vec2, merupakan fungsi yang menyimpan 2 bilangan int atau 2 bilangan float. Biasanya digunakan untuk menyimpan sumbu x dan sumbu y ( 2 dimensi ). Contoh: vec2 pos = vec2( 1.0, 0.0 );
  • vec3, merupakan fungsi yang sama dengan vec2. Hanya saja vec3 menyimpan 3 sumbu, yaitu sumbu x, y dan z ( 3 dimensi ). Terkadang digunakan untuk pewarnaan juga (RGB). Contoh: vec3 pos = vec3( 1.0, 0.0, 1.0 );
  • vec4, merupakan fungsi yang menyimpan 4 bilangan int ataupun float. Fungsi ini digunakan untuk menyimpan warna, yaitu merah, hijau, biru, dan transparansi (RGBa). Contoh: vec4 warna = vec4( 1.0, 1.0, 0.0, 1.0 );
  • void main(), merupakan fungsi pertama yang akan di jalankan oleh program
  • gl_FragColor, merupakan keluaran dari kode warna yang telah diproses menjadi grafik ketika game dimainkan.
  • gl_Position, merupakan posisi blok
  • diffuse, merupakan variabel default Minecraft PE/BE untuk menampung proses pengolahan warna.
  • uv1, merupakan detektor cahaya. uv1.x sebagai detektor cahaya blok dan uv1.y sebagai detektor cahaya langit.
  • POSITION, merupakan koordinat blok dengan cakupan 16x16x16 (x, y, z) dan akan menjadi 0 lagi setelah mencapai angka 16.
  • worldPos, merupakan variabel yang valuenya mengikuti pemain ( Pada pemain nilainya xyz(0,0,0)) dan batas maksimum valuenya saya gak tau wkwkk.
  • mix( x, y, z ), merupakan fungsi penggabungan nilai x dan y berdasarkan nilai z. ( Jika z bernilai 0, maka hasilnya adalah x, dan jika z bernilai 1 maka hasilnya adalah y ).
  • FOG_COLOR, merupakan warna kabut.
  • FOG_CONTROL, merupakan kondisi cuaca/suasana di dalam game.
  • texture2D( x, y ), merupakan pengambilan texture pack kedalam kode dan dijadikan nilai rgb per pixelnya. x adalah sampel gambarnya ( perpixel ) dan y adalah koordinat texture yang diambil. Contoh : texture2D( TEXTURE_0, uv0 ); untuk texture pack dan texture2D( TEXTURE_1, uv1 ); untuk pencahayaan siang dan malam.
Nah, tipe data dan fungsi di atas saya jelaskan dengan pemahaman saya sendiri dan jika ada kesalahan bisa dikoreksi. Untuk fungsi lainnya, kalian bisa cari di internet dengan cara "nama_fungsi glsl" contoh "mix glsl".
Untuk tipe data dan fungsi dasar pada Shader Minecraft PE (glsl) saya rasa cukup sampai di sini. Dan Good Luck 😁.

42 komentar:

  1. Resolution dalam Minecraft itu apa?

    BalasHapus
    Balasan
    1. Di minecraft pe gak ada resolution. Gambar cuma screenshoot dari Shader editor 😅

      Hapus
    2. Ohh, gua ngerti, jadi resolution itu resolusi gambar menurut layar

      Hapus
  2. Bang tutorial ilangin code air gerak
    Contoh (shader Bicubic/ shader abang) yg airnya realistis jadi biasa aja

    BalasHapus
    Balasan
    1. Menghapus kode gerak air tergantung bentuk kodenya. karena pembuatan kode berdasarkan logika si pembuat. Setiap creator punya gaya pembuatan kode masing-masing.

      Hapus
  3. Bedanya GLSL sama HLSL itu apa

    BalasHapus
    Balasan
    1. Penulisan bahasanya beda. Di Minecraft BE, hlsl digunakan untuk windows dan xbox. Sisanya pake glsl.

      Hapus
  4. Bang
    Cara buat gerak air sama daun di tutorial youtube yok ngebug bang?
    Kodenya udah gua tulis bener tapi daun sama airnya malah ngilang?? Itu mengatasinya gimana bang?

    BalasHapus
    Balasan
    1. Iya sama nge bug mungkin kodenya udh lama dan mungkin kita yg kurang teliti bro?!.

      Hapus
  5. Kak Tutorial DirectLight Dong

    BalasHapus
  6. Entah aku pernah liat di Cleo's Shader(milik bang irshad)ada float1,float2 sampe float5 apa itu sebenarnya bang?

    BalasHapus
  7. uniform int SHADOW_IN_POS;
    Buat dynamic shadow

    BalasHapus
    Balasan
    1. Pala kau,mana ada dynamic shadow di mcpe,terrain mcpe dengan terrain pc beda,goblok.

      Hapus
  8. Bang cara gw pengen ganti bentuk air shader punya orang lain gmn bang? misalnya shader BSL mau gw ganti airnya dari shader Continuum gmn bang?

    BalasHapus
  9. Bang itu minecraft kenapa kok shadownya pasti seperti itu beda sama pc

    BalasHapus
    Balasan
    1. mcpe gk support realtime shadow atau dynamic shadow.
      karna terrain mcpe beda seperti terrain pc.

      Hapus
  10. Bg, tolong ajarin cara menggunakan FOG_CONTROL dan letak kodenya di atas kalimat yang mana saya juga nga tau wkwkwk

    BalasHapus
  11. fungsi dari "length,sqrt,reflect,void,ceil dan stp" itu apa bang?

    BalasHapus
  12. liat di grup belajar shader di facebook:
    - M.S.E. Official Group
    - Minecraft Indonational

    BalasHapus
  13. Apa maksud dari:
    - max dan min
    - pow
    - sin
    - tan
    - cos
    - in
    - out
    - inout
    - sign
    - sqrt
    - reflect
    - normalize
    - smoothstep
    - fract

    Menunggu jawaban dari Pio Diamond(C++ Pro Coder):V

    note:
    My Facebook Account: Shader GLSL
    uniform sampler2D RAY_TRACE;
    uniform int SPECULAR_LIGHT;

    highp vec4 entah(vec4 100_abad_baru_dibales){
    vec4 njer = vec4(0.0);
    for(int jawab = 0; jawab < 9; jawab++){
    njer = 100_abad_baru_dibales;
    }
    return njer;
    }

    BalasHapus
    Balasan
    1. kayak math function, cari aja di google javascript math function

      Hapus
  14. cara coding hlsl gimana bang/ biki tutorial aja

    BalasHapus
  15. lebih detail lagi bang biar semua paham

    BalasHapus
  16. Bang, klo edit shaders gmn, edit warna pasir gurun, ane nemu shaders bagus tp warna pasir gurunnya terang bgt

    BalasHapus
    Balasan
    1. Hilangin kode saturasi worldnya di renderchunk.fragment diatas #ifdef FOG, ganti dengan tonemap taruh tonemapnya diatas void main dan kode aktifatornya diffuse.rgb += Tm(diffuse.rgb); taruh diatas #ifdef FOG biar pasirnya gak terang tapi warna grassnya bagus

      Hapus
  17. Bang itu bicubic shaders kenapa kok gk ada file renderchunk nya

    BalasHapus
  18. Bang, gimana caranya raycast dengan shader

    BalasHapus
  19. Bang, gimana cara ngilangin cahaya dari block di shader DSPE, soalnya mau pake shader RGB light tapi setelah kutambahin DSPE, RGB light-nya gak ada

    BalasHapus
  20. Balasan
    1. menurut pendapat saya shader adalah suatu program / coding mengcoding untuk memperbagus graphics dalam game atau lain sebagainya itu setau saya kalau salah mohon maaf

      Hapus
  21. Bang fungsi SEASONS itu apa
    Kan setau saya BLEND utk air/hal transparan yg lain
    FANCY utk block
    ALPHA_TEST utk benda dgn alpha
    Kalo SEASONS buat apa bang?

    BalasHapus
  22. bang saya kan lagi iseng nyoba buat gerakan daun yang gerakannya itu bisa lambat terus kenceng , lambat terus kenceng, nah aku udah tanya di beberapa shader creator katanya itu, buatlah beberapa gerakan daun lagi yang nominalnya berbedah dan diganti menjadi cos ataupin sin, saya sudah coba kok malah ngebug? apa karna posisi naruhnya salah �� ini yg salah tulis didalam renderchunk.vertex : #ifdef ALPHA_TEST
    if(color.g>color.r){
    gl_Position.x += cos(TIME*4.0+POSITION.x+POSITION.z+POSITION.y+POSITION.x)*cos(POSITION.z)*0.03;
    gl_Position.x += sin(TIME*3.5+POSITION.x+POSITION.z+POSITION.y+POSITION.x)*cos(POSITION.z)*0.03;
    gl_Position.x += pos(TIME*3.0+POSITION.x+POSITION.z+POSITION.y+POSITION.x)*cos(POSITION.z)*0.03;}
    #endif

    tolong bang kasih tau saya salahnya dimana ����

    BalasHapus
    Balasan
    1. Kode itu emang ngebug,nih kode baru

      #ifdef ALPHA_TEST
      if(color.g > color.r){
      highp vec3 wave = POSITION.xyz; [bisa diganti worldPos.xyz;]

      kodenya:
      gl_Position.x += sin(TIME*2.0+wave.z+wave.z+wave.x + cos(TIME*1.0+wave.y+wave.x)) * sin(wave.x+wave.y) * 0.18;
      }
      #endif

      Selanjutnya lu bisa kreasikan sendiri,semoga berguna...

      Hapus
  23. Bang kode nya kok gk work padahal udah teliti

    Kalau bisa abang tulis aja bang di komentar

    Loading......
    #pio diamond

    Plis bang tulisin di kolom komentar

    BalasHapus
  24. Bang tulisin kode pencerahan di komentar

    BalasHapus