Skip to content

Android Impeller Vulkan renders cubemap-mip IBL reflections over-sharp #241

Closed
flutter/flutter
#190186

Description

@Ram-Dawson

Summary

On Android native builds using Impeller Vulkan, environment maps that use the
cubemap-mip radiance layout produce overly sharp, roughness-dependent IBL
reflections. The same scene is normal when the legacy radiance atlas layout is
used.

Reproduction

  • Official bdero/flutter_scene master baseline: 4bc80f598086a574e3c169eb06a9a1c2f63f3bdd
  • Redmi K60 Pro (socrates, 22127RK46C), HyperOS OS3.0.303.0
  • OnePlus 13 (PJZ110), Android 16 (API 36)
  • Flutter 3.47.0-1.0.pre-87, engine fc1ad955f1, Dart 3.14.0-28.0.dev

The Redmi startup log reports the Impeller Vulkan backend. The shiny Car scene
reproduces on both devices.

Observed behavior

Upstream reference (author-provided) Android Impeller Vulkan with cubemap-mip radiance
Author-provided reference image Overly sharp Android cubemap-mip IBL reflections

On Android Impeller Vulkan, the cubemap-mip radiance layout produces overly
sharp, roughness-dependent IBL reflections compared with the upstream reference.

Expected behavior

Android output should match the upstream reference and should not remain overly
sharp across roughness levels.

Current workaround

Keep Android native environments on the legacy radiance atlas while retaining
cubemap-mip radiance on web and other native platforms. A focused PR with
platform-selection tests will be linked here.

Activity

  1. bdero commented on Jul 17, 2026

    @bdero
    Owner

    Thanks for opening this!

  2. bdero commented on Jul 24, 2026

    @bdero
    Owner

    I have a PR upstream to fix the manual mip sampling capability flag being incorrect for Adreno Vulkan drivers that should address this: flutter/flutter#189897

  3. Ram-Dawson commented on Jul 24, 2026

    @Ram-Dawson
    ContributorAuthor

    Thanks for the upstream fix. I also submitted flutter/flutter#189966 this morning to explore an explicit opt-in for complete manually supplied mip chains; after building a local engine with that change, after building a local engine with that change, I verified that it fixes the overly sharp reflections in flutter_scene’s Car example on this device. I see flutter/flutter#189897 as the safe capability correction for flutter_scene, while #189966 is a possible follow-up and still needs maintainer confirmation on whether exposing explicit manual-mip sampling is worthwhile.

  4. added a commit that references this issue on Sep 23, 2026
    e91c38b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions