eatMORE

currently im working on my first snow track. here is a early state screenshot.

about the trees, i saw some tree generators around which looks pretty fine to me.are those recommended to use for a higher amount of trees?

Uploaded with ImageShack.us

actually im into a segmentizer for splitting up the terrain into the your liked amount of segments. this tool is written for maya, which should handle the collision, lods,… and do export this data into panda. here the
first impression:

URL=http://img560.imageshack.us/i/segment.jpg/][/URL]

Uploaded with ImageShack.us

somewhere over the rainbow, dark birds fly…

//Cg 
// primus illuminis v.002
// dirk hochegger with a tiny support of markus hötzinger (he explained the first steps in shader programming to me)


void vshader(float4 vtx_position : POSITION, 
             float3 vtx_normal    : NORMAL, 
             float3 vtx_binormal0 : BINORMAL,
             float3 vtx_tangent0 : TANGENT,
             in uniform float4x4 mat_modelproj, 
             in float2 vtx_texcoord0 : TEXCOORD0, 
              
             uniform in float4   wspos_view, 
             uniform in float4x4 trans_model_to_world , 
             uniform float4 mspos_light,
             
			 out float3 l_reflectUV: TEXCOORD0,
			 out float3 l_texcoord1 : TEXCOORD1,
             out float2 l_texcoord2 : TEXCOORD2,
             out float4 l_brite : TEXCOORD3,
             out float4 l_position : POSITION,
             
             out float3 l_litVEC,
             out float3 l_litPOS
             ) 
{ 
//illumination and reflection
  l_position=mul(mat_modelproj, vtx_position); 
  float3 positionW = mul(trans_model_to_world,vtx_position).xyz; 
  float3 N = mul((float3x3)trans_model_to_world, vtx_normal); 
  N=normalize(N); 
  float3 I = positionW - wspos_view; 
  l_reflectUV = reflect(I,N); 
  l_texcoord1 = vtx_normal;
  l_texcoord2 = vtx_texcoord0;
  
//litenormalize
  float3 litVEC = ((float3)mspos_light - vtx_position);
  l_litVEC.x = dot(vtx_tangent0, litVEC);
  l_litVEC.y = -dot(vtx_binormal0, litVEC);
  l_litVEC.z = dot(vtx_normal, litVEC);
  
} 
void fshader( 
             in  float4 l_reflectUV : TEXCOORD0, 
             in float4 l_texcoord1 : TEXCOORD1,
             in float2 l_texcoord2   : TEXCOORD2, 
             in float3 l_litVEC,
             in float3 l_litPOS,
             uniform in float4   wspos_view,
             in uniform float4 mspos_light : c7,
             in uniform samplerCUBE k_texcube : TEXUNIT0, 
             uniform sampler2D tex_0 : TEXUNIT1, 
             out float4 o_color: COLOR0
             )
{ 
	float3 N =normalize(l_texcoord1); 
	float4 P = l_reflectUV;
    float4 L = normalize(mspos_light - P);
  	float4 V = normalize(wspos_view - P);
  	float4 H = normalize(L + V);
  	float texCLR_spec = pow(max(dot(N, H), 0), .01);

	float litDIS = length((float3)mspos_light - l_litPOS);
	float3 litDIR = normalize(l_litVEC);
	float att = saturate(2000/(30+litDIS));
	float litPROD = saturate(dot(litDIR, l_texcoord1)+.1);

	float4 texCLR_color = tex2D(tex_0, l_texcoord2);
	float4 texCLR_illum = texCUBEbias(k_texcube, l_texcoord1);
	float4 texCLR_refl = texCUBE(k_texcube, l_reflectUV);
	
	float r = .1;
	float g = .1;
	float b = .6;
	float a = 1;
	
	float specINTENSEN = .6;
	float colorINTENSE = .0;
	float reflINTENSE = 2.8;
	float billINTENSE = .6;
	
	float4 texColor = float4(
	((texCLR_color.x*colorINTENSE)+(texCLR_illum.x*billINTENSE)+(texCLR_refl.x*reflINTENSE)+r+(texCLR_spec*specINTENSEN)/5)*litPROD*att,
	((texCLR_color.y*colorINTENSE)+(texCLR_illum.y*billINTENSE)+(texCLR_refl.y*reflINTENSE)+g+(texCLR_spec*specINTENSEN)/5)*litPROD*att,
	((texCLR_color.z*colorINTENSE)+(texCLR_illum.z*billINTENSE)+(texCLR_refl.z*reflINTENSE)+b+(texCLR_spec*specINTENSEN)/5)*litPROD*att,a);
	
    // o_color =texColor*4*(texCLR_illum.w*texCLR_illum.w*texCLR_refl.w+.01);
    o_color =texColor*texCLR_spec*(texCLR_illum.w*texCLR_illum.w*texCLR_refl.w+.01);
} 

