Trang

22/10/13

Upgrade lakewater effect

Nâng cấp hiệu ứng nước hồ


Kết hợp với hiệu ứng biển của NVidia mình làm thêm sóng cho nước hồ (cái này có thể là cải tiến cái OceanEffect thì đúng hơn).
Thêm một cái nữa là mình thêm hiệu ứng (PostProcess) dưới nước. Khi di chuyển Camera đi qua mặt nước thì hiệu ứng dưới nước sẽ hiện ra, còn không thì bình thường).
Cơ bản làm như thế mình có thể tạm coi là đủ.
Mình cũng đang nâng cấp cái PostProcess SceneNode của mình cho nó hoàn thiện hơn và có thể chạy mọi hiệu ứng xử lý hậu kỳ.
Sau đây là clip của nó :

11/10/13

LakeWater Shader !

Hiệu ứng nước hồ


Tìm được hiệu ứng trên trang này : http://habib.wikidot.com/projected-grid-ocean có sourceDemo nhưng viết bằng C# và code Shader là file .fx thấy rất hay.
Mình quyết định chuyển code hiệu ứng mặt nước hồ sang Irrlicht.
Các bước như sau :
 + Chuyển .fx sang thành project trong RM
 + Chuyển sang Irrlicht, chỉnh lại tham số thích hợp cho nó hoạt động vừa ý.
Clip của nó :

6/10/13

NVidia SDK "OCean Shader" to Irrlicht

Chuyển hiệu ứng Ocean của NVidia SDK
sang Irrlicht


Chỉnh mấy hôm rồi cái hiệu ứng này mới có thể tạm chấp nhận được.
Như mình đã nói : cái Ocean shader này bản gốc trong tệp tin Ocean.fx của NVidia SDK , nó là một chương trình hoàn chỉnh. Nhưng có một số cái cần thay đôi khi chuyển sang dùng Irrlicht cho nó là :
- Nó dùng texCUBE để tạo ảnh phản chiếu (Irr không support cái này)
- Việc chuyển từ file .fx sang file hlsl (DirectX) trong Irrlicht không dễ một chút nào. Mình đã dùng FxComposer để xem nó như thế nào , dùng RenderMonkey để tách nó ra thành 02 phần VertexShader và Pixel Shader. Sau đó mới chuyển sang Irrlicht thành 01 file .hlsl.
- OCean Shader của NVidia chỉ hiện CubeBox tĩnh, còn của mình là EnvMap động nên cài đặt khác nhau hoàn toàn.
- Mình chỉ sữ dụng lại phần code tạo hiệu ứng sóng nước và tán xạ mặt nước thôi, còn hiệu ứng môi trường thì lấy từ ShaderDesigner !
Nhưng cuối cùng cũng có thể xem là xong.
Clip của nó đây :

5/10/13

Erosion shader (from RM (GLSL) to HLSL in Irrlicht

Chuyển hiệu ứng xói mòn từ RenderMokey (GLSL) sang Irrlicht (HLSL & GLSL)

Hiệu ứng này làm cho vật liệu bị cũ đi một cách rất hay và chân thực. Dùng hiệu ứng này trong Game thì sẽ tiếc kiệm rất nhiều công sức để tạo nhiều mô hình (các đồ vật cũ hay khác nhau một chút)
Trong RenderMonkey  chỉ có hiệu ứng này dạng GLSL shader chứ không có HLSL. Mình đã nâng cấp cái project đó của RM lên để có hiệu ứng này chạy trong HLSL.
Việc chuyển code shader này sang Irrlicht thì lại rất dễ. Vì mọi ví dụ từ RM đều chuyển sang Irr một cách dễ dàng.
Mình đang nghiên cứu chuyển các file .fx hay gfx sang thành project trên RM rồi sau đó chuyển nó sang Irr. Trước tiên mình bắt đầu bằng hiệu ứng mặt biển trong ví dụ của NVidia SDK .
Nhưng phải khắc phục thêm nhiều thứ như texCube chuyển thành tex2D, các phép toán ma trận, và hoán đổi toạ độ x,z....
Cũng mai là do mới làm xong hiệu ứng phản xạ môi trường nên phần phản xạ mình áp dụng ngay vô luôn (thay texCube bằng tex2D trong HLSL do Irr không support SamplerCube)
 

Sau đây là clip của hiệu ứng xói mòn :

Bài đăng phổ biến