|
|

楼主 |
发表于 2006-11-30 01:57:00
|
显示全部楼层
Re: 引擎完成对视频纹理的无缝支持
5层纹理叠加,其中两层是视频。
texture stage 3 是摄像头的视频.
texture stage 4 是一个辛晓琪的MV
发个恶心一点的图
/*
< aramater>
<sampler name="NormalTexture" stage = "0" manager="default" />
<sampler name="reflectTex" stage = "1" manager="default" file="reflect.dds" address="edge"/>
<sampler name="underWaterTex" stage = "2" manager="default" file="underWater.tga" />
<sampler name="texCamera" stage = "3" manager="default" file="Camera" />
<sampler name="texVideo" stage = "4" manager="default" file="videoTexture.mpeg" />
</Paramater>
*/
uniform sampler2D NormalTexture;
uniform sampler2D underWaterTex;
uniform sampler2D texCamera;
uniform sampler2D texVideo;
uniform samplerCube reflectTex;
void main( void )
{
vec2 texCoord = gl_TexCoord[0].xy;
vec3 viewDir = vec3(0.5,0.5,0.25) - vec3(texCoord.x, texCoord.y , 0.0) ;
vec3 fNormal = normalize( vec3(0.1, 0.1 , 1.0) * texture2D( NormalTexture, texCoord ).xyz );
vec3 nViewDir = normalize(viewDir.xyz);
float cos_vn = dot(nViewDir , fNormal);
vec3 refDir = normalize(2.0 * fNormal * cos_vn - nViewDir);
gl_FragColor = 0.4 * vec4(texture2D( underWaterTex, texCoord - 0.1 * fNormal.yx).xyz,1.0) +
0.8 * vec4(texture2D( texCamera, texCoord - 0.1 * fNormal.xy).xyz,1.0) +
0.4 * vec4(texture2D( texVideo , texCoord + 0.1 * fNormal.yx).xyz,1.0) +
0.6 * vec4(textureCube( reflectTex , refDir.xzy ).xyz,1.0) ;
}
|
-
|