so now im nearly done with that shader - im quiet happy with.
cheers

Uploaded with ImageShack.us

//Cg 
// primus illuminis v.003
// dirk hochegger with a tiny support of markus hötzinger (he explained the first steps in shader programming to me)

void vshader(float4 vtx_position : POSITION, 
             float3 vtx_normal    : NORMAL, 
             float3 vtx_binormal0 : BINORMAL,
             float3 vtx_tangent0 : TANGENT,
             in uniform float4x4 mat_modelproj, 
             in float2 vtx_texcoord0 : TEXCOORD0, 
              
             uniform in float4   wspos_view, 
             uniform in float4x4 trans_model_to_world , 
             
             uniform float4 mspos_light0,
             uniform float4 mspos_light1,
             
			 out float3 l_reflectUV: TEXCOORD0,
			 out float3 l_texcoord1 : TEXCOORD1,
             out float2 l_texcoord2 : TEXCOORD2,
             out float4 l_texcoord3 : TEXCOORD3,
             out float4 l_brite : TEXCOORD3,
             out float4 l_position : POSITION,
             
             out float3 l_litVEC,
             out float3 l_litVEC1,
             out float3 l_litPOS
             ) 
{ 
//illumination and reflection
  l_position=mul(mat_modelproj, vtx_position); 
  float3 positionW = mul(trans_model_to_world,vtx_position).xyz; 
  float3 N = mul((float3x3)trans_model_to_world, vtx_normal); 
  N=normalize(N); 
  float3 I = positionW - wspos_view; 
  l_reflectUV = reflect(I,N); 
  l_texcoord1 = vtx_normal;
  l_texcoord2 = vtx_texcoord0;
  l_texcoord3 = vtx_position;
  
  //litenormalize
  float3 litVEC = ((float3)mspos_light0 - vtx_position);
  l_litVEC.x = dot(vtx_tangent0, litVEC);
  l_litVEC.y = -dot(vtx_binormal0, litVEC);
  l_litVEC.z = dot(vtx_normal, litVEC); 
  
  float3 litVEC1 = ((float3)mspos_light1 - vtx_position);
  l_litVEC1.x = dot(vtx_tangent0, litVEC1);
  l_litVEC1.y = -dot(vtx_binormal0, litVEC1);
  l_litVEC1.z = dot(vtx_normal, litVEC1); 
} 
void fshader( 
             in  float4 l_reflectUV : TEXCOORD0, 
             in float4 l_texcoord1 : TEXCOORD1, // normal
             in float2 l_texcoord2   : TEXCOORD2, // regular texture coordinates
             in float4 l_texcoord3   : TEXCOORD3, //vtx_position
             in float3 l_litVEC,
             in float3 l_litPOS,
             uniform in float4   wspos_view,
             in uniform float4 mspos_light0,
             in uniform float4 mspos_light1,
             uniform sampler2D k_specular : TEXUNIT2,
             uniform sampler2D k_normalmap : TEXUNIT3,
             uniform sampler2D k_reflmap : TEXUNIT4,
             in uniform samplerCUBE k_texcube : TEXUNIT0, 
             uniform sampler2D tex_0 : TEXUNIT1, 
             out float4 o_color: COLOR0
             )
{ 
	//specular
	float4 specMAP = tex2D(k_specular, l_texcoord2);
	
	float cosinPWR_shrp_flt = 600; 
	float cosinPWR_shrp = 0;
	float cosinPWR_sft = 4;
	
	//specular 0
	float4 N =normalize(l_reflectUV); // normalize(l_texcoord1) <- darkNOIR effekt
	float4 P = l_texcoord3;
    float4 L = normalize(mspos_light0 - P);
  	float4 V = normalize(wspos_view - P);
  	float4 H = normalize(L + V);
  	float texCLR_spec = pow(max(dot(N, H), 0), cosinPWR_shrp);
  	
  	//specular 0 _flat
	float4 N_ft =normalize(l_reflectUV);
	float4 P_ft = l_texcoord3;
    float4 L_ft = normalize(mspos_light0 - P_ft);
  	float4 V_ft = normalize(wspos_view - P_ft);
  	float4 H_ft = normalize(L_ft + V_ft);
  	float texCLR_spec_ft = pow(max(dot(N_ft, H_ft), 0), cosinPWR_shrp_flt);
  	
  	//specular 1
	float4 N_l1 =normalize(l_reflectUV);
	float4 P_l1 = l_texcoord3;
    float4 L_l1 = normalize(mspos_light1 - P_l1);
  	float4 V_l1 = normalize(wspos_view - P_l1);
  	float4 H_l1 = normalize(L_l1 + V_l1);
  	float texCLR_spec_l1 = pow(max(dot(N_l1, H_l1), 0), cosinPWR_shrp);
  	
  	//specular 1 _flat
	float4 N_ft_l1 =normalize(l_reflectUV);
	float4 P_ft_l1 = l_texcoord3;
    float4 L_ft_l1 = normalize(mspos_light1 - P_ft_l1);
  	float4 V_ft_l1 = normalize(wspos_view - P_ft_l1);
  	float4 H_ft_l1 = normalize(L_ft_l1 + V_ft_l1);
  	float texCLR_spec_ft_l1 = pow(max(dot(N_ft_l1, H_ft_l1), 0), cosinPWR_shrp_flt);
  	
  	//soft spec
  	float4 N1 =normalize(l_reflectUV);
  	float4 P1 = l_texcoord1;
  	float4 L1 = normalize(mspos_light0 - P1);
  	float4 V1 = normalize(wspos_view - P1);
  	float4 H1 = normalize(L1 + V1);
  	float texCLR_specSFT = pow(max(dot(N1, H1), 0), cosinPWR_sft);
  	
  	//soft spec 1
  	float4 N1_l1 =normalize(l_reflectUV);
  	float4 P1_l1 = l_texcoord1;
  	float4 L1_l1 = normalize(mspos_light1 - P1_l1);
  	float4 V1_l1 = normalize(wspos_view - P1_l1);
  	float4 H1_l1 = normalize(L1_l1 + V1_l1);
  	float texCLR_specSFT1 = pow(max(dot(N1_l1, H1_l1), 0), cosinPWR_sft);

	//normalized lit AND normalmap
	float litDIS = length((float3)mspos_light0 - l_litPOS);
	float3 litDIR = normalize(l_litVEC);
	float att = saturate(10000/(30+litDIS));
	float4 nrmlMAP = tex2D(k_normalmap, l_texcoord2)*2-float4(1,1,1,1);
	float litDOT = saturate(dot(litDIR, l_texcoord1)+.1);
	float litPROD = saturate(dot(litDIR, (float3)nrmlMAP)+.3);
	
	//color
	float4 texCLR_color = tex2D(tex_0, l_texcoord2);
	//basis illumination
	float4 texCLR_illum = texCUBEbias(k_texcube, l_texcoord1);
	//reflection
	float4 texCLR_refl = texCUBEbias(k_texcube, l_reflectUV);
	float4 reflMAP = tex2D(k_reflmap, l_texcoord2);
	//normalized lit
	float4 texCLR_nrml = litPROD*att;
	texCLR_nrml.w = 1;
	float litNORM = litPROD*att;
	
	//ambient color
	float r = 1;
	float g = 1;
	float b = 1;
	float a = 1;
	
	float r_spec = 1;
	float g_spec = 1;
	float b_spec = 1;
	float a_spec = 1;
	
	//soft spec color also used for the car paint
	float r_specSFT = 0;
	float g_specSFT = 0;
	float b_specSFT = .8;
	float a_specSFT = 1;
	
	float reflMAP_power = 1;
	float specMAP_power = 1;
	float nrmlINTENSE = 0;
	float sftspecINTENSE = 4;
	float sftspecINTENSE1 = 4;
	float normINTENSE = 1;
	float specINTENSEN = 0;
	float specINTENSEN1 = 0;
	float specINTENSEN_flt = 4;
	float specINTENSEN1_flt = 4;
	float bcINTENSE = 0; // ambient factor
	float colorINTENSE = 0;
	float reflINTENSE = 0;
	float billINTENSE = 0;
	
	float4 texColor = float4(
	((texCLR_color.x*colorINTENSE)+(texCLR_illum.x*billINTENSE)+(r*bcINTENSE)+(texCLR_nrml.x*nrmlINTENSE)/4),
	((texCLR_color.y*colorINTENSE)+(texCLR_illum.y*billINTENSE)+(g*bcINTENSE)+(texCLR_nrml.y*nrmlINTENSE)/4),
	((texCLR_color.z*colorINTENSE)+(texCLR_illum.z*billINTENSE)+(b*bcINTENSE)+(texCLR_nrml.z*nrmlINTENSE)/4),a);
   
    float4 colREFL = (texCLR_refl*reflINTENSE)*(reflMAP*reflMAP_power);
   
   	float4 colSPEC_sft = (texCLR_specSFT*sftspecINTENSE)+(texCLR_specSFT1*sftspecINTENSE1);
   	colSPEC_sft = float4(colSPEC_sft.x*r_specSFT,colSPEC_sft.y*g_specSFT,colSPEC_sft.z*b_specSFT,a_specSFT); // specular color soft
    float4 colSPEC_shrp = (texCLR_spec*specINTENSEN)+(texCLR_spec_l1*specINTENSEN1);
    colSPEC_shrp = float4(colSPEC_shrp.x*r_spec,colSPEC_shrp.y*g_spec,colSPEC_shrp.z*b_spec,a_spec); // specular color
    float4 specular = ((colSPEC_shrp+colSPEC_sft+texColor/3)*(specMAP*specMAP_power));
    
	o_color = (texColor+specular+colREFL+(texCLR_spec_ft*specINTENSEN_flt)+(texCLR_spec_ft_l1*specINTENSEN1_flt)/5)*litNORM;
}

