CN113750536A - 一种基于着色器的2d像素火焰方法及其系统 - Google Patents

一种基于着色器的2d像素火焰方法及其系统 Download PDF

Info

Publication number
CN113750536A
CN113750536A CN202010500409.5A CN202010500409A CN113750536A CN 113750536 A CN113750536 A CN 113750536A CN 202010500409 A CN202010500409 A CN 202010500409A CN 113750536 A CN113750536 A CN 113750536A
Authority
CN
China
Prior art keywords
flame
map
pixel
shader
frame buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010500409.5A
Other languages
English (en)
Other versions
CN113750536B (zh
Inventor
刘德建
胡铭
陈宏展
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian TQ Digital Co Ltd
Original Assignee
Fujian TQ Digital Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian TQ Digital Co Ltd filed Critical Fujian TQ Digital Co Ltd
Priority to CN202010500409.5A priority Critical patent/CN113750536B/zh
Publication of CN113750536A publication Critical patent/CN113750536A/zh
Application granted granted Critical
Publication of CN113750536B publication Critical patent/CN113750536B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites

Abstract

本发明提供了一种基于着色器的2D像素火焰方法,所述方法包括如下步骤:步骤S1、从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;步骤S2、根据着色器绘制参数渲染物体到帧缓存;步骤S3、将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果;本发明能将2D像素火焰着色器化可以快速开发出效果,方便快捷的调整效果。

Description

一种基于着色器的2D像素火焰方法及其系统
技术领域
本发明涉及动画制作技术领域,特别是一种基于着色器的2D像素火焰方法及其系统。
背景技术
2D像素火焰是使用着色渲染模拟火焰的浮动的效果,是游戏中技能和场景表现经常使用的表现方法,现有技术基本是使用贴图动画的方式,按照时间流逝播放贴图动画。其中,现有技术存在如下缺点:1、资源量大,制作贴图的时候需要每帧制作贴图。2、灵活性差,调整火焰的大小等参数都需要重新制作资源。
发明内容
为克服上述问题,本发明的目的是提供一种基于着色器的2D像素火焰方法,游戏资源的制作只要靠着色器参数进行调整即可实现,提高了工作效率,且降低了CPU端的压力。
本发明采用以下方案实现:一种基于着色器的2D像素火焰方法,所述方法包括如下步骤:
步骤S1、从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
步骤S2、根据着色器绘制参数渲染物体到帧缓存;
步骤S3、将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
进一步的,所述步骤S2进一步具体为:步骤S21、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S22、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S23、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S24、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S25、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S26、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S27、求得最终输出到帧缓存的颜色值得到帧缓存中的数值,即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
本发明还提供了一种基于着色器的2D像素火焰系统,所述系统包括:参数输入模块、数据处理模块、以及合并输出模块;
所述参数输入模块,用于从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
所述数据处理模块,用于根据着色器绘制参数渲染物体到帧缓存;
所述合并输出模块,用于将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
进一步的,所述数据处理模块进一步通过以下步骤实现:步骤S11、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S12、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S13、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S14、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S15、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S16、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S17、求得最终输出到帧缓存的颜色值得到帧缓存中的数值,即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
本发明的有益效果在于:本发明的游戏资源的制作只要靠着色器参数进行调整就可以实现,这样无需现有技术中:要量大的资源(制作贴图的时候需要每帧制作贴图),这样降低了CPU的压力,另外,灵活性差强。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于着色器的2D像素火焰方法,所述方法包括如下步骤:
步骤S1、从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
步骤S2、根据着色器绘制参数渲染物体到帧缓存;
步骤S3、将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
在本发明中,所述步骤S2进一步具体为:步骤S21、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S22、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S23、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S24、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S25、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S26、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S27、求得最终输出到帧缓存的颜色值得到帧缓存中的数值(即输出到屏幕的值),即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
其中,本发明的一实施例:根据着色器绘制参数渲染物体到帧缓存,具体步骤如下
①coordinateY=objPosY+0.5(让objPosY位于在0到1之间)
②glowSlope=1/(glowEnd-glowStart);
③glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;
④glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;
⑤noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY);
⑥glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
⑦glowTexCut>glowBrightness时glowTexOn=0,glowTexCut<=glowBrightness时glowTexOn=1;
⑧glowCut>glowBrightness时glowGlowOn=0,glowCut<=glowBrightness时glowGlowOn=1;
⑨frameBufftex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;
1)floor函数表示向下求整
2)tex2D采样贴图
3)objPosY顶点在屏幕空间Y方向位置(从输入的模型初始的顶点来获得)
4)coordinateY规范化后顶点在屏幕空间Y方向位置
5)glowSlope火焰淡出的位置
6)glowNoiseuvY噪声贴图采样的Y方向坐标(从输入的贴图纹理数据获得)
7)glowNoiseuvX噪声贴图采样的X方向坐标(从输入的贴图纹理数据获得)
8)glowPixelLevel火焰像素大小,glowPixelLevel为50代表50个像素内都用一个噪声贴图采样坐标。(从输入的着色器绘制参数获得)
9)glowNoiseuvPixY像素合并后的噪声贴图采样的Y方向坐标
10)glowNoiseuvPixX像素合并后的噪声贴图采样的X方向坐标
11)noiseTexSample噪声贴图的采样值
12)glowBrightness当前火焰是否淡出标准值
13)time每帧时间流逝差值(从输入的贴图纹理数据获得)
14)noiseTex噪声贴图(从输入的贴图纹理数据获得)
15)mainTex模型贴图(从输入的贴图纹理数据获得)
16)glowColor火焰颜色(从输入的着色器绘制参数获得)
17)glowSpeed火焰速度(从输入的着色器绘制参数获得)
18)glowStart火焰开始位置(从输入的着色器绘制参数获得)
19)glowEnd火焰结束位置(从输入的着色器绘制参数获得)
20)glowTexCut火焰中火苗数(从输入的着色器绘制参数获得)
21)glowCut火焰中火苗大小(从输入的着色器绘制参数获得)
22)glowTexOn模型贴图采样的颜色,输出到帧缓存的的百分比
23)glowGlowOn火焰颜色,输出到帧缓存的的百分比
24)frameBuff帧缓存
⑩合并其他物体效果并输出到屏幕。
请参阅图2所示,本发明还提供了一种基于着色器的2D像素火焰系统,所述系统包括:参数输入模块、数据处理模块、以及合并输出模块;
所述参数输入模块,用于从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
所述数据处理模块,用于根据着色器绘制参数渲染物体到帧缓存;
所述合并输出模块,用于将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
所述数据处理模块进一步通过以下步骤实现:步骤S11、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S12、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S13、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,glowPixelLevel为50代表50个像素内都用一个噪声贴图采样坐标。time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S14、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S15、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S16、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S17、求得最终输出到帧缓存的颜色值得到帧缓存中的数值,即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
总之,2D游戏中控制包的大小和资源制作的方便性是非常重要的指标,在现在游戏竞争的年代,快速开发出效果,方便快捷的调整效果,变成公司竞争力的指标。而资源的制作只要靠着色器参数进行调整就可以实现,将是很大的进步;本发明提高了工作效率,且降低了CPU端的压力
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (4)

