1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
//
// Fragment shader for producing a wood effect
//
// Author: Randi Rost
//
// Copyright (c) 2002-2004 3Dlabs Inc. Ltd.
//
// See 3Dlabs-License.txt for license information
//
varying float LightIntensity;
varying vec3 MCposition;
uniform sampler3D Noise;
uniform vec3 LightWoodColor;
uniform vec3 DarkWoodColor;
uniform float RingFreq;
uniform float LightGrains;
uniform float DarkGrains;
uniform float GrainThreshold;
uniform vec3 NoiseScale;
uniform float Noisiness;
uniform float GrainScale;
void main(void)
{
vec3 noisevec = vec3 (texture3D(Noise, MCposition * NoiseScale) *
Noisiness);
vec3 location = MCposition + noisevec;
float dist = sqrt(location.x * location.x + location.z * location.z);
dist *= RingFreq;
float r = fract(dist + noisevec[0] + noisevec[1] + noisevec[2]) * 2.0;
if (r > 1.0)
r = 2.0 - r;
vec3 color = mix(LightWoodColor, DarkWoodColor, r);
/*r = fract((MCposition.x + MCposition.z) * GrainScale + 0.5);
noisevec[2] *= r;
if (r < GrainThreshold)
color += LightWoodColor * LightGrains * noisevec[2];
else
color -= LightWoodColor * DarkGrains * noisevec[2];*/
color *= LightIntensity;
gl_FragColor = vec4 (color, 1.0);
}
|