453 lines
15 KiB
WebGPU Shading Language
453 lines
15 KiB
WebGPU Shading Language
struct lightingInfo {
|
|
diffuse : vec3<f32>;
|
|
specular : vec3<f32>;
|
|
};
|
|
|
|
struct LeftOver {
|
|
u_World : mat4x4<f32>;
|
|
u_ViewProjection : mat4x4<f32>;
|
|
u_bumpStrength : f32;
|
|
[[size(12)]]
|
|
padding : u32;
|
|
u_cameraPosition : vec3<f32>;
|
|
u_parallaxScale : f32;
|
|
textureInfoName : f32;
|
|
[[size(4)]]
|
|
padding_1 : u32;
|
|
tangentSpaceParameter0 : vec2<f32>;
|
|
};
|
|
|
|
struct Light0 {
|
|
vLightData : vec4<f32>;
|
|
vLightDiffuse : vec4<f32>;
|
|
vLightSpecular : vec4<f32>;
|
|
vLightGround : vec3<f32>;
|
|
[[size(4)]]
|
|
padding_2 : u32;
|
|
shadowsInfo : vec4<f32>;
|
|
depthValues : vec2<f32>;
|
|
};
|
|
|
|
var<private> u_Float : f32;
|
|
|
|
var<private> u_Color : vec3<f32>;
|
|
|
|
[[group(2), binding(1)]] var TextureSamplerTexture : texture_2d<f32>;
|
|
|
|
[[group(2), binding(0)]] var TextureSamplerSampler : sampler;
|
|
|
|
var<private> vMainuv : vec2<f32>;
|
|
|
|
[[group(2), binding(6)]] var<uniform> x_269 : LeftOver;
|
|
|
|
var<private> v_output1 : vec4<f32>;
|
|
|
|
var<private> gl_FrontFacing : bool;
|
|
|
|
var<private> v_uv : vec2<f32>;
|
|
|
|
var<private> v_output2 : vec4<f32>;
|
|
|
|
[[group(2), binding(3)]] var TextureSampler1Texture : texture_2d<f32>;
|
|
|
|
[[group(2), binding(2)]] var TextureSampler1Sampler : sampler;
|
|
|
|
[[group(0), binding(5)]] var<uniform> light0 : Light0;
|
|
|
|
var<private> glFragColor : vec4<f32>;
|
|
|
|
[[group(2), binding(4)]] var bumpSamplerSampler : sampler;
|
|
|
|
[[group(2), binding(5)]] var bumpSamplerTexture : texture_2d<f32>;
|
|
|
|
fn cotangent_frame_vf3_vf3_vf2_vf2_(normal_1 : ptr<function, vec3<f32>>, p : ptr<function, vec3<f32>>, uv : ptr<function, vec2<f32>>, tangentSpaceParams : ptr<function, vec2<f32>>) -> mat3x3<f32> {
|
|
var dp1 : vec3<f32>;
|
|
var dp2 : vec3<f32>;
|
|
var duv1 : vec2<f32>;
|
|
var duv2 : vec2<f32>;
|
|
var dp2perp : vec3<f32>;
|
|
var dp1perp : vec3<f32>;
|
|
var tangent : vec3<f32>;
|
|
var bitangent : vec3<f32>;
|
|
var invmax : f32;
|
|
let x_133 : vec3<f32> = *(p);
|
|
dp1 = dpdx(x_133);
|
|
let x_136 : vec3<f32> = *(p);
|
|
dp2 = dpdy(x_136);
|
|
let x_139 : vec2<f32> = *(uv);
|
|
duv1 = dpdx(x_139);
|
|
let x_142 : vec2<f32> = *(uv);
|
|
duv2 = dpdy(x_142);
|
|
let x_145 : vec3<f32> = dp2;
|
|
let x_146 : vec3<f32> = *(normal_1);
|
|
dp2perp = cross(x_145, x_146);
|
|
let x_149 : vec3<f32> = *(normal_1);
|
|
let x_150 : vec3<f32> = dp1;
|
|
dp1perp = cross(x_149, x_150);
|
|
let x_153 : vec3<f32> = dp2perp;
|
|
let x_155 : f32 = duv1.x;
|
|
let x_157 : vec3<f32> = dp1perp;
|
|
let x_159 : f32 = duv2.x;
|
|
tangent = ((x_153 * x_155) + (x_157 * x_159));
|
|
let x_163 : vec3<f32> = dp2perp;
|
|
let x_165 : f32 = duv1.y;
|
|
let x_167 : vec3<f32> = dp1perp;
|
|
let x_169 : f32 = duv2.y;
|
|
bitangent = ((x_163 * x_165) + (x_167 * x_169));
|
|
let x_173 : f32 = (*(tangentSpaceParams)).x;
|
|
let x_174 : vec3<f32> = tangent;
|
|
tangent = (x_174 * x_173);
|
|
let x_177 : f32 = (*(tangentSpaceParams)).y;
|
|
let x_178 : vec3<f32> = bitangent;
|
|
bitangent = (x_178 * x_177);
|
|
let x_181 : vec3<f32> = tangent;
|
|
let x_182 : vec3<f32> = tangent;
|
|
let x_184 : vec3<f32> = bitangent;
|
|
let x_185 : vec3<f32> = bitangent;
|
|
invmax = inverseSqrt(max(dot(x_181, x_182), dot(x_184, x_185)));
|
|
let x_189 : vec3<f32> = tangent;
|
|
let x_190 : f32 = invmax;
|
|
let x_191 : vec3<f32> = (x_189 * x_190);
|
|
let x_192 : vec3<f32> = bitangent;
|
|
let x_193 : f32 = invmax;
|
|
let x_194 : vec3<f32> = (x_192 * x_193);
|
|
let x_195 : vec3<f32> = *(normal_1);
|
|
return mat3x3<f32>(vec3<f32>(x_191.x, x_191.y, x_191.z), vec3<f32>(x_194.x, x_194.y, x_194.z), vec3<f32>(x_195.x, x_195.y, x_195.z));
|
|
}
|
|
|
|
fn transposeMat3_mf33_(inMatrix : ptr<function, mat3x3<f32>>) -> mat3x3<f32> {
|
|
var i0 : vec3<f32>;
|
|
var i1 : vec3<f32>;
|
|
var i2 : vec3<f32>;
|
|
var outMatrix : mat3x3<f32>;
|
|
let x_60 : vec3<f32> = (*(inMatrix))[0];
|
|
i0 = x_60;
|
|
let x_64 : vec3<f32> = (*(inMatrix))[1];
|
|
i1 = x_64;
|
|
let x_68 : vec3<f32> = (*(inMatrix))[2];
|
|
i2 = x_68;
|
|
let x_73 : f32 = i0.x;
|
|
let x_75 : f32 = i1.x;
|
|
let x_77 : f32 = i2.x;
|
|
let x_78 : vec3<f32> = vec3<f32>(x_73, x_75, x_77);
|
|
let x_81 : f32 = i0.y;
|
|
let x_83 : f32 = i1.y;
|
|
let x_85 : f32 = i2.y;
|
|
let x_86 : vec3<f32> = vec3<f32>(x_81, x_83, x_85);
|
|
let x_89 : f32 = i0.z;
|
|
let x_91 : f32 = i1.z;
|
|
let x_93 : f32 = i2.z;
|
|
let x_94 : vec3<f32> = vec3<f32>(x_89, x_91, x_93);
|
|
outMatrix = mat3x3<f32>(vec3<f32>(x_78.x, x_78.y, x_78.z), vec3<f32>(x_86.x, x_86.y, x_86.z), vec3<f32>(x_94.x, x_94.y, x_94.z));
|
|
let x_110 : mat3x3<f32> = outMatrix;
|
|
return x_110;
|
|
}
|
|
|
|
fn perturbNormalBase_mf33_vf3_f1_(cotangentFrame : ptr<function, mat3x3<f32>>, normal : ptr<function, vec3<f32>>, scale : ptr<function, f32>) -> vec3<f32> {
|
|
let x_113 : mat3x3<f32> = *(cotangentFrame);
|
|
let x_114 : vec3<f32> = *(normal);
|
|
return normalize((x_113 * x_114));
|
|
}
|
|
|
|
fn perturbNormal_mf33_vf3_f1_(cotangentFrame_1 : ptr<function, mat3x3<f32>>, textureSample : ptr<function, vec3<f32>>, scale_1 : ptr<function, f32>) -> vec3<f32> {
|
|
var param : mat3x3<f32>;
|
|
var param_1 : vec3<f32>;
|
|
var param_2 : f32;
|
|
let x_119 : vec3<f32> = *(textureSample);
|
|
let x_125 : mat3x3<f32> = *(cotangentFrame_1);
|
|
param = x_125;
|
|
param_1 = ((x_119 * 2.0) - vec3<f32>(1.0, 1.0, 1.0));
|
|
let x_128 : f32 = *(scale_1);
|
|
param_2 = x_128;
|
|
let x_129 : vec3<f32> = perturbNormalBase_mf33_vf3_f1_(&(param), &(param_1), &(param_2));
|
|
return x_129;
|
|
}
|
|
|
|
fn computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(viewDirectionW : ptr<function, vec3<f32>>, vNormal : ptr<function, vec3<f32>>, lightData : ptr<function, vec4<f32>>, diffuseColor : ptr<function, vec3<f32>>, specularColor : ptr<function, vec3<f32>>, groundColor : ptr<function, vec3<f32>>, glossiness : ptr<function, f32>) -> lightingInfo {
|
|
var ndl : f32;
|
|
var result : lightingInfo;
|
|
var angleW : vec3<f32>;
|
|
var specComp : f32;
|
|
let x_212 : vec3<f32> = *(vNormal);
|
|
let x_213 : vec4<f32> = *(lightData);
|
|
ndl = ((dot(x_212, vec3<f32>(x_213.x, x_213.y, x_213.z)) * 0.5) + 0.5);
|
|
let x_220 : vec3<f32> = *(groundColor);
|
|
let x_221 : vec3<f32> = *(diffuseColor);
|
|
let x_222 : f32 = ndl;
|
|
result.diffuse = mix(x_220, x_221, vec3<f32>(x_222, x_222, x_222));
|
|
let x_227 : vec3<f32> = *(viewDirectionW);
|
|
let x_228 : vec4<f32> = *(lightData);
|
|
angleW = normalize((x_227 + vec3<f32>(x_228.x, x_228.y, x_228.z)));
|
|
let x_233 : vec3<f32> = *(vNormal);
|
|
let x_234 : vec3<f32> = angleW;
|
|
specComp = max(0.0, dot(x_233, x_234));
|
|
let x_237 : f32 = specComp;
|
|
let x_238 : f32 = *(glossiness);
|
|
specComp = pow(x_237, max(1.0, x_238));
|
|
let x_241 : f32 = specComp;
|
|
let x_242 : vec3<f32> = *(specularColor);
|
|
result.specular = (x_242 * x_241);
|
|
let x_245 : lightingInfo = result;
|
|
return x_245;
|
|
}
|
|
|
|
fn main_1() {
|
|
var tempTextureRead : vec4<f32>;
|
|
var rgb : vec3<f32>;
|
|
var output5 : vec3<f32>;
|
|
var output4 : vec4<f32>;
|
|
var uvOffset : vec2<f32>;
|
|
var normalScale : f32;
|
|
var TBNUV : vec2<f32>;
|
|
var x_299 : vec2<f32>;
|
|
var TBN : mat3x3<f32>;
|
|
var param_3 : vec3<f32>;
|
|
var param_4 : vec3<f32>;
|
|
var param_5 : vec2<f32>;
|
|
var param_6 : vec2<f32>;
|
|
var invTBN : mat3x3<f32>;
|
|
var param_7 : mat3x3<f32>;
|
|
var parallaxLimit : f32;
|
|
var vOffsetDir : vec2<f32>;
|
|
var vMaxOffset : vec2<f32>;
|
|
var numSamples : f32;
|
|
var stepSize : f32;
|
|
var currRayHeight : f32;
|
|
var vCurrOffset : vec2<f32>;
|
|
var vLastOffset : vec2<f32>;
|
|
var lastSampledHeight : f32;
|
|
var currSampledHeight : f32;
|
|
var i : i32;
|
|
var delta1 : f32;
|
|
var delta2 : f32;
|
|
var ratio : f32;
|
|
var parallaxOcclusion_0 : vec2<f32>;
|
|
var param_8 : mat3x3<f32>;
|
|
var param_9 : vec3<f32>;
|
|
var param_10 : f32;
|
|
var output6 : vec2<f32>;
|
|
var tempTextureRead1 : vec4<f32>;
|
|
var rgb1 : vec3<f32>;
|
|
var viewDirectionW_1 : vec3<f32>;
|
|
var shadow : f32;
|
|
var glossiness_1 : f32;
|
|
var diffuseBase : vec3<f32>;
|
|
var specularBase : vec3<f32>;
|
|
var normalW : vec3<f32>;
|
|
var info : lightingInfo;
|
|
var param_11 : vec3<f32>;
|
|
var param_12 : vec3<f32>;
|
|
var param_13 : vec4<f32>;
|
|
var param_14 : vec3<f32>;
|
|
var param_15 : vec3<f32>;
|
|
var param_16 : vec3<f32>;
|
|
var param_17 : f32;
|
|
var diffuseOutput : vec3<f32>;
|
|
var specularOutput : vec3<f32>;
|
|
var output3 : vec3<f32>;
|
|
u_Float = 100.0;
|
|
u_Color = vec3<f32>(0.5, 0.5, 0.5);
|
|
let x_261 : vec2<f32> = vMainuv;
|
|
let x_262 : vec4<f32> = textureSample(TextureSamplerTexture, TextureSamplerSampler, x_261);
|
|
tempTextureRead = x_262;
|
|
let x_264 : vec4<f32> = tempTextureRead;
|
|
let x_273 : f32 = x_269.textureInfoName;
|
|
rgb = (vec3<f32>(x_264.x, x_264.y, x_264.z) * x_273);
|
|
let x_279 : vec3<f32> = x_269.u_cameraPosition;
|
|
let x_282 : vec4<f32> = v_output1;
|
|
output5 = normalize((x_279 - vec3<f32>(x_282.x, x_282.y, x_282.z)));
|
|
output4 = vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
uvOffset = vec2<f32>(0.0, 0.0);
|
|
let x_292 : f32 = x_269.u_bumpStrength;
|
|
normalScale = (1.0 / x_292);
|
|
let x_298 : bool = gl_FrontFacing;
|
|
if (x_298) {
|
|
let x_303 : vec2<f32> = v_uv;
|
|
x_299 = x_303;
|
|
} else {
|
|
let x_305 : vec2<f32> = v_uv;
|
|
x_299 = -(x_305);
|
|
}
|
|
let x_307 : vec2<f32> = x_299;
|
|
TBNUV = x_307;
|
|
let x_310 : vec4<f32> = v_output2;
|
|
let x_312 : f32 = normalScale;
|
|
param_3 = (vec3<f32>(x_310.x, x_310.y, x_310.z) * x_312);
|
|
let x_317 : vec4<f32> = v_output1;
|
|
param_4 = vec3<f32>(x_317.x, x_317.y, x_317.z);
|
|
let x_320 : vec2<f32> = TBNUV;
|
|
param_5 = x_320;
|
|
let x_324 : vec2<f32> = x_269.tangentSpaceParameter0;
|
|
param_6 = x_324;
|
|
let x_325 : mat3x3<f32> = cotangent_frame_vf3_vf3_vf2_vf2_(&(param_3), &(param_4), &(param_5), &(param_6));
|
|
TBN = x_325;
|
|
let x_328 : mat3x3<f32> = TBN;
|
|
param_7 = x_328;
|
|
let x_329 : mat3x3<f32> = transposeMat3_mf33_(&(param_7));
|
|
invTBN = x_329;
|
|
let x_331 : mat3x3<f32> = invTBN;
|
|
let x_332 : vec3<f32> = output5;
|
|
let x_334 : vec3<f32> = (x_331 * -(x_332));
|
|
let x_337 : mat3x3<f32> = invTBN;
|
|
let x_338 : vec3<f32> = output5;
|
|
parallaxLimit = (length(vec2<f32>(x_334.x, x_334.y)) / ((x_337 * -(x_338))).z);
|
|
let x_345 : f32 = x_269.u_parallaxScale;
|
|
let x_346 : f32 = parallaxLimit;
|
|
parallaxLimit = (x_346 * x_345);
|
|
let x_349 : mat3x3<f32> = invTBN;
|
|
let x_350 : vec3<f32> = output5;
|
|
let x_352 : vec3<f32> = (x_349 * -(x_350));
|
|
vOffsetDir = normalize(vec2<f32>(x_352.x, x_352.y));
|
|
let x_356 : vec2<f32> = vOffsetDir;
|
|
let x_357 : f32 = parallaxLimit;
|
|
vMaxOffset = (x_356 * x_357);
|
|
let x_361 : mat3x3<f32> = invTBN;
|
|
let x_362 : vec3<f32> = output5;
|
|
let x_365 : mat3x3<f32> = invTBN;
|
|
let x_366 : vec4<f32> = v_output2;
|
|
numSamples = (15.0 + (dot((x_361 * -(x_362)), (x_365 * vec3<f32>(x_366.x, x_366.y, x_366.z))) * -11.0));
|
|
let x_374 : f32 = numSamples;
|
|
stepSize = (1.0 / x_374);
|
|
currRayHeight = 1.0;
|
|
vCurrOffset = vec2<f32>(0.0, 0.0);
|
|
vLastOffset = vec2<f32>(0.0, 0.0);
|
|
lastSampledHeight = 1.0;
|
|
currSampledHeight = 1.0;
|
|
i = 0;
|
|
loop {
|
|
let x_388 : i32 = i;
|
|
if ((x_388 < 15)) {
|
|
} else {
|
|
break;
|
|
}
|
|
let x_394 : vec2<f32> = v_uv;
|
|
let x_395 : vec2<f32> = vCurrOffset;
|
|
let x_397 : vec4<f32> = textureSample(TextureSamplerTexture, TextureSamplerSampler, (x_394 + x_395));
|
|
currSampledHeight = x_397.w;
|
|
let x_400 : f32 = currSampledHeight;
|
|
let x_401 : f32 = currRayHeight;
|
|
if ((x_400 > x_401)) {
|
|
let x_406 : f32 = currSampledHeight;
|
|
let x_407 : f32 = currRayHeight;
|
|
delta1 = (x_406 - x_407);
|
|
let x_410 : f32 = currRayHeight;
|
|
let x_411 : f32 = stepSize;
|
|
let x_413 : f32 = lastSampledHeight;
|
|
delta2 = ((x_410 + x_411) - x_413);
|
|
let x_416 : f32 = delta1;
|
|
let x_417 : f32 = delta1;
|
|
let x_418 : f32 = delta2;
|
|
ratio = (x_416 / (x_417 + x_418));
|
|
let x_421 : f32 = ratio;
|
|
let x_422 : vec2<f32> = vLastOffset;
|
|
let x_424 : f32 = ratio;
|
|
let x_426 : vec2<f32> = vCurrOffset;
|
|
vCurrOffset = ((x_422 * x_421) + (x_426 * (1.0 - x_424)));
|
|
break;
|
|
} else {
|
|
let x_431 : f32 = stepSize;
|
|
let x_432 : f32 = currRayHeight;
|
|
currRayHeight = (x_432 - x_431);
|
|
let x_434 : vec2<f32> = vCurrOffset;
|
|
vLastOffset = x_434;
|
|
let x_435 : f32 = stepSize;
|
|
let x_436 : vec2<f32> = vMaxOffset;
|
|
let x_438 : vec2<f32> = vCurrOffset;
|
|
vCurrOffset = (x_438 + (x_436 * x_435));
|
|
let x_440 : f32 = currSampledHeight;
|
|
lastSampledHeight = x_440;
|
|
}
|
|
|
|
continuing {
|
|
let x_441 : i32 = i;
|
|
i = (x_441 + 1);
|
|
}
|
|
}
|
|
let x_444 : vec2<f32> = vCurrOffset;
|
|
parallaxOcclusion_0 = x_444;
|
|
let x_445 : vec2<f32> = parallaxOcclusion_0;
|
|
uvOffset = x_445;
|
|
let x_449 : vec2<f32> = v_uv;
|
|
let x_450 : vec2<f32> = uvOffset;
|
|
let x_452 : vec4<f32> = textureSample(TextureSamplerTexture, TextureSamplerSampler, (x_449 + x_450));
|
|
let x_454 : f32 = x_269.u_bumpStrength;
|
|
let x_457 : mat3x3<f32> = TBN;
|
|
param_8 = x_457;
|
|
param_9 = vec3<f32>(x_452.x, x_452.y, x_452.z);
|
|
param_10 = (1.0 / x_454);
|
|
let x_461 : vec3<f32> = perturbNormal_mf33_vf3_f1_(&(param_8), &(param_9), &(param_10));
|
|
let x_462 : vec4<f32> = output4;
|
|
output4 = vec4<f32>(x_461.x, x_461.y, x_461.z, x_462.w);
|
|
let x_465 : vec2<f32> = v_uv;
|
|
let x_466 : vec2<f32> = uvOffset;
|
|
output6 = (x_465 + x_466);
|
|
let x_474 : vec2<f32> = output6;
|
|
let x_475 : vec4<f32> = textureSample(TextureSampler1Texture, TextureSampler1Sampler, x_474);
|
|
tempTextureRead1 = x_475;
|
|
let x_477 : vec4<f32> = tempTextureRead1;
|
|
rgb1 = vec3<f32>(x_477.x, x_477.y, x_477.z);
|
|
let x_481 : vec3<f32> = x_269.u_cameraPosition;
|
|
let x_482 : vec4<f32> = v_output1;
|
|
viewDirectionW_1 = normalize((x_481 - vec3<f32>(x_482.x, x_482.y, x_482.z)));
|
|
shadow = 1.0;
|
|
let x_488 : f32 = u_Float;
|
|
glossiness_1 = (1.0 * x_488);
|
|
diffuseBase = vec3<f32>(0.0, 0.0, 0.0);
|
|
specularBase = vec3<f32>(0.0, 0.0, 0.0);
|
|
let x_494 : vec4<f32> = output4;
|
|
normalW = vec3<f32>(x_494.x, x_494.y, x_494.z);
|
|
let x_501 : vec3<f32> = viewDirectionW_1;
|
|
param_11 = x_501;
|
|
let x_503 : vec3<f32> = normalW;
|
|
param_12 = x_503;
|
|
let x_507 : vec4<f32> = light0.vLightData;
|
|
param_13 = x_507;
|
|
let x_510 : vec4<f32> = light0.vLightDiffuse;
|
|
param_14 = vec3<f32>(x_510.x, x_510.y, x_510.z);
|
|
let x_514 : vec4<f32> = light0.vLightSpecular;
|
|
param_15 = vec3<f32>(x_514.x, x_514.y, x_514.z);
|
|
let x_518 : vec3<f32> = light0.vLightGround;
|
|
param_16 = x_518;
|
|
let x_520 : f32 = glossiness_1;
|
|
param_17 = x_520;
|
|
let x_521 : lightingInfo = computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(&(param_11), &(param_12), &(param_13), &(param_14), &(param_15), &(param_16), &(param_17));
|
|
info = x_521;
|
|
shadow = 1.0;
|
|
let x_523 : vec3<f32> = info.diffuse;
|
|
let x_524 : f32 = shadow;
|
|
let x_526 : vec3<f32> = diffuseBase;
|
|
diffuseBase = (x_526 + (x_523 * x_524));
|
|
let x_529 : vec3<f32> = info.specular;
|
|
let x_530 : f32 = shadow;
|
|
let x_532 : vec3<f32> = specularBase;
|
|
specularBase = (x_532 + (x_529 * x_530));
|
|
let x_535 : vec3<f32> = diffuseBase;
|
|
let x_536 : vec3<f32> = rgb1;
|
|
diffuseOutput = (x_535 * x_536);
|
|
let x_539 : vec3<f32> = specularBase;
|
|
let x_540 : vec3<f32> = u_Color;
|
|
specularOutput = (x_539 * x_540);
|
|
let x_543 : vec3<f32> = diffuseOutput;
|
|
let x_544 : vec3<f32> = specularOutput;
|
|
output3 = (x_543 + x_544);
|
|
let x_548 : vec3<f32> = output3;
|
|
glFragColor = vec4<f32>(x_548.x, x_548.y, x_548.z, 1.0);
|
|
return;
|
|
}
|
|
|
|
struct main_out {
|
|
[[location(0)]]
|
|
glFragColor_1 : vec4<f32>;
|
|
};
|
|
|
|
[[stage(fragment)]]
|
|
fn main([[location(1)]] vMainuv_param : vec2<f32>, [[location(0)]] v_output1_param : vec4<f32>, [[builtin(front_facing)]] gl_FrontFacing_param : bool, [[location(3)]] v_uv_param : vec2<f32>, [[location(2)]] v_output2_param : vec4<f32>) -> main_out {
|
|
vMainuv = vMainuv_param;
|
|
v_output1 = v_output1_param;
|
|
gl_FrontFacing = gl_FrontFacing_param;
|
|
v_uv = v_uv_param;
|
|
v_output2 = v_output2_param;
|
|
main_1();
|
|
return main_out(glFragColor);
|
|
}
|