1.一种基于着色器的2D像素火焰方法,其特征在于:所述方法包括如下步骤:
步骤S1、从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
步骤S2、根据着色器绘制参数渲染物体到帧缓存;
步骤S3、将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
2.根据权利要求1所述的一种基于着色器的2D像素火焰方法,其特征在于:所述步骤S2进一步具体为:步骤S21、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S22、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S23、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S24、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S25、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S26、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S27、求得最终输出到帧缓存的颜色值,即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
3.一种基于着色器的2D像素火焰系统,其特征在于:所述系统包括:参数输入模块、数据处理模块、以及合并输出模块;
所述参数输入模块,用于从CPU端传入贴图纹理数据、模型初始的顶点、着色器绘制参数到GPU端;
所述数据处理模块,用于根据着色器绘制参数渲染物体到帧缓存;
所述合并输出模块,用于将2D像素火焰效果与贴图中其他物体效果合并后输出到屏幕,从而达到模拟火焰的浮动的效果。
4.根据权利要求3所述的一种基于着色器的2D像素火焰系统,其特征在于:所述数据处理模块进一步通过以下步骤实现:步骤S11、先让顶点在屏幕空间Y方向位置进行规范化,即让objPosY位于在0到1之间:coordinateY=objPosY+0.5,其中,coordinateY是规范化后顶点在屏幕空间Y方向位置,objPosY是顶点在屏幕空间Y方向位置;
步骤S12、获取火焰淡出的位置:glowSlope=1/(glowEnd-glowStart);其中,glowSlope是火焰淡出的位置,glowStart是火焰开始位置,glowEnd是火焰结束位置;
步骤S13、获取噪声贴图的采样值,即noiseTexSample=tex2D(noiseTex,glowNoiseuvPixX,glowNoiseuvPixY)其中,noiseTexSample是噪声贴图的采样值,tex2D是采样贴图函数,noiseTex是噪声贴图,glowNoiseuvPixY是像素合并后的噪声贴图采样的Y方向坐标,glowNoiseuvPixX是像素合并后的噪声贴图采样的X方向坐标,其中,glowNoiseuvPixX=floor(glowPixelLevel*glowNoiseuvX)/glowPixelLevel;glowNoiseuvPixY=floor(glowPixelLevel*glowNoiseuvY)/glowPixelLevel–time*glowSpeed;floor函数表示向下求整,glowNoiseuvY是噪声贴图采样的Y方向坐标,glowNoiseuvX是噪声贴图采样的X方向坐标,glowPixelLevel是火焰像素大小,time是每帧时间流逝差值,glowSpeed是火焰速度;
步骤S14、根据规范化后顶点在屏幕空间Y方向位置coordinateY、火焰淡出的位置glowSlope、噪声贴图的采样值noiseTexSample,来获得当前火焰是否淡出的标准值,即glowBrightness=noiseTexSample+glowSlope*coordinateY+(–1–glowSlope*glowStart);
步骤S15、获取模型贴图采样的颜色输出到帧缓存的的百分比glowTexOn,即当glowTexCut>glowBrightness时,glowTexOn=0,glowTexCut<=glowBrightness时,glowTexOn=1;其中,glowTexCut是火焰中火苗数;
步骤S16、获取火焰颜色输出到帧缓存的的百分比glowGlowOn,即当glowCut>glowBrightness时,glowGlowOn=0,glowCut<=glowBrightness时,glowGlowOn=1;其中,glowCut是火焰中火苗大小;
步骤S17、求得最终输出到帧缓存的颜色值,即帧缓存的颜色值frameBuff=tex2D(mainTex,uv)*glowTexOn+glowGlowOn*(1-glowTexOn)*glowColor;其中,mainTex是模型贴图,uv是贴图纹理坐标,glowColor是火焰颜色。
CN202010500409.5A 2020-06-04 2020-06-04 一种基于着色器的2d像素火焰方法及其系统 Active CN113750536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010500409.5A CN113750536B (zh) 2020-06-04 2020-06-04 一种基于着色器的2d像素火焰方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010500409.5A CN113750536B (zh) 2020-06-04 2020-06-04 一种基于着色器的2d像素火焰方法及其系统