so, now the specular effekt reacts with the normalmap too.

EDIT-> SORRY, IWAS A BIT TO QUICK, in the previews version was huge bug!

Uploaded with ImageShack.us

//Cg 
// primus illuminis v.001
// dirk hochegger with a tiny support of markus hötzinger (he explained the first steps in shader programming to me)

void vshader(float4 vtx_position : POSITION, 
             float3 vtx_normal    : NORMAL, 
             float3 vtx_binormal0 : BINORMAL,
             float3 vtx_tangent0 : TANGENT,
             in uniform float4x4 mat_modelproj, 
             in float2 vtx_texcoord0 : TEXCOORD0, 
              
             uniform in float4   wspos_view, 
             uniform in float4x4 trans_model_to_world , 
             
             uniform float4 mspos_light0,
             uniform float4 mspos_light1,
             
			 out float3 l_reflectUV: TEXCOORD0,
			 out float3 l_texcoord1 : TEXCOORD1,
             out float2 l_texcoord2 : TEXCOORD2,
             out float4 l_texcoord3 : TEXCOORD3,
             out float4 l_brite : TEXCOORD3,
             out float4 l_position : POSITION,
             
             out float3 l_litVEC,
             out float3 l_litVEC1,
             out float3 l_litPOS
             ) 
{ 
//illumination and reflection
  l_position=mul(mat_modelproj, vtx_position); 
  float3 positionW = mul(trans_model_to_world,vtx_position).xyz; 
  float3 N = mul((float3x3)trans_model_to_world, vtx_normal); 
  N=normalize(N); 
  float3 I = positionW - wspos_view; 
  l_reflectUV = reflect(I,N); 
  l_texcoord1 = vtx_normal;
  l_texcoord2 = vtx_texcoord0;
  l_texcoord3 = vtx_position;
  
  //litenormalize
  float3 litVEC = ((float3)mspos_light0 - vtx_position);
  l_litVEC.x = dot(vtx_tangent0, litVEC);
  l_litVEC.y = -dot(vtx_binormal0, litVEC);
  l_litVEC.z = dot(vtx_normal, litVEC); 
  
  float3 litVEC1 = ((float3)mspos_light1 - vtx_position);
  l_litVEC1.x = dot(vtx_tangent0, litVEC1);
  l_litVEC1.y = -dot(vtx_binormal0, litVEC1);
  l_litVEC1.z = dot(vtx_normal, litVEC1); 
} 
void fshader( 
             in  float4 l_reflectUV : TEXCOORD0, 
             in float4 l_texcoord1 : TEXCOORD1, // normal
             in float2 l_texcoord2   : TEXCOORD2, // regular texture coordinates
             in float4 l_texcoord3   : TEXCOORD3, //vtx_position
             in float3 l_litVEC,
             in float3 l_litPOS,
             uniform in float4   wspos_view,
             in uniform float4 mspos_light0,
             in uniform float4 mspos_light1,
             uniform sampler2D k_specular : TEXUNIT2,
             uniform sampler2D k_normalmap : TEXUNIT3,
             uniform sampler2D k_reflmap : TEXUNIT4,
             in uniform samplerCUBE k_texcube : TEXUNIT0, 
             uniform sampler2D tex_0 : TEXUNIT1, 
             out float4 o_color: COLOR0
             )
{ 
	//ADJUSTMENTZ//
	
	float cosinPWR_shrp_flt = 600; 
	float cosinPWR_shrp = 100;
	float cosinPWR_sft = 8;
	float bumpPWR_shrp = 1;
	float bumpPWR = 1.8;
	
	//ambient color
	float r = 1;
	float g = 1;
	float b = 1;
	float a = 1;
	
	float r_spec = 1;
	float g_spec = 1;
	float b_spec = 1;
	float a_spec = 1;
	
	//soft spec color also used for the car paint
	float r_specSFT = 0;
	float g_specSFT = 0;
	float b_specSFT = .8;
	float a_specSFT = 1;
	
	float reflMAP_power = 1;
	float specMAP_power = 1.8;
	float nrmlINTENSE = 0;
	float sftspecINTENSE = 20;
	float sftspecINTENSE1 = 20;
	float normINTENSE = 0;
	float specINTENSE = 1;
	float specINTENSE1 = 1;
	float specINTENSE_flt = 10;
	float specINTENSE1_flt = 10;
	float bcINTENSE = 0; // ambient factor
	float colorINTENSE = 0;
	float reflINTENSE = 0;
	float billINTENSE = 0;
	

	//shader//
	
	//normalized lit AND normalmap
	float litDIS = length((float3)mspos_light0 - l_litPOS);
	float3 litDIR = normalize(l_litVEC);
	float att = saturate(10000/(30+litDIS));
	float4 nrmlMAP = tex2D(k_normalmap, l_texcoord2)*(2/bumpPWR)-float4(1,1,1,1);
	float litDOT = saturate(dot(litDIR, l_texcoord1)+.1);
	float litPROD = saturate(dot(litDIR, (float3)nrmlMAP)+(.01/bumpPWR_shrp));

	//specular
	float4 specMAP = tex2D(k_specular, l_texcoord2);

	//specular 0
	float4 N =normalize(l_reflectUV+nrmlMAP/2); 
	float4 P = l_texcoord3;
    float4 L = normalize(mspos_light0 - P);
  	float4 V = normalize(wspos_view - P);
  	float4 H = normalize(L + V);
  	float texCLR_spec = pow(max(dot(N, H), 0), cosinPWR_shrp);
  	
  	//specular 0 _flat
  	float texCLR_spec_ft = pow(max(dot(N, H), 0), cosinPWR_shrp_flt);
  	
  	//specular 1
    float4 L_l1 = normalize(mspos_light1 - P);
  	float4 V_l1 = normalize(wspos_view - P);
  	float4 H_l1 = normalize(L_l1 + V_l1);
  	float texCLR_spec_l1 = pow(max(dot(N, H_l1), 0), cosinPWR_shrp);
  	
  	//specular 1 _flat
  	float texCLR_spec_ft_l1 = pow(max(dot(N, H_l1), 0), cosinPWR_shrp_flt);
  	
  	//soft spec
  	float4 P1 = l_texcoord1;
  	float4 L1 = normalize(mspos_light0 - P1);
  	float4 V1 = normalize(wspos_view - P1);
  	float4 H1 = normalize(L1 + V1);
  	float texCLR_specSFT = pow(max(dot(N, H1), 0), cosinPWR_sft);
  	
  	//soft spec 1
  	float4 P1_l1 = l_texcoord1;
  	float4 L1_l1 = normalize(mspos_light1 - P1_l1);
  	float4 V1_l1 = normalize(wspos_view - P1_l1);
  	float4 H1_l1 = normalize(L1_l1 + V1_l1);
  	float texCLR_specSFT1 = pow(max(dot(N, H1_l1), 0), cosinPWR_sft);

	//color
	float4 texCLR_color = tex2D(tex_0, l_texcoord2);
	//basis illumination
	float4 texCLR_illum = texCUBEbias(k_texcube, l_texcoord1);
	//reflection
	float4 texCLR_refl = texCUBEbias(k_texcube, l_reflectUV);
	float4 reflMAP = tex2D(k_reflmap, l_texcoord2);
	//normalized lit
	float4 texCLR_nrml = litPROD*att;
	texCLR_nrml.w = 1;
	float litNORM = litPROD*att;

	//COLOROUT//
	
	float4 texColor = float4(
	((texCLR_color.x*colorINTENSE)+(texCLR_illum.x*billINTENSE)+(r*bcINTENSE)+(texCLR_nrml.x*nrmlINTENSE)/4),
	((texCLR_color.y*colorINTENSE)+(texCLR_illum.y*billINTENSE)+(g*bcINTENSE)+(texCLR_nrml.y*nrmlINTENSE)/4),
	((texCLR_color.z*colorINTENSE)+(texCLR_illum.z*billINTENSE)+(b*bcINTENSE)+(texCLR_nrml.z*nrmlINTENSE)/4),a);
   
    float4 colREFL = (texCLR_refl*reflINTENSE)*(reflMAP*reflMAP_power);
   
   	float4 colSPEC_sft = (texCLR_specSFT*sftspecINTENSE)+(texCLR_specSFT1*sftspecINTENSE1);
   	colSPEC_sft = float4(colSPEC_sft.x*r_specSFT,colSPEC_sft.y*g_specSFT,colSPEC_sft.z*b_specSFT,a_specSFT); // specular color soft
    float4 colSPEC_shrp = (texCLR_spec*specINTENSE)+(texCLR_spec_l1*specINTENSE1);
    colSPEC_shrp = float4(colSPEC_shrp.x*r_spec,colSPEC_shrp.y*g_spec,colSPEC_shrp.z*b_spec,a_spec); // specular color
    float4 specular = ((colSPEC_shrp+colSPEC_sft+texColor/3)*(specMAP*specMAP_power));
    
	o_color = (texColor+specular+colREFL+(texCLR_spec_ft*specINTENSE_flt)+(texCLR_spec_ft_l1*specINTENSE1_flt)/5)*litNORM;
} 

