ogre 對單個物體使用 glow 效果
使用的資源:
1. glow.compositor
compositor glow
//get scene rendered with 'glow' scheme
target glowmap
pass render_scene }
//blur it along x.
target atob
pass render_quad }
//blur along y, add to original, and output.
target_output }
} }
2. glow.cg
float4 glowa_fp(
float2 uv: texcoord0,
uniform sampler2d scene: register(s0),
uniform float4 invtexsize
//uniform float time
) : color
#define render_scene 1
#define blur_radius 3
float4 glowb_fp
( float2 uv: texcoord0,
uniform sampler2d scene: register(s0),
uniform sampler2d blurx: register(s1),
uniform float4 invtexsize//,
//uniform float time
) : color
render_scene 是光圈的半徑,可以根據自己需要和效果進行設定。
後面的colour是設定光圈的權重和比例,也可自己進行調解設定。
3. glow.program
fragment_program glowa_fp cg
profiles ps_2_0 arbfp1
} material glowcompositormat/glowa
texture_unit map }
} }
fragment_program glowb_fp cg
profiles ps_2_0 arbfp1
} material glowcompositormat/glowb
texture_unit scene
texture_unit map }
} }
4.glowmateriallistener.h
#ifndef glowmateriallistener_h__
#define glowmateriallistener_h__
#include
#include
class glowmateriallistener : public ogre::materialmanager::listener
ogre::technique *handleschemenotfound(unsigned short, const ogre::string&schemename, ogre::material*mat, unsigned short, const ogre::renderable*)
return null;
} };
#endif //glowmateriallistener_h__
前面三個放到resource中,並在resources.cfg中加入glow的路徑。
後面乙個放到作為乙個標頭檔案你的**中。
**中加入合成器:
#include"glowmateriallistener.h"
...
注釋:前面兩句是加入合成器,並設定是否渲染合成器到rendering中;後面是使用所設定的資源。
實踐中遇到的關鍵點 :
glow效果的開啟和關閉:
compositormanager::getsingleton().setcompositorenabled(mcamera->getviewport(),"glow", true);
在進行glow效果開啟時,設定上面最後乙個引數為「true」;
在進行glow效果關閉時,設定上面最後乙個引數為「false」;
glow效果隨著螢幕大小改變時如何設定:
ogre::compositormanager::getsingleton().removecompositor(m_camera->getviewport(),"glow");
resizecamerawindow();
ogre::compositormanager::getsingleton().addcompositor(m_camera->getviewport(),"glow");
ogre::compositormanager::getsingleton().setcompositorenabled(m_camera->getviewport(),"glow", true);
步驟:首先去掉合成器,然後重置視窗大小,利用camera重新把合成器加上去。這種情況在改變視窗大小時呼叫,否則會出現渲染效果模糊的情況!
ø glow效果在具體使用時如果設定:
material->gettechnique(0)->setschemename("glow");
前面建立了glow的合成器後,只需要glow效果的材質中設定setschemename即可。
示例效果:
整個立方體發光
立方體一條邊發光
選擇整個立方體,選擇立方體的一條邊時發光的效果。
flex 發光效果
var glow glow new glow 水平的初始發光距離 glow.blurxfrom 0 水平發光結束時的距離 glow.blurxto 50 glow.bluryfrom 0 glow.bluryto 50 發光的持續時間,是以毫秒為單位的 glow.duration 1000 發光時的...
Shader 自發光效果
表面貼圖 預設灰色 color color color 0,0,0,1 為貼圖附加的顏色 預設為白色 atmocolor atmosphere color color 0,0.4,1.0,1 光暈顏色 size size float 0.1 光暈範圍 outlightpow falloff floa...
WPF 外發光效果
wpf的濾鏡效果,目前框架自帶的只有blureffect和dropshadoweffect兩種。dropshadoweffect為投影效果,只能顯示黑灰顏色的效果,如果想讓乙個邊框達到別的顏色的濾鏡效果,我們可以利用blureffect進行模糊處理實現。實現原理主要是用兩個border進行疊加,第乙...