Publications (2)

Publication Number Publication Date
CN113750536A true CN113750536A (zh) 2021-12-07
CN113750536B CN113750536B (zh) 2023-09-01

Family

ID=78783673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010500409.5A Active CN113750536B (zh) 2020-06-04 2020-06-04 一种基于着色器的2d像素火焰方法及其系统

Country Status (1)

Country Link
CN (1) CN113750536B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
CN102752515A (zh) * 2011-05-11 2012-10-24 新奥特(北京)视频技术有限公司 一种图形渲染中可编程阶段火焰效果的实现方法
CN105741228A (zh) * 2016-03-11 2016-07-06 腾讯科技(深圳)有限公司 图形处理方法及装置
GB201900595D0 (en) * 2019-01-16 2019-03-06 Sony Interactive Entertainment Inc Method and system for determining blending coefficients
CN109785417A (zh) * 2018-11-29 2019-05-21 中国船舶重工集团公司第七0九研究所 一种实现OpenGL累积操作的方法及装置
CN110428484A (zh) * 2019-07-05 2019-11-08 广州多益网络股份有限公司 一种基于3d转2d的游戏换装方法
CN110478895A (zh) * 2019-08-23 2019-11-22 腾讯科技(深圳)有限公司 虚拟物品的控制方法、装置、终端及存储介质
CN110969690A (zh) * 2019-12-19 2020-04-07 福建天晴数码有限公司 一种基于纹理的顶点动画数据存储方法及其系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752515A (zh) * 2011-05-11 2012-10-24 新奥特(北京)视频技术有限公司 一种图形渲染中可编程阶段火焰效果的实现方法
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
CN105741228A (zh) * 2016-03-11 2016-07-06 腾讯科技(深圳)有限公司 图形处理方法及装置
CN109785417A (zh) * 2018-11-29 2019-05-21 中国船舶重工集团公司第七0九研究所 一种实现OpenGL累积操作的方法及装置
GB201900595D0 (en) * 2019-01-16 2019-03-06 Sony Interactive Entertainment Inc Method and system for determining blending coefficients
CN110428484A (zh) * 2019-07-05 2019-11-08 广州多益网络股份有限公司 一种基于3d转2d的游戏换装方法
CN110478895A (zh) * 2019-08-23 2019-11-22 腾讯科技(深圳)有限公司 虚拟物品的控制方法、装置、终端及存储介质
CN110969690A (zh) * 2019-12-19 2020-04-07 福建天晴数码有限公司 一种基于纹理的顶点动画数据存储方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHALLENGE: "Cocos2dx Shader笔记——火焰2", pages 1 - 7, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/36188433> *

Also Published As

Publication number Publication date
CN113750536B (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
CN110838162B (zh) 植被渲染方法及装置、存储介质及电子设备
CN103688240B (zh) 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备
CN102306391A (zh) 基于OpenGL的倒影显示处理装置及方法
US20220254089A1 (en) Shader auto-simplifying method and system based on rendering instruction flow
CN111862254B (zh) 一种基于跨渲染平台的材质渲染的方法及其系统
CN109035383A (zh) 一种体积云的绘制方法、装置及计算机可读存储介质
US8133117B2 (en) Game apparatus, game message displaying method and storage medium storing game program
CN101615300B (zh) 一种屏幕空间微结构表面对象环境光遮挡方法
US6903746B2 (en) Rendering processing method
CN109358852A (zh) 一种使用shader实现车载GUI换肤的方法
CN105550973B (zh) 图形处理单元、图形处理系统及抗锯齿处理方法
CN110969690B (zh) 一种基于纹理的顶点动画数据存储方法及其系统
US6760032B1 (en) Hardware-implemented cellular automata system and method
CN115375811A (zh) 一种适用于Cesium的模型贴图渲染方法
CN113750536A (zh) 一种基于着色器的2d像素火焰方法及其系统
CN112017254B (zh) 一种混合式光线跟踪绘制方法及系统
CN108369343B (zh) 对呈现流水线的直接运动传感器输入
CN106910240B (zh) 一种实时阴影的生成方法及装置
CN1997191A (zh) 一种在移动通讯终端中显示动画的方法
GB2432499A (en) Image generation of objects distant from and near to a virtual camera
US7724255B2 (en) Program, information storage medium, and image generation system
WO2023165198A1 (zh) 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品
US8897821B2 (en) Method for providing visual effect messages and associated communication system and transmitting end
CN115546378A (zh) 一种对象渲染的方法、相关装置、设备以及存储介质
JP4688648B2 (ja) プログラム、情報記憶媒体及び画像生成システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant