博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新瓶灌旧酒,Hugo老师的Fire算法的GPU版本.
阅读量:4191 次
发布时间:2019-05-26

本文共 1103 字,大约阅读时间需要 3 分钟。

没有完全把Hugo老师的demo给照搬过来.只照搬了两样东西.那个火焰纹理和Coolmap的资源, 以及核心部分的算法.

算法原始版本见这里

这个是我把它程序里用的火焰调色板保存成了一个bmp

这个GPU版的抓图.注意RTT一定要是8bit的,浮点纹理会出问题.

参数调整的不是很好.比Hugo老师的那个要丑一些.今天晚上懒得弄了.不管了.

以下是用来翻滚火焰的GLSL Shader
//=====FireUp.ps=========== 
/*
 
 
 
*/

uniform sampler2D Texture0;

uniform sampler2D coolMap;
uniform vec4      pixel_dim;

void main(void)
{   
     vec2      texCoord = gl_TexCoord[0].xy;
     texCoord.y = texCoord.y -  pixel_dim.y;//Roll up
     vec4 v3   = texture2D( Texture0, texCoord );
     vec4 v4   = texture2D( coolMap , gl_TexCoord[0].xy );
    
     vec4  aLeft   = texture2D( Texture0, vec2(texCoord.x - pixel_dim.x , texCoord.y                 )  );
     vec4  aRight  = texture2D( Texture0, vec2(texCoord.x + pixel_dim.x , texCoord.y                 )  );
     vec4  aBottom = texture2D( Texture0, vec2(texCoord.x , texCoord.y  -  pixel_dim.y )  );
     vec4  aTop    = texture2D( Texture0, vec2(texCoord.x , texCoord.y  +  pixel_dim.y )  );
    
     if( texCoord.y  -  pixel_dim.y < 0.0 ) aBottom = v3;
     vec4 vFinalColor = aLeft + aBottom + aRight + aTop ;
     vFinalColor = vFinalColor / 4.0;   
     vFinalColor -= 0.09*v4;

     gl_FragColor = vec4( vFinalColor.xxx ,1.0);

}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1349816

你可能感兴趣的文章
mysql 用户权限管理
查看>>
spring框架学习1 spring的介绍
查看>>
spring框架学习2 spring的组成及拓展
查看>>
Createprocess 函数 调用出错以及解决
查看>>
mfc listctrl删除选中项的问题
查看>>
System权限下获取路径以及使用用户权限启动进程
查看>>
win7之session理解
查看>>
c++中 explicit的作用
查看>>
windows中python环境搭建
查看>>
全双工、半双工的区别
查看>>
qDebug的用法
查看>>
函数指针以及typedef
查看>>
c++实现对"[]"和"()"的重载
查看>>
使用CreateRemoteThread把代码远程注入指定exe执行
查看>>
boost库中sleep方法详解
查看>>
boost thread的用法
查看>>
C++之tinyXML使用
查看>>
C++使用TinyXml2解析Xml
查看>>
libjson 编译和使用
查看>>
boost mutex lock 使用
查看>>