Custom shader hết “ngách” khi Impeller nắm stack. API gần đây gỡ các nốt đau tồi tệ nhất.
Bind uniform theo tên
void setUp(ui.FragmentShader shader) {
shader.getUniformFloat('intensity').set(0.85);
}
Không còn đếm slot float thủ công — bớt bug off-by-one trên GPU.
Texture đồng bộ trong cùng frame
final image = picture.toImageSync(
128,
128,
targetFormat: ui.TargetPixelFormat.rFloat32,
);
shader.setImageSampler(0, image);
decodeImageFromPixelsSync / toImageSync bỏ một frame lag khi tạo texture sampler. Format high-bit (tới 128-bit float) mở khóa LUT và SDF nghiêm túc.
Workflow
- Viết
.fragtrongshaders/. - Load theo docs (ShaderLib / asset API).
- Preview cách ly; rồi mới integrate sau feature flag.
Cạm bẫy
- Khác biệt tọa độ Skia vs Impeller vẫn cắn shader port.
- LUT lớn cần ngân sách memory — phải đo.
Bài viết gốc đăng tại FlutterCook. Bản trên đó là bản được cập nhật mới nhất.
Nhận xét
Đăng nhận xét