@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
289 lines • 10.8 kB
JavaScript
// Do not edit.
import { ShaderStore } from "../Engines/shaderStore.js";
import "./ShadersInclude/clipPlaneFragmentDeclaration.js";
import "./ShadersInclude/bumpFragmentMainFunctions.js";
import "./ShadersInclude/bumpFragmentFunctions.js";
import "./ShadersInclude/helperFunctions.js";
import "./ShadersInclude/pbrFragmentReflectionDeclaration.js";
import "./ShadersInclude/sceneUboDeclaration.js";
import "./ShadersInclude/pbrBRDFFunctions.js";
import "./ShadersInclude/openpbrDielectricReflectance.js";
import "./ShadersInclude/pbrIBLFunctions.js";
import "./ShadersInclude/reflectionFunction.js";
import "./ShadersInclude/openpbrGeometryInfo.js";
import "./ShadersInclude/openpbrIblFunctions.js";
import "./ShadersInclude/samplerFragmentDeclaration.js";
import "./ShadersInclude/clipPlaneFragment.js";
import "./ShadersInclude/bumpFragment.js";
import "./ShadersInclude/openpbrSubsurfaceLayerData.js";
import "./ShadersInclude/openpbrTransmissionLayerData.js";
const name = "geometryPixelShader";
const shader = `
varying vWorldView0: vec4f;varying vWorldView1: vec4f;varying vWorldView2: vec4f;varying vWorldView3: vec4f;varying vNormalW: vec3f;
varying vNormalV: vec3f;
varying vViewPos: vec4f;
varying vPositionW: vec3f;
varying vCurrentPosition: vec4f;varying vPreviousPosition: vec4f;
varying vUV: vec2f;
uniform vBumpInfos: vec3f;uniform vTangentSpaceParams: vec2f;
var reflectivitySamplerSampler: sampler;var reflectivitySampler: texture_2d<f32>;varying vReflectivityUV: vec2f;
var metallicSamplerSampler: sampler;var metallicSampler: texture_2d<f32>;varying vMetallicUV: vec2f;
var roughnessSamplerSampler: sampler;var roughnessSampler: texture_2d<f32>;varying vRoughnessUV: vec2f;
varying vAlbedoUV: vec2f;var albedoSamplerSampler: sampler;var albedoSampler: texture_2d<f32>;
uniform reflectivityColor: vec3f;
uniform albedoColor: vec3f;
uniform metallic: f32;
uniform glossiness: f32;
var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d<f32>;
uniform reflectionMatrix: mat4x4f;uniform vReflectionInfos: vec2f;uniform vReflectionDominantDirection: vec3f;
varying vEnvironmentIrradiance: vec3f;
var iblShadowSampler: texture_2d<f32>;var iblShadowSamplerSampler: sampler;uniform shadowTextureSize: vec2f;
uniform vSubsurfaceWeight: f32;
uniform vSubsurfaceScatterAnisotropy: f32;uniform vTransmissionWeight: f32;
uniform vTransmissionScatterAnisotropy: f32;
@fragment
fn main(input: FragmentInputs)->FragmentOutputs {
if (textureSample(diffuseSampler,diffuseSamplerSampler,input.vUV).a<0.4) {discard;}
var normalOutput: vec3f;
var normalW: vec3f=normalize(input.vNormalW);
normalOutput=normalW;
normalOutput=normalize( (mat4x4f(input.vWorldView0,input.vWorldView1,input.vWorldView2,input.vWorldView3)* vec4f(normalW,0.0)).xyz);
normalOutput=normalize(input.vNormalV);
normalOutput=normalize(-cross(dpdx(input.vPositionW),dpdy(input.vPositionW)));
normalOutput=normalOutput*0.5+0.5;
var fragData: array<vec4<f32>,SCENE_MRT_COUNT>;
fragData[DEPTH_INDEX]=vec4f(input.vViewPos.z/input.vViewPos.w,0.0,0.0,1.0);
fragData[NORMAL_INDEX]=vec4f(normalOutput,1.0);
fragData[SCREENSPACE_DEPTH_INDEX]=vec4f(fragmentInputs.position.z,0.0,0.0,1.0);
fragData[POSITION_INDEX]= vec4f(input.vPositionW,1.0);
var a: vec2f=(input.vCurrentPosition.xy/input.vCurrentPosition.w)*0.5+0.5;var b: vec2f=(input.vPreviousPosition.xy/input.vPreviousPosition.w)*0.5+0.5;var velocity: vec2f=abs(a-b);velocity= vec2f(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;fragData[VELOCITY_INDEX]= vec4f(velocity,0.0,1.0);
var velocity : vec2f=vec2f(0.5)*((input.vPreviousPosition.xy /
input.vPreviousPosition.w) -
(input.vCurrentPosition.xy /
input.vCurrentPosition.w));fragData[VELOCITY_LINEAR_INDEX]=vec4f(velocity,0.0,1.0);
var reflectivity: vec4f= vec4f(0.0,0.0,0.0,1.0);
var metal: f32=1.0;var roughness: f32=1.0;
metal*=textureSample(reflectivitySampler,reflectivitySamplerSampler,input.vReflectivityUV).b;roughness*=textureSample(reflectivitySampler,reflectivitySamplerSampler,input.vReflectivityUV).g;
metal*=textureSample(metallicSampler,metallicSamplerSampler,input.vMetallicUV).r;
roughness*=textureSample(roughnessSampler,roughnessSamplerSampler,input.vRoughnessUV).r;
metal*=uniforms.metallic;
roughness*=(1.0-uniforms.glossiness);
reflectivity=vec4f(reflectivity.rgb,reflectivity.a-roughness);var color: vec3f= vec3f(1.0);
color=textureSample(albedoSampler,albedoSamplerSampler,input.vAlbedoUV).rgb;
color=toLinearSpaceVec4(color);
color*=uniforms.albedoColor.xyz;
reflectivity=vec4f(mix( vec3f(0.04),color,metal),reflectivity.a);
reflectivity=textureSample(reflectivitySampler,reflectivitySamplerSampler,input.vReflectivityUV);
reflectivity=vec4f(toLinearSpaceVec3(reflectivity.rgb),reflectivity.a);
reflectivity=vec4f(toLinearSpaceVec3(uniforms.reflectivityColor.xyz),1.0);
reflectivity=vec4f(reflectivity.rgb,reflectivity.a*glossiness);
fragData[REFLECTIVITY_INDEX]=reflectivity;
var irradiance: vec3f=vec3f(0.0);var irradiance_alpha: f32=1.0;
var vSubsurfaceColor: vec3f=vec3f(1.0);var vSubsurfaceRadius: f32=0.0;var vSubsurfaceRadiusScale: vec3f=vec3f(1.0);
var vTransmissionDepth: f32=1.0;var vTransmissionColor: vec3f=vec3f(1.0);var vTransmissionScatter: vec3f=vec3f(0.0);var vTransmissionDispersionScale: f32=0.0;var vTransmissionDispersionAbbeNumber: f32=0.0;
let iblShadowValue: vec3f=textureSample(iblShadowSampler,iblShadowSamplerSampler,fragmentInputs.position.xy/uniforms.shadowTextureSize).rgb;
let iblShadowValue: vec3f=vec3f(textureSample(iblShadowSampler,iblShadowSamplerSampler,fragmentInputs.position.xy/uniforms.shadowTextureSize).r);
let bendAmount: f32=subsurface_weight*-min(subsurface_scatter_anisotropy,0.0);let mixedBendAmount: f32=mix(bendAmount,-min(transmission_scatter_anisotropy,0.0),transmission_weight);let viewVector: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW);let bentNormal: vec3f=mix(normalOutput,viewVector,mixedBendAmount*dot(normalOutput,viewVector));
let bentNormal: vec3f=normalOutput;
irradiance=sampleIrradiance(
bentNormal
,input.vEnvironmentIrradiance
,uniforms.reflectionMatrix
,irradianceSampler
,irradianceSamplerSampler
,uniforms.vReflectionDominantDirection
,uniforms.vReflectionFilteringInfo
,icdfSampler
,icdfSamplerSampler
,uniforms.vReflectionInfos
,input.vViewPos.xyz
,1.0
,vec3f(1.0)
);
irradiance=input.vEnvironmentIrradiance;
irradiance*=iblShadowValue;
let uvOffset: vec2f=vec2f(0.0);
irradiance_alpha=min(subsurface_weight+transmission_weight,1.0);
fragData[IRRADIANCE_INDEX]=vec4f(irradiance,irradiance_alpha);
fragmentOutputs.fragData0=fragData[0];
fragmentOutputs.fragData1=fragData[1];
fragmentOutputs.fragData2=fragData[2];
fragmentOutputs.fragData3=fragData[3];
fragmentOutputs.fragData4=fragData[4];
fragmentOutputs.fragData5=fragData[5];
fragmentOutputs.fragData6=fragData[6];
fragmentOutputs.fragData7=fragData[7];
}
`;
// Sideeffect
if (!ShaderStore.ShadersStoreWGSL[name]) {
ShaderStore.ShadersStoreWGSL[name] = shader;
}
/** @internal */
export const geometryPixelShaderWGSL = { name, shader };
//# sourceMappingURL=geometry.fragment.js.map