pex-renderer
Version:
Physically Based Renderer for Pex
57 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}
${SHADERS.depthPack}
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);
float far = 10.0; // TODO: hardcoded far for depth pass
gl_FragColor = packDepth(length(vPositionView) / far);
}
`