中級Shader教程05 2D雪花

2021-08-19 05:33:42 字數 1924 閱讀 8014

layout: post

title: 「中級shader教程05 2d雪花」

date: 2018-03-27 16:09:03

author: jiepeng tan

categories:

本篇主要技術點有:

grid 空間劃分

2d模擬3d中"分層"的概念

透視模擬

在前面中介紹了2d模擬3d中的一些小技巧,這裡用到了透視以及空間劃分的概念,這裡將不再重複:

ps:後面()中的數字表示前面透視中的特點

根據 中級shader教程02 基本圖形2d中介紹了相應的一些概念

將上述知識具體到觀察下雪這各場景中:

雪花前面的大點(1)

雪花前面的少點(2)

雪花前面的亮點(3)

其他的特點有:

整體是向下降落,因為透視關係後面的下降速度慢點(2)

現實中的雪花的薄厚程度不一

雪花的空間分布比較隨機

雪花的下落過程的可能會左右移動

1.空間劃分
uv *=10

;//將uv放大後frac

uv =

frac

(uv)

;uv-

=0.5;

2.新增隨機值
fixed2 rand22

(fixed2 co)

fixed2 r =

rand22

(floor

(uv));

col =

fixed3

(r,0.0

);

3.uv偏移
float2 rgrid =

rand22

(floor

(uv));

//0~1.0

uv =

frac

(uv)

;uv -

=(rgrid*

2.0-

1.0)

*0.35

;uv -

=0.5

;

4.繪製基本圖形
float r =

length

(uv)

;

5.新增不同的layer針對不同的layer 需要調節的引數有

1.格仔數量

2.y軸移動速度

3.x軸移動速度

4.格仔的隨機值

基本屬性定義

size_rate (

"size_rate"

,float)=

0.1 xspeed (

"xspeed"

,float)=

0.2 yspeed (

"yspeed"

,float)=

0.5 layers (

"layers"

,float)=

10

單層繪製

float3 snowsinglelayer

(float2 uv,

float layer)

endcg

}//end pass

}//end subshader

}//end shader

1.多層繪製

float3 snow

(float2 uv)

return acc;

}

中級Shader教程06 2D火焰粒子

layout post title 中級shader教程06 2d火焰粒子 date 2018 03 27 16 09 03 author jiepeng tan categories grid 空間劃分 2d模擬3d中 分層 的概念 透視模擬 基於grid的隨機變化 旋轉,位移,閃爍 sin 週期...

中級Shader教程16 水渲染

layout post title 中級shader教程16 水渲染 date 2018 04 23 16 09 03 author jiepeng tan categories 1.noise和fbm請參考這篇文章中給出的鏈結 2.ranymarching 框架 1.基本形狀構造 這裡利用了noi...

中級Shader教程19 動態霧

layout post title 中級shader教程19 動態霧 date 2018 04 23 16 09 03 author jiepeng tan categories 1.noise和fbm請參考這篇文章中給出的鏈結 2.ranymarching 框架 1.利用fbm來模擬空間霧的密度分...