Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SHADER_IMPL(TerrainPass1Fragment, FRAGMENT,
- "#version 140\n"
- "\n"
- "uniform sampler2DArray texMaterialArray;\n"
- "\n"
- "in vec3 vecPosition;\n"
- "in vec3 vecNormal;\n"
- "in vec3 vecMaterials;\n"
- "in vec3 vecMaterialAlphas;\n"
- "\n"
- "out vec4 outDiffuse;\n"
- "out vec3 outPosition;\n"
- "out vec3 outNormal;\n"
- "\n"
- "struct FragmentData\n"
- "{\n"
- " vec4 Colour;\n"
- //" vec3 Normal;\n"
- "};\n"
- "\n"
- "FragmentData Sample(in vec3 pos, float mat)\n"
- "{\n"
- " vec3 blend_weights = abs( vecNormal );\n"
- " blend_weights = (blend_weights - 0.2) * 0.7;\n"
- " blend_weights = max( blend_weights, 0.0 );\n"
- " blend_weights /= (blend_weights.x + blend_weights.y + blend_weights.z);\n"
- " \n"
- " vec3 coord1 = vec3( pos.z * 0.5, pos.y * 0.5, mat );\n"
- " vec3 coord2 = vec3( pos.z * 0.5, pos.x * 0.5, mat );\n"
- " vec3 coord3 = vec3( pos.x * 0.5, pos.y * 0.5, mat );\n"
- " \n"
- " vec4 col1 = texture( texMaterialArray, coord1 );\n"
- " vec4 col2 = texture( texMaterialArray, coord2 );\n"
- " vec4 col3 = texture( texMaterialArray, coord3 );\n"
- " \n"
- " vec4 blended_colour = (col1 * blend_weights.x) + (col2 * blend_weights.y) + (col3 * blend_weights.z);\n"
- " FragmentData data;\n"
- " data.Colour = blended_colour;\n"
- " return data;"
- "}\n"
- "\n"
- "FragmentData Lerp( FragmentData a, FragmentData b, float mu )\n"
- "{\n"
- " FragmentData data;\n"
- " data.Colour = (b.Colour - a.Colour) * mu + a.Colour;\n"
- " return data;\n"
- "}\n"
- "\n"
- "FragmentData CalcFrag()\n"
- "{\n"
- " FragmentData A = Sample( vecPosition, vecMaterials.x );\n"
- " FragmentData B = Sample( vecPosition, vecMaterials.y );\n"
- " FragmentData C = Sample( vecPosition, vecMaterials.z );\n"
- " FragmentData result;\n"
- " result.Colour = (A.Colour * vecMaterialAlphas.x) + (B.Colour * vecMaterialAlphas.y) + (C.Colour * vecMaterialAlphas.z);\n"
- " return result;\n"
- "}\n"
- "\n"
- "void main()\n"
- "{\n"
- " outNormal = vecNormal;\n"
- " outPosition = vec3( 1.0, 1.0, 1.0 );\n"
- " FragmentData data = CalcFrag();\n"
- " outDiffuse = data.Colour;\n"
- "}\n")
Advertisement
Add Comment
Please, Sign In to add comment