ArtificialGuyBR

Home / Blog / Training LoRAs

FilmGrain.Redmond: Film Grain LoRA for SDXL

Learn how to add authentic film grain texture to SDXL images with this free LoRA by ArtificialGuyBR, triggered via simple prompt tags.

2 sources cited Training LoRAs

FilmGrain.Redmond: Authentic Film Grain for SDXL Images

Adding convincing film grain to AI-generated images used to require manual post-processing or complex ComfyUI workflows. FilmGrain.Redmond is a fine-tuned LoRA for SDXL that does it in a single pass — just add a couple of trigger words to your prompt.

What FilmGrain.Redmond Does

This LoRA was trained specifically to replicate the texture and noise patterns of analog film grain. Rather than overlaying a uniform noise layer, the grain adapts to the image content — denser in shadows, subtler in highlights — just like real film stock.

The model was fine-tuned on the stabilityai/stable-diffusion-xl-base-1.0 base model. GPU compute for training was provided by Redmond.AI. It's available in versions for multiple base models including ZImageTurbo, QWEN Image, and Flux.2 Klein 9B, but this article covers the SDXL variant.

Trigger Words and How to Use Them

Add both trigger words at the end of your prompt:

A beautiful blonde girl, close-up, portrait, Film Grain, FilmGrainAF

The FILMGRAIN and FilmGrainAF tags are the trained instance prompts. Using both together gives the most consistent grain. You can pair them with style modifiers like "black and white", "colorful", "minimalist", or "detailed" to steer the overall look.

Parameter | Value

|---|---

Inference steps | 30 Scheduler | DPMSolverMultistepScheduler LoRA weight | 0.6–1.0 (adjust for intensity) Format | SafeTensors (81.15 MB)

Loading in Diffusers

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    'stabilityai/stable-diffusion-xl-base-1.0',
    torch_dtype=torch.float16
).to('cuda')

pipeline.load_lora_weights(
    'artificialguybr/filmgrain-redmond-filmgrain-lora-for-sdxl',
    weight_name='FilmGrainRedmond-FilmGrain-FilmGrainAF.safetensors'
)

image = pipeline(
    'A beautiful blonde girl, close-up, portrait, Film Grain, FilmGrainAF'
).images[0]

Adjust the LoRA weight in load_lora_weights() using weight_name and the cross_attention_kwargs parameter if you want less grain. A weight of 0.6–0.8 gives a subtle texture; 1.0 applies the full effect.

Film grain applied to a portrait using the FilmGrain.Redmond LoRA

Use Cases

Film grain effect across different styles and subjects

Compatibility

This SDXL version works in:

The same model is also available for ZImageTurbo, QWEN Image, and Flux.2 Klein 9B base models on Civitai.

License

Licensed under a custom license that allows commercial use without requiring attribution. Derivatives and relicensing under a different license are not permitted.

Common Errors and Fixes

Error | Cause | Fix | Source

|---|---|---|---

Grain too strong | LoRA weight too high | Lower weight to 0.4–0.6 | HF README No grain effect visible | Missing trigger words | Add Film Grain, FilmGrainAF to prompt | Civitai page Color shifts at high weight | LoRA overpowers base model | Reduce weight or add negative prompt for color control | Civitai page

FAQ

Can I use this LoRA with SD 1.5? No, this version is trained specifically for SDXL. Other base model versions are available on Civitai.

What's the difference between Film Grain and FilmGrainAF? Both are trained instance prompts. Using both together gives the most reliable results, though each can work independently.

Is there a free online demo? Yes, ArtificialGuyBR hosts a free LoRA demo on HuggingFace Spaces where you can test this and other LoRAs.

How much VRAM do I need? Standard SDXL requirements apply — 8 GB minimum for the base model plus LoRA overhead.

Sources