pex-renderer
Version:
Physically Based Renderer for Pex
58 lines (45 loc) • 1.19 kB
JavaScript
const SHADERS = require('../chunks/index.js')
module.exports = /* glsl */ `
precision highp float;
// Variables
varying vec3 vNormalView;
varying vec2 vTexCoord0;
varying vec2 vTexCoord1;
varying vec3 vPositionView;
varying vec4 vColor;
struct PBRData {
vec2 texCoord0;
vec2 texCoord1;
float opacity;
};
// Includes
${SHADERS.textureCoordinates}
${SHADERS.baseColor}
${SHADERS.alpha}
void main() {
PBRData data;
data.texCoord0 = vTexCoord0;
data.texCoord1 = vTexCoord1;
getBaseColor(data);
vec2 alphaTexCoord = getTextureCoordinates(data, ALPHA_MAP_TEX_COORD_INDEX, uAlphaMapTexCoordTransform);
vec2 alphaTexCoord = getTextureCoordinates(data, ALPHA_MAP_TEX_COORD_INDEX);
data.opacity *= texture2D(uAlphaMap, alphaTexCoord).r;
alphaTest(data);
vec3 normal = vNormalView;
normal *= float(gl_FrontFacing) * 2.0 - 1.0;
gl_FragColor = vec4(normal * 0.5 + 0.5, 1.0);
}
`