@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.
171 lines • 5.58 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/clipPlaneFragment.js";
import "./ShadersInclude/bumpFragment.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;
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>;
@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=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*=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;
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