Jump to content

vehicle skin shader


freudo

Recommended Posts

7870594935e7b945d5d74ae1e33354cd13a7475b

vehicle components hided. I'm using this fx file;

#include "mta-helper.fx"

float size = 30.0;
float speed= .75;

float2 resolution = float2(1, 1);
float intensity = 1;
float opacity = 1;
float3 color = float3(1.0, 1.0, 1.0);
float rate = 1.0;

struct vsin
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

struct vsout
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

vsout vs(vsin input)
{
	vsout output;
	output.Position = mul(input.Position, gWorldViewProjection);
	output.TexCoord = input.TexCoord;
	return output;
}

float random(float2 co){
    return frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453);
}
float3 random_color(float2 coords){
	float a = floor(random(coords.xy*6.896)*7.);
	//(2^3)-1
	//           { return float3(0.,0.,0.); } //BLACK
	if (a == 0.) { return float3(1.,0.,0.); } //RED
	if (a == 1.) { return float3(0.,1.,0.); } //GREEN
	if (a == 2.) { return float3(1.,1.,0.); } //YELLOW
	if (a == 3.) { return float3(0.,0.,1.); } //BLUE
	if (a == 4.) { return float3(1.,0.,1.); } //MAGENTA
	if (a == 5.) { return float3(0.,1.,1.); } //CYAN
	else         { return float3(1.,1.,1.); } //WHITE
}
float tri(float x){
	x = (x%2.0);
	if (x > 1.0) x = -x+2.0;
	return x;
}
float chess_dist(float2 uv) {
    return max(abs(uv.x),abs(uv.y));
}

float4 ps(vsout input) : COLOR0
{
	float time = gTime * (0.5 + rate * 2.);
	float2 uv = -1.0 + 2.0 * input.TexCoord.xy / resolution.xy;
	uv.y *= resolution.y/resolution.x;
	float3 colors = color * random_color(floor(uv*size))*step(chess_dist((frac(uv*size)-.5)*2.),tri((((time*speed)+((random(floor(uv*size)))*2.)))));
	float outFX = saturate(opacity * colors);
	return float4(colors * intensity, outFX);
}



float countDepthBias(float minBias, float maxBias, float closeBias)
{
    float4 viewPos = mul(float4(gWorld[3].xyz, 1), gView);
    float4 projPos = mul(viewPos, gProjection);
    float depthImpact = minBias + ((maxBias - minBias) * (1 - saturate(projPos.z / projPos.w)));
    depthImpact += closeBias * saturate(0.5 - (viewPos.z / viewPos.w));
    return depthImpact;
}

technique tec
{
	pass Pass0
	{
        SlopeScaleDepthBias = -0.5;
        DepthBias = countDepthBias(-0.000002, -0.0004, -0.001);
		AlphaBlendEnable = true;
		AlphaRef = 1;
		VertexShader = compile vs_3_0 vs();
		PixelShader = compile ps_3_0 ps();
	}
}
theTechnique = dxCreateShader( "type1.fx" )
dxSetShaderValue(theTechnique,"color",255,255,255,255)
dxSetShaderValue(theTechnique,"opacity",1)
dxSetShaderValue(theTechnique,"intensity",1)

function applyShader(thePlayer, seat)
local theVehicle = source

	if seat == 0 and thePlayer == localPlayer then
		engineApplyShaderToWorldTexture(theTechnique, "vehiclegrunge256", theVehicle)
		engineApplyShaderToWorldTexture(theTechnique, "?emap*", theVehicle)
	end
end
addEventHandler("onClientVehicleEnter", getRootElement(), applyShader)

function removeShader(thePlayer, seat)
local theVehicle = source

	if seat == 0 and thePlayer == localPlayer then
        	engineRemoveShaderFromWorldTexture(theTechnique, "vehiclegrunge256", theVehicle)
        	engineRemoveShaderFromWorldTexture(theTechnique, "?emap*", theVehicle)
	end
end
addEventHandler("onClientVehicleExit", getRootElement(), removeShader)

 

Link to comment
local r, g, b = 255, 255, 255
dxSetShaderValue(theTechnique,"color", r / 255, g / 255, b / 255)
#include "mta-helper.fx"

float size = 30.0;
float speed= .75;

float2 resolution = float2(1, 1);
float intensity = 1;
float opacity = 1;
float3 color = float3(1.0, 1.0, 1.0);
float rate = 1.0;

struct vsin
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

