メインコンテンツまでスキップ

Medium Precision Boundary Control

Mathematical Foundation: Precision-Aware Value Clamping​

The saturateMediump function implements numerical stability for medium precision floating-point environments by constraining values within the representable range of 16-bit floats commonly used in mobile graphics architectures.

Mathematical Definition:

saturateMediump(x)=min⁡(x,65504.0)\text{saturateMediump}(x) = \min(x, 65504.0)

Precision Analysis:

  • x∈Rx \in \mathbb{R}: Input value (unrestricted domain)
  • 65504.065504.0: Maximum representable value in IEEE 754 half-precision format
  • Prevents numerical overflow in constrained precision environments
  • Maintains computational stability across diverse hardware architectures

Hardware Optimization: The function serves as a mathematical bridge between full-precision calculations and hardware-constrained rendering pipelines, ensuring visual consistency across platforms while optimizing for mobile GPU architectures.

Mobile Hardware Compatibility​

Shows how saturateMediump maintains visual consistency across different precision architectures by demonstrating computational patterns that remain stable within medium precision constraints.

ライブエディター

const fragment = () => {
      const p = uv.sub(0.5).mul(4)
      const t = iTime.mul(0.6)

      // Complex calculations that might overflow on mobile
      const complex1 = p.x.mul(3).add(t).sin().abs().pow(8).mul(10000)
      const complex2 = p.y.mul(2).sub(t.mul(1.3)).cos().exp().mul(5000)
      const complex3 = p.length().add(t.mul(2).sin()).pow(6).mul(8000)

      // Apply saturateMediump for mobile stability
      const stable1 = saturateMediump(complex1).div(65504)
      const stable2 = saturateMediump(complex2).div(65504)
      const stable3 = saturateMediump(complex3).div(65504)

      // Create stable interference pattern
      const interference = stable1.mul(stable2).add(stable2.mul(stable3))
      const pattern = saturateMediump(interference.mul(3)).div(3)

      // Visualize precision-safe computation
      const safety = smoothstep(0.8, 1.0, pattern)

      return vec4(vec3(
              pattern.mul(0.8).add(safety.mul(0.2)),
              pattern.mul(0.9),
              pattern.mul(0.7).add(safety.mul(0.4))
      ), 1)

}
結果
Loading...