depends... all triplanar shaders are similar. all that use texatlas are similar. but there are many ways to render the surface.
I got texture arrays and some kind of *-planar shader.
well a simple starting point is this:
vertex shader, needs a position and a normal
Code:
void main() {
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_TexCoord[0] = vec4(normalize( gl_Normal), 0.0);
gl_TexCoord[1] = vec4(gl_Vertex);
}
fragment shader, can only use one texture, and there's no texatlas, and the texture is streched along the y axis
Code:
uniform sampler2D tex0;
void main() {
vec4 col;
vec4 light;
float ambient = 0.400000;
vec4 lightDirection;
float ldn;
vec3 coord = gl_TexCoord[1].xyz/16;
vec2 tex;
tex.x = coord.x;
tex.y = coord.z;
col = texture2D( tex0, tex);
lightDirection.x = 1.0;
lightDirection.y = -0.7;
lightDirection.z = 1.0;
lightDirection.w = 0.0;
light = -normalize( lightDirection );
ldn = max( 0.000000, dot( light, gl_TexCoord[0]));
gl_FragData[0] = vec4( col * (ambient + ldn*(1-ambient)) );
}
yes the stretching is ugly, but now you can choose what you want to do

look in the general discussions forums for triplanar shaders (they're hlsl thou)
what graphics engine are you using?