threepipe
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

NoiseBumpMaterialPlugin.patch.glsl 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. vec3 outColor, outColor1, outColor2, outColor3, outColor4, outColor5;
  2. float distFac = length(vViewPosition.xyz);
  3. /*float e = floor( log2( 0.3 * distFac + 3.0 ) / 0.3785116);
  4. float level_z = 0.1 * pow( 1.3 , e ) - 0.2;*/
  5. float level = 1.;//0.15 / level_z;
  6. vec2 uvMod = noiseBumpFlakeScale * noiseBumpParams.xy * vUv * level;
  7. float voronoiDist = clamp(voronoi_f1_2d( uvMod, 1., noiseFlakeClamp, noiseFlakeRadius, outColor ), 0.0, 1.0);
  8. vec3 oldNormal = normal;
  9. normal = perturbNormalArb_nb( - vViewPosition, normal, (2. * outColor.xy - 1.) * noiseBumpScale, faceDirection );
  10. float oldRoughnessFactor = roughnessFactor;
  11. float oldMetalnessFactor = metalnessFactor;
  12. roughnessFactor = mix(roughnessFactor, flakeParams.x, 1. - voronoiDist);
  13. metalnessFactor = mix(metalnessFactor, flakeParams.y, 1. - voronoiDist);
  14. #if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
  15. vec3 sparkleRadiance = getIBLRadiance( normalize(vViewPosition), normal, roughnessFactor );
  16. float sparkleIntensity = length(sparkleRadiance);
  17. float sparkleIntensityMultiplier = sparkleIntensity > 1.3 ? flakeParams.z : 1.;
  18. vec3 oldDiffuseColor = diffuseColor.rgb;
  19. vec2 cellPosition_ = floor(uvMod);
  20. vec3 colorRGB = useColorFlakes ? hash3(cellPosition_) : vec3(1.);
  21. float fallOff_ = mix(1., 1. / (1. + flakeFallOffParams.y * distFac + flakeFallOffParams.z * distFac * distFac), flakeFallOffParams.x);
  22. diffuseColor.rgb *= mix(vec3(1.), sparkleIntensityMultiplier * colorRGB * fallOff_, vec3(1. - voronoiDist));
  23. if(sparkleIntensity < flakeParams.w) {
  24. float mixFactor = 1.;
  25. roughnessFactor = mix(roughnessFactor, oldRoughnessFactor, mixFactor);
  26. metalnessFactor = mix(metalnessFactor, oldMetalnessFactor, mixFactor);
  27. normal = normalize(mix(normal, oldNormal, mixFactor));
  28. diffuseColor.rgb = mix(diffuseColor.rgb, oldDiffuseColor, mixFactor);
  29. }
  30. #endif