Ogre 發光效果

2021-06-21 12:10:52 字數 3185 閱讀 1129

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進行疊加,第乙...