actually i started with a tiny shader demo. here the first screenshot of the shader. pls. dont mind the rushed graphics. (this will be improved soon)

i idea behind this shader, to build a shader which supports (global master shader) the most needed material properties, such as -> environment based lightning, specularity, reflections, normalmap, shadows …

Uploaded with ImageShack.us

also good things happens when a tooths is hurting.

im quiet proud to introduce you the soft spreading shadows.

in this screenshot i used 32 spreading samples, which became very heavy to calculate. actually i am planing to use around 2 or 4 samples in the game. which will be far enough to reach a nice looking result (for the moment).

Uploaded with ImageShack.us

off topic:

MY TOUGHTS, MY HEART AND MY FEARS ARE IN JAPAN!

our reality becomes the mirrow of human minds, we used to do everything just for the profit. the profit bomb explode few years ago, now the product of just profit minds will explode too and bring the most worst situtation on earth we ever had. we can observe now whats happening when lots of systems failing. im sad, but i hope also onto a awaking in all kind of buisnesses!

why to rebuild a noneworking strategie, what will happen without a future buffer? now we got a huge selfsmack and we will handle this. but if i imaging the next big selfsmack and then without any buffer…

Really nice, keep up the good work!

thank you!

i hope to finalize a demo at summer. there so many parts which needs to be improved… if im watching current car racers just from the graphical point of view, like dirt. i have to build a huge amount of props. and its easy to spend a year just to reach a nice car physic. so, it should just feel funny to play (arcade style).

actually i want to display also a reaction in the normalmap. like a AO fake in the normalmap and nice shadow receiving.

here the first result, its quiet not that what i want, but a nice step in this direction.

Uploaded with ImageShack.us

Uploaded with ImageShack.us

this normalmapping reaction brought me onto the next idea in the primus illuminus shader. i will try to fake the spreading effect by a generated noisy normalmap, which will be generat a scaled noise normalmap in relation to the distance of the light (i know its not physical correct, but it will looks nice), which will be way cheaper then using a high amount of samples. but in the end the combination will be the holy grale.

im calling this “sucker punch spreading” (sps) or “spread normal shadows” (sns).

Uploaded with ImageShack.us

How well does it perform, meaning how heavy is on hardware(tho whole shader thingy you write)? To a average shader fearer like me it seems like a lot of different calculations.
But still a nice thingy you are making there.