Jump to content
Sign in to follow this  
soul_assassin

ARMA2 updated rvmat for vehicles

Recommended Posts

Seems the rvmats in A2 have been updated to use the "Super" shader which supports and ambient occlusion map and some sort of cubemap reflection :)

ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,1.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={0.750000,0.800000,0.700000,1.000000};
specularPower=60.000000;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="SA_BMD_PACK_1\sa_bmd1_01_nohq.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2
{
texture="ca\data\destruct\metal_rough_half_dt.paa";
uvSource="tex";
class uvTransform
{
	aside[]={8.000000,0.000000,0.000000};
	up[]={0.000000,8.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4
{
texture="SA_BMD_PACK_1\sa_bmd1_01_as.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5
{
texture="SA_BMD_PACK_1\sa_bmd1_01_smdi.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0.9,0.1)";
uvSource="none";
};
class Stage7
{
texture="ca\data\env_land_co.paa";
uvSource="none";
};

the ambient map in stage4 is a rgb map with red and blue channels filled with white and the green channel housing the black/white ambient occlusion map. The 2nd and 3rd stages I am not sure yet what they are for. The numbers in the Fresnel component in stage 6 can be used to tweak the strength and the properties of the environment reflection. Neat!

Edit: dont forget to unpbo the ca.pbo into your P:\ drive in order to see this work. And of course Arma2 should be set as Bulldozer of course.

Share this post


Link to post
Share on other sites

Oh thx Soul_Assassin :)

btw i need the new updated ArmA2 rvmat for weapons too :p

Edited by RobertHammer

Share this post


Link to post
Share on other sites

Very cool. I have to give this a shot today :cool:.

Share this post


Link to post
Share on other sites

I tried it on weapons, but the reflections and AO in the game was not ... i will try with your material.

Share this post


Link to post
Share on other sites

Do not binarize this new rvmat when you pack it or it will not work. Also have a look for env_...paa textures in ca\data\ for stage 7 for some effects, mirror, blurred, color reflections etc.

Share this post


Link to post
Share on other sites

Finally got something work ingame :) but can you tell me how do you set ArmA1 O2 to work with ArmA2 shaders? Because when i set "D:\ArmA 2\ArmA2.exe -window -buldozer" it will crash with some shader error or something

Share this post


Link to post
Share on other sites

you have to unpbo the shaders from bin.pbo i think to P:\bin

Share this post


Link to post
Share on other sites

These are the new rvmat's effect:

From OH MOD for ArmA2 WIP

th_arma2-2009-06-29-17-15-07-59.jpg th_arma2-2009-06-29-17-41-49-71.jpg th_arma2-2009-06-29-17-45-52-62.jpg

Share this post


Link to post
Share on other sites

Yeh dude as I said in the WIP thread, the aircraft look f*cking incredible! very nice work! Can you perhaps post which settings you have used in the rvmat? Can you also post an example glass rvmat?

Share this post


Link to post
Share on other sites

glass:

ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 1.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {1.0, 1.0, 1.0, 1.0};
specularPower = 500.0;
renderFlags[] = {"NoAlphaWrite"};
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";

class Stage1 
{
texture = "MAP_Air\data\uh60_skla_nohq.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage2 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0,MC)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage4 
{
texture = "#(rgb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};

class Stage5 
{
texture = "MAP_Air\data\uh60_skla_smdi.paa";
uvSource = "tex";

class uvTransform {
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage6 
{
texture = "#(ai,32,128,1)fresnel(0.45,0.94)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7 
{
texture = "MAP_Air\data\env_land_co.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};

glass_damage

ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 1.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {2.0, 2.0, 2.0, 1.0};
specularPower = 1000.0;
renderFlags[] = {"NoAlphaWrite"};
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";

class Stage1 
{
texture = "ca\data\destruct\destr_glass_plexi_full_nohq.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {3.0, 0.0, 0.0};
	up[] = {0.0, 3.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage2 
{
texture = "ca\data\destruct\destr_glass_plexi_full_ca.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {3.0, 0.0, 0.0};
	up[] = {0.0, 3.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 
{
texture = "ca\data\destruct\destr_glass_plexi_full_ca.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {3.0, 0.0, 0.0};
	up[] = {0.0, 3.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage4 
{
texture = "#(rgb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5
{
texture = "ca\data\destruct\destr_glass_plexi_full_smdi.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {3.0, 0.0, 0.0};
	up[] = {0.0, 3.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage6 
{
texture = "#(ai,32,128,1)fresnel(0.45,0.94)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7 
{
texture = "ca\data\env_land_co.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};

glass_in

mbient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 1.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {1.0, 1.0, 1.0, 1.0};
specularPower = 500.0;
renderFlags[] = {"NoAlphaWrite"};
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";

class Stage1
{
texture = "MAP_Air\data\uh60_skla_nohq.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage2 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0,MC)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage4 
{
texture = "#(rgb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5 
{
texture = "MAP_Air\data\uh60_skla_smdi.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage6 
{
texture = "#(ai,32,128,1)fresnel(1.01,0.52)";
uvSource = "tex";

class uvTransform
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7
{
texture = "ca\data\env_land_co.paa";
uvSource = "tex";

class uvTransform {
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};

glass_in_damage

mbient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 1.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {1.0, 1.0, 1.0, 1.0};
specularPower = 500.0;
renderFlags[] = {"NoAlphaWrite"};
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";

class Stage1
{
texture = "MAP_Air\data\uh60_skla_nohq.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage2 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 
{
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,0,MC)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage4 
{
texture = "#(rgb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5 
{
texture = "MAP_Air\data\uh60_skla_smdi.paa";
uvSource = "tex";

class uvTransform 
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage6 
{
texture = "#(ai,32,128,1)fresnel(1.01,0.52)";
uvSource = "tex";

class uvTransform
{
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7
{
texture = "ca\data\env_land_co.paa";
uvSource = "tex";

class uvTransform {
	aside[] = {1.0, 0.0, 0.0};
	up[] = {0.0, 1.0, 0.0};
	dir[] = {0.0, 0.0, 0.0};
	pos[] = {0.0, 0.0, 0.0};
};
};

i hope will help you

Marco

Share this post


Link to post
Share on other sites

I got little better glass rvmat

ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,1.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={0.750000,0.800000,0.700000,1.000000};
specularPower=60.000000;
renderFlags[]={"NoAlphaWrite"};
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="bhd_air\uh60_skla_nohq.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
	aside[]={8.000000,0.000000,0.000000};
	up[]={0.000000,8.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0,MC)";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4
{
texture="#(rgb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5
{
texture="bhd_air\uh60_skla_smdi.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1.000000,0.000000,0.000000};
	up[]={0.000000,1.000000,0.000000};
	dir[]={0.000000,0.000000,0.000000};
	pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6
{
texture="#(ai,32,128,1)fresnel(0.45,0.94)";
uvSource="none";
};
class Stage7
{
texture="ca\data\env_land_co.paa";
uvSource="none";
};

Try it and you will see the difference :cool:

btw fromz very cool , can you pls show here what settings you used in rvmat :)

Share this post


Link to post
Share on other sites

You guys should post diffuse, specular and normal samples, too.

The rvmats don't give that much insight on the final appearance without them. :)

Share this post


Link to post
Share on other sites

can anyone link up an example of an ambient occulsion map in ArmaA2? I've had a peek on google and I believe I have a fairly rough idea of how it works, but if someone could be so kind as to post up an AS along with the Diffuse, then that would help me see how the AS correlates to the Diffuse map. Even a small section would help.

Texview doesn't seem to like the new BIS paa, or at least it errors for me.

Share this post


Link to post
Share on other sites

The composition of the AS map is as follows:

red channel = filled white

green channel = contains the black/white ambient map with black shadows and white where there are no shadows.

blue channel = filled white

alpha channel = either not used at all or all white.

this entails that the ambient occlusion that you bake in your software is no longer applied directly into the diffuse texture but rather used separately with the use of the AS map.

Edited by Soul_Assassin

Share this post


Link to post
Share on other sites

ok, so essentially those places on my diffuse where I'd use a drop shadow to try and darken an area up, are now in turn shaded in the AS map in the green channel, and removed entirely from the Diffuse.

bear in mind all my modeling, uv unwraps, etc is entirely O2 based, so I have no way to bake anything. All diffuse, spec and norms are hand drawn, as will the AS.

cheers Soul :)

Share this post


Link to post
Share on other sites

Messy mate, if you want AO maps baked, I can do them in Max for you.

I did one for the Jackal the other night. There are artifacts where the UV coordinates are shared by multiple components like the wheels and seats and double-sided planes caused by the lighting info being rendered over the map several times (any of our more experienced 3-D gurus who could tell me how to resolve this?), but overall it's not bad.

Share this post


Link to post
Share on other sites

u can share same uv space by offsetting it by 1 or more in either u or v direction. Since the texture tiles it just remaps itself.

Share this post


Link to post
Share on other sites
can anyone link up an example of an ambient occulsion map in ArmaA2? I've had a peek on google and I believe I have a fairly rough idea of how it works, but if someone could be so kind as to post up an AS along with the Diffuse, then that would help me see how the AS correlates to the Diffuse map. Even a small section would help.

Texview doesn't seem to like the new BIS paa, or at least it errors for me.

You got a pm :)

Share this post


Link to post
Share on other sites

Using Soul_Assasin's great tips here, I've posted a detailed explaination of how I implemented the Super shader (along with sample textures) at in the forums.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×