Saturday, December 19, 2009

Another engine, another video

Saturday, November 28, 2009

And one more: GameMaker 3D RTS Engine & Editor

Another one of the old GM projects I wanted to post:

GameMaker 3D RTS Engine & Editor


Original (

Open Source Version... TODO

Saturday, November 21, 2009

Friday, November 20, 2009

Finally another post

50$ is the upgrade...
Actually, I told myself to post everything or at least most of the things I do here.
I neglected and forgot this/discontinued that quite quickly. Too quick.

Rick from the le forum kindly reminded me. Thanks!
I'm planning to release some old (mostly unfinished) GameMaker projects this weeked.

Saturday, August 15, 2009

Changed blog layout a little bit

Set all fonts to Arial by default.

Falloff effect in GLSL/Leadwerks Engine

Today, I wrote a falloff shader for LE. It uses either the dot product of or the distance between the surface normal and the normal pointing to the camera to calculate the color.

See here for more info.

Friday, April 24, 2009

Website update

I added a "social networking" category with a (new) forum.

Tuesday, March 24, 2009

Got back my pc (again)

I hope this time it wont break again after a week...

Friday, March 06, 2009

Blend 8 textures pixel shader

I was asked to post the source. It's set up to work within fx composer:
#define LIGHT_COORDS "World"
// un-tweaks
matrix WorldVP:WorldViewProjection;
matrix World:World; 

// tweaks
float3 LightPosition : POSITION <
string Object = "PointLight0";
string UIName = "Lamp 0 Position";
string Space = (LIGHT_COORDS);
> = {150.0f, 150.0f, 0.0f};

float4 LightColor : COLOR <
string UIName = "Lamp 0";
string Object = "Pointlight0";
string UIWidget = "Color";
> = {1.0f, 1.0f, 1.0f, 1.0f};

float LightRange <
string UIWidget = "slider";
float UIMin = 10.0;
float UIMax = 1000.0;
float UIStep = 5.0;
string UIName = "LightRange";
> = 250.0f; 

float4 Ambient <
string UIName = "Ambient";
string UIWidget = "Color";
> = {0.1f, 0.1f, 0.1f, 1.0f}; 

float BlendTexUScale<
string UIWidget = "slider";
float UIMin = 0.0;
float UIMax = 10.0;
float UIStep = 0.01;
string UIName = "BlendTexUScale";
> = 1.0f;

float BlendTexVScale<
string UIWidget = "slider";
float UIMin = 0.0;
float UIMax = 10.0;
float UIStep = 0.01;
string UIName = "BlendTexVScale";
> = 1.0f;

float waver<
string UIWidget = "slider";
float UIMin = 0.0;
float UIMax = 10.0;
float UIStep = 0.01;
> = 1.0f;

// Textures
texture tex1n; 
sampler2D tex1 = sampler_state{texture = ;};

texture tex2n; 
sampler2D tex2 = sampler_state{texture = ;};

texture tex3n; 
sampler2D tex3 = sampler_state{texture = ;};

texture tex4n; 
sampler2D tex4 = sampler_state{texture = ;};

texture tex5n; 
sampler2D tex5 = sampler_state{texture = ;};

texture tex6n; 
sampler2D tex6 = sampler_state{texture = ;};

texture tex7n; 
sampler2D tex7 = sampler_state{texture = ;};

texture tex8n; 
sampler2D tex8 = sampler_state{texture = ;};

texture texBlendn; 
sampler2D texBlend = sampler_state{texture = ;};

texture texBlend2n; 
sampler2D texBlend2 = sampler_state{texture = ;};

// structs
struct input
float4 Pos:POSITION;
float3 Normal : NORMAL;
struct output
float4 OPos:POSITION;
float2 Tex:TEXCOORD0; 
float3 Attenuation:TEXCOORD1;
float Diffuse:TEXCOORD2;

// vertex shader
output VS(input IN)
output OUT;
float3 Wnor=mul(IN.Normal,World); Wnor=normalize(Wnor);
float3 WPos=mul(IN.Pos,World); 
float3 LightPos=LightPosition-WPos;
return OUT;

// pixel shader
float4 PS(output IN) : COLOR
IN.Tex += float2(IN.Tex.x,sin(IN.Tex.x*waver));
float4 Texture1=tex2D(tex1,IN.Tex);
float4 Texture2=tex2D(tex2,IN.Tex);
float4 Texture3=tex2D(tex3,IN.Tex);
float4 Texture4=tex2D(tex4,IN.Tex);

float4 Texture5=tex2D(tex5,IN.Tex);
float4 Texture6=tex2D(tex6,IN.Tex);
float4 Texture7=tex2D(tex7,IN.Tex);
float4 Texture8=tex2D(tex8,IN.Tex);

float4 tBlend=tex2D(texBlend,IN.Tex*float2(BlendTexUScale,BlendTexVScale));
float4 tBlend2=tex2D(texBlend2,IN.Tex*float2(BlendTexUScale,BlendTexVScale));

float4 DiffuseLight=1-saturate(dot(IN.Attenuation,IN.Attenuation));
float4 Light=DiffuseLight*LightColor*IN.Diffuse;

return (tBlend.x*Texture1 +
tBlend.y*Texture2 +
tBlend.z*Texture3 +
tBlend.w*Texture4 +

tBlend2.x*Texture5 +
tBlend2.y*Texture6 +
tBlend2.z*Texture7 +
tBlend2.w*Texture8 )*(Light+Ambient);

// techniques 
technique CubicLighting
pass p1
vertexShader = compile vs_1_0 VS();
pixelShader = compile ps_2_0 PS(); 

Thursday, March 05, 2009

Got back my pc, Lego mmorpg masterserver ip

Got my pc back today.
I now have a 260 gtx instead of a 8800 gtx.

The master server has changed ip's
please use the new ip:

put this ip into the masterserverAt file.

Wednesday, March 04, 2009

Lego MMORPG masterserver ip

The guy running the masterserver (many thanks to him) recently changed ip address. The masterserver is not down, just not being found.
Unfortunately, I've no access to the mail where he wrote me the new ip, so I can't give the new one to you now.

This will be solved with the new version for certain.

Tuesday, March 03, 2009

Killed PC

I've no pc since 3 days. Can't do / program much.
Once I get it back, I'll release an update for Lego MMO which fixes some things.

Thursday, February 12, 2009

Site forms now working

The old site will now forward to the new site as it's no longer needed.

Wednesday, February 04, 2009

My first (pixel-)shader ever

Based on a pixel lightning shader by evolved.
Projects 8 different textures onto an object.
The blending texture map(s) is(/are) seperately scalable. (here scaled by two)
There are two blending textures used, each with rgba.

Website now working on resolutions of 1024 and up

Before, there were some problems with this.
Solved now.

I just noticed that I make lot's of really small posts here.
I should learn to avoid this. :D

My first youtube playlist

Just made a playlist which contains videos telling the whole "story" of Lego MMORPG development so far:

Monday, February 02, 2009

New site complete
Because I just recently created that freewebs account, forms don't work yet.

I'll leave the old page for some more time:

New site close to completion

Had to "restart" because I didn't want to use frames (lots of disadvantages).
But now I think it's nearly ready.