Hm, I think the triplanar mapping is actually not that heavy?
Vertexshader-Part of it:
Code: Select all
oBlendWeights = abs(normal);
oBlendWeights = (oBlendWeights - 0.2) * 7;
oBlendWeights = max(oBlendWeights, 0);
oBlendWeights /= (oBlendWeights.x + oBlendWeights.y + oBlendWeights.z ).xxx;
Fragmentshader-Part of it:
Code: Select all
float2 coord1 = position.yz * texScale;
float2 coord2 = position.zx * texScale;
float2 coord3 = position.xy * texScale;
float4 col1 = tex2D(texFromX, coord1);
float4 col2 = tex2D(texFromY, coord2);
float4 col3 = tex2D(texFromZ, coord3);
float4 textColour = float4(expand(col1.xyz * blendWeights.xxx +
col2.xyz * blendWeights.yyy +
col3.xyz * blendWeights.zzz), 1);
+ this if normal mapping is enabled:
Code: Select all
float3 bumpFetch1 = expand(tex2D(texFromXNormal, coord1).rgb);
float3 bumpFetch2 = expand(tex2D(texFromYNormal, coord2).rgb);
float3 bumpFetch3 = expand(tex2D(texFromZNormal, coord3).rgb);
float3 TSnormal = bumpFetch1.xyz * blendWeights.xxx +
bumpFetch2.xyz * blendWeights.yyy +
bumpFetch3.xyz * blendWeights.zzz;
Some simpler texture projection could also be considered. Like a single planar projection (might look ok if your scene fits to it). But I actually don't know how to really project the texture on it.

Cube mapping might be worth a try. I know about this method, but it sounds very complicated to implement:
http://graphics.cs.williams.edu/papers/ ... tionI3D08/