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

2021-08-19 05:25:06 字數 1952 閱讀 4037

layout: post

title: 「中級shader教程06 2d火焰粒子」

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

author: jiepeng tan

categories:

grid 空間劃分

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

透視模擬

基於grid的隨機變化(旋轉,位移,閃爍)

sin 週期變化(閃爍)

1.空間劃分

float2 coord = uv*_gridsize;
2.交錯grid

if

(abs

(fmod

(coord.y,

2.0)

)<

1.0)

//讓格仔交錯

coord.x +

=0.5

;

3.基於grid的隨機化

float2 gridindex =

float2

(floor

(coord));

float rnd =

hash12

(gridindex)

;//根據id 獲取hash值

4.整體位移

float2 coord = uv*_gridsize -

float2(0.

,yoffset)

;//整體沿y軸上公升

float tempy = gridindex.y + yoffset ;

float life =

min(

10.0*(

1.0-

min(

(tempy)/(

24.0

-20.0

*rnd)

//生命值隨機

,1.0))

,1.0

);

5.加點閃爍

float sinval =

sin(pi*1.*

(0.3

+0.7

*rnd)

*ftime+rnd*

10.)

;//加點亮度的變化實現閃爍 隨週期變化

float period =

clamp

(pow

(pow

(sinval,5.)

,5.),

0.,1.)

;float blink =

(0.8

+0.8

*abs

(period)

);

6.加點旋轉

float2 rotate =

float2

(sin

(deg)

,cos

(deg));

//單位圓旋轉偏移

float radius =

0.5-size*

0.2;

float2 ciroffset = radius*rotate;

//float2 part =

frac

(coord-ciroffset)

-0.5

;//讓格仔自己旋轉起來 位置變

float len =

length

(part)

;

6.最終效果

整體**:

float3 _color;

float _gridsize;

float _rotspd;

float _yspd;

float3 processfrag

(float2 uv)

return acc;

}

中級Shader教程05 2D雪花

layout post title 中級shader教程05 2d雪花 date 2018 03 27 16 09 03 author jiepeng tan categories 本篇主要技術點有 grid 空間劃分 2d模擬3d中 分層 的概念 透視模擬 在前面中介紹了2d模擬3d中的一些小技巧...

中級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來模擬空間霧的密度分...