struct vsout
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

vsout vs(vsin input)
{
	vsout output;
	output.Position = mul(input.Position, gWorldViewProjection);
	output.TexCoord = input.TexCoord;
	return output;
}

float random(float2 co)
{
    return frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453);
}

float3 random_color(float2 coords){
	float a = floor(random(coords.xy*6.896)*7.);
	//(2^3)-1
	//           { return float3(0.,0.,0.); } //BLACK
	if (a == 0.) { return float3(1.,0.,0.); } //RED
	if (a == 1.) { return float3(0.,1.,0.); } //GREEN
	if (a == 2.) { return float3(1.,1.,0.); } //YELLOW
	if (a == 3.) { return float3(0.,0.,1.); } //BLUE
	if (a == 4.) { return float3(1.,0.,1.); } //MAGENTA
	if (a == 5.) { return float3(0.,1.,1.); } //CYAN
	else         { return float3(1.,1.,1.); } //WHITE
}
float tri(float x){
	x = (x%2.0);
	if (x > 1.0) x = -x+2.0;
	return x;
}
float chess_dist(float2 uv) {
    return max(abs(uv.x),abs(uv.y));
}

float4 ps(vsout input) : COLOR0
{
	float time = gTime * (0.5 + rate * 2.);
	float2 uv = -1.0 + 2.0 * input.TexCoord.xy / resolution.xy;
	uv.y *= resolution.y/resolution.x;
	float3 colors = color * random_color(floor(uv*size))*step(chess_dist((frac(uv*size)-.5)*2.),tri((((time*speed)+((random(floor(uv*size)))*2.)))));
	float outFX = saturate(opacity * colors);
	return float4(colors * intensity, outFX);
}



float countDepthBias(float minBias, float maxBias, float closeBias)
{
    float4 viewPos = mul(float4(gWorld[3].xyz, 1), gView);
    float4 projPos = mul(viewPos, gProjection);
    float depthImpact = minBias + ((maxBias - minBias) * (1 - saturate(projPos.z / projPos.w)));
    depthImpact += closeBias * saturate(0.5 - (viewPos.z / viewPos.w));
    return depthImpact;
}

technique tec
{
	pass Pass0
	{
        SlopeScaleDepthBias = -0.5;
        DepthBias = countDepthBias(-0.000002, -0.0004, -0.001);
		AlphaBlendEnable = false;
		AlphaRef = 1;
		VertexShader = compile vs_3_0 vs();
		PixelShader = compile ps_3_0 ps();
	}
}

Try this

Edited by Feche1320
Link to comment
#include "mta-helper.fx"

float2 resolution = float2(1, 1);
float intensity = 1;
float opacity = 1;
float3 color = float3(1.0, 1.0, 1.0);
float rate = 1.0;

struct vsin
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

struct vsout
{
	float4 Position : POSITION;
	float2 TexCoord : TEXCOORD0;
};

vsout vs(vsin input)
{
	vsout output;
	output.Position = mul(input.Position, gWorldViewProjection);
	output.TexCoord = input.TexCoord;
	return output;
}

float4 ps(vsout input) : COLOR0
{
	float time = gTime * 0.5 + gTime * rate;
	float2 p = (input.TexCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y);
    float f = 0.0;
    for(float i = 0.0; i < 10.0; i++){
        float s = sin(time + i * 0.628318) * 0.5;
        float c = cos(time + i * 0.628318) * 0.5;
        f += 0.0025 / abs(length(p + float2(c, s)) - 0.5);
    }
    float outFX = saturate(opacity * f);
	return float4(color * intensity, outFX);
}

float countDepthBias(float minBias, float maxBias, float closeBias)
{
    float4 viewPos = mul(float4(gWorld[3].xyz, 1), gView);
    float4 projPos = mul(viewPos, gProjection);
    float depthImpact = minBias + ((maxBias - minBias) * (1 - saturate(projPos.z / projPos.w)));
    depthImpact += closeBias * saturate(0.5 - (viewPos.z / viewPos.w));
    return depthImpact;
}

technique tec
{
	pass Pass0
	{
        SlopeScaleDepthBias = -0.5;
        DepthBias = countDepthBias(-0.000002, -0.0004, -0.001);
		AlphaBlendEnable = true;
		AlphaRef = 1;
		VertexShader = compile vs_3_0 vs();
		PixelShader = compile ps_3_0 ps();
	}
}

you can this? same problem

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...