0 registered members (),
1,459
guests, and 9
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Working texture projectors :)
[Re: Matt_Aufderheide]
#32648
09/02/04 15:25
09/02/04 15:25
|
Joined: Oct 2002
Posts: 8,939 planet.earth
ello
Senior Expert
|
Senior Expert
Joined: Oct 2002
Posts: 8,939
planet.earth
|
cool.. this is for sure extreeem usefull. lets see:)
in pass p0 there is a typo: shouldnt it be mtlSkin4 for the projection?
Last edited by ello; 09/02/04 15:46.
|
|
|
Re: Working texture projectors :)
[Re: ello]
#32649
09/02/04 21:26
09/02/04 21:26
|
Joined: Jul 2004
Posts: 1,710
MMike
Serious User
|
Serious User
Joined: Jul 2004
Posts: 1,710
|
i had to change mtlskin4 to mtlskin1..
and add mtlworldprojection matrix
And how do you did the shadow on the screen shot!?
I casn't make it to chow on the ground, but player is affected and it shows the shadow, but now on the floor.. HOw do i di that?
Thx in advance
The code is this.. i don't know if i follow the order of intructions.. maybe thats the problem...
here is it.. i won't use code tag, cause it doesn't work in script editor when pasting..
var matTexProj[16];
var tempmatrix[16];
function mat_projection_init()
{
mtl.enable_render=on;
//set up the texture projection matrix
matTexProj[0]=my.skill80;
matTexProj[1]=my.skill81;
matTexProj[2]=my.skill82;
matTexProj[3]=my.skill83;
matTexProj[4]=my.skill84;
matTexProj[5]=my.skill85;
matTexProj[6]=my.skill86;
matTexProj[7]=my.skill87;
matTexProj[8]=my.skill88;
matTexProj[9]=my.skill89;
matTexProj[10]=my.skill90;
matTexProj[11]=my.skill91;
matTexProj[12]=my.skill92;
matTexProj[13]=my.skill93;
matTexProj[14]=my.skill94;
matTexProj[15]=my.skill95;
mat_set(mtl.matrix,matWorld);
mat_multiply(mtl.matrix,matTexProj);
}
bmap projectiontex = <light_alpha_1.tga>;
material mat_projection
{
skin1 = projectiontex;
event = mat_projection_init;
flags = tangent;
effect =
"
texture mtlSkin1; //projector// skill4
texture entSkin1; //colormap
matrix matWorld;
matrix matMtl;
matrix matWorldViewProj;
technique projector
{
pass p0 //projector
{
//load matrices
VertexShaderConstant[0] = <matWorld>; //World Matrix
VertexShaderConstant[8] = <matWorldViewProj>; //World*View*Proj Matrix
VertexShaderConstant[95] = <matMtl>;
//range constant
VertexShaderConstant[33] = (0.01f, 0.5f, 0.05f, 0.0f);
Texture[0] = <mtlSkin1>; //projection tex
Texture[1] = <entSkin1>; //projection tex
AddressU[0] = Clamp; // don't wrap around edges
AddressV[0] = Clamp;
AddressU[1] = Clamp; // don't wrap around edges
AddressV[1] = Clamp;
zWriteEnable=true; // enables writing to the z-buffer
//AlphaBlendEnable=true; // disables alpha blending
//srcblend=destcolor;
//destblend=one;
VertexShader=
decl
{
stream 0;
float v0[3]; //position
float v3[3]; //normal
float v7[3]; //uv
float v8[3]; //tangent
}
asm
{
vs.1.1
; position in clip space
m4x4 oPos, v0, c8
; position in texture projection space
m4x4 r10,v0,c95
; Divide each component by the range value
mul r10, r10, c33.x
; multiply with 0.5 and add 0.5
mad r10, r10, c33.yyyy, c33.yyyy
; map the x and y components into the first texture
mov oT0.xy, r10.xy
mov oT1.xy, v7.xy; color
};
PixelShader=
asm
{
ps.1.1
tex t0
tex t1
mov r0,t0
mul r0,r0,t1
};
}
}
";
}
var scan_radius=210;
var lighttimer=0;
function light_data()
{
if event_type==event_detect && my.skill4 == 6666 //projector
{
your.material=mat_projection;
//you.skill100=6666;
//texture projection matrix
you.skill80=my.skill80;
you.skill81=my.skill81;
you.skill82=my.skill82;
you.skill83=my.skill83;
you.skill84=my.skill84;
you.skill85=my.skill85;
you.skill86=my.skill86;
you.skill87=my.skill87;
you.skill88=my.skill88;
you.skill89=my.skill89;
you.skill90=my.skill90;
you.skill91=my.skill91;
you.skill92=my.skill92;
you.skill93=my.skill93;
you.skill94=my.skill94;
you.skill95=my.skill95;
// return;
}
}
function light_view_matrix()
{
//temporary matrix to store view matrix
vec_set(camera.x,my.x);
vec_set(camera.pan,my.pan);
wait(1);
mat_set(tempmatrix,matView);
my.skill80=tempmatrix[0];
my.skill81=tempmatrix[1];
my.skill82=tempmatrix[2];
my.skill83=tempmatrix[3];
my.skill84=tempmatrix[4];
my.skill85=tempmatrix[5];
my.skill86=tempmatrix[6];
my.skill87=tempmatrix[7];
my.skill88=tempmatrix[8];
my.skill89=tempmatrix[9];
my.skill90=tempmatrix[10];
my.skill91=tempmatrix[11];
my.skill92=tempmatrix[12];
my.skill93=tempmatrix[13];
my.skill94=tempmatrix[14];
my.skill95=tempmatrix[15];
}
ACTION lightobject
{
MY.passable=ON;
MY.shadow=OFF;
my.flare=off;
my.transparent=off;
my.invisible=on;
my.enable_detect=on;
my.event=light_data;
my.skill100=lighttimer;
lighttimer+=1;
if my.skill4==6666 //is a projector
{
wait(my.skill100);
light_view_matrix();
while(1)
{
temp.pan = 360;
temp.tilt = 360;
temp.z = 220;
indicator=NULL;
scan_entity(my.x,temp);
wait(1);
}
}
}
Last edited by Unknot; 09/02/04 21:40.
|
|
|
Re: Working texture projectors :)
[Re: Alexander Esslinger]
#32651
09/02/04 21:55
09/02/04 21:55
|
Joined: Jul 2004
Posts: 1,710
MMike
Serious User
|
Serious User
Joined: Jul 2004
Posts: 1,710
|
|
|
|
Re: Working texture projectors :)
[Re: Matt_Aufderheide]
#32653
09/03/04 01:38
09/03/04 01:38
|
Joined: Jul 2004
Posts: 1,710
MMike
Serious User
|
Serious User
Joined: Jul 2004
Posts: 1,710
|
Well but then update the code , to project geometry too... Other thing i noticed it that , the player is affected by the light mask, but not all of them, and if you get out of range .. then the player is all black.. ehhe.. is that a bug or .. <.< >.> :P
|
|
|
|