Maturity: Draft. Every engine step between a flake texture and a screen pixel is traced from compiled programs, installed templates and one installed community glitter mod. The route is measured offline (experiment 018), built as a verified diagnostic board (experiment 021) and reworked after its first in-game verdict (experiment 033). Runtime evidence so far runtime:
- Session 1 (25 September): the default faceted Shimmer read as a diffused gloss.
- Sessions 3 and 4: the facet bake was a static grid of large dots.
- Session 6 (29 September), by hand under movable lights:
- Shimmer's sparse grain read as glossy vinyl.
- Board 1's Glitter A "doesn't seem much like glitter": the flecks looked printed on the base, with little light response.
- In showroom close-ups under the creator rig, Glitter A showed a fine sparkle grain and the Shimmer grain a pearly sheen with a pink-white glint.
This page answers three questions for XF Eye Artistry:
- Which game mechanisms can show discrete sparkles that respond to light and view on the eye plate?
- Which route should Glitter export use, and what exactly goes into its material?
- What must the Studio's preview do to match it?
Engine basics (G-buffer, decal blending, skin lighting) are in materials and shaders; this page cites them rather than repeating them.
Evidence grades: source compiled programs or tool source; resource installed game or mod files; wiki Cyberpunk Modding Docs; runtime seen in game; [offline] measured here on generated maps; hypothesis not established.
Summary
- A sparkle is one pixel whose single normal happens to mirror the light. The G-buffer holds one normal, roughness and metalness per pixel, and nothing in the decal or skin programs widens roughness for lost normal detail. So a flake can only sparkle if it covers whole pixels at the viewing distance. Sub-pixel glints cannot be drawn source.
- The plate's texture density was the first bottleneck, and the fix is now in Build. The plate uses the head's UVs, so a 1024 atlas gives about 0.4–0.56 mm per texel on the lids; vanilla eye makeup has its own UV layout that is about 7 times denser.
mesh_has UV scale and offset constants, so a plate-local window in a non-square texture spends every texel on the plate. The flat and faceted export routes now use a 2048×512 window (today's texel count, about 0.13 × 0.12 mm per texel), with the V sign verified offline (experiment 019); 4096×1024 would reach about 0.06 mm for a Glitter route source resource [offline]. Shimmer no longer uses authored facets: its grain is one window texel (Shimmer design).decal - Temporal antialiasing removes one-pixel glints. The decoded temporal program clamps history to the 5-tap mean ± 1σ in PQ space. That dims an isolated one-pixel glint by roughly an order of magnitude but keeps glints of 2×2 pixels or more source. So every flake has to be at least 2 texels wide at every mip level. DLSS, FSR3 and XeSS are closed binaries whose behaviour is hypothesis.
- Recommended primary route: resolved glint flakes in
mesh_. The window texture carries strongly tilted, low-roughness, high-metalness flakes, with a separate flake mask and dilated normals. A nested mip chain re-draws flakes at at least 2 texels on every level instead of averaging them. Offline, this keeps 3 times more sparkling pixels after the temporal clamp at the face-framing mip, and 30 times more one level further, than a plain BOX chain [offline]. Build now has it as a diagnostic route that only a prepared collection'sdecal glitterknob reaches; the Glitter finish itself is still omitted from ordinary exports. On the built board, block compression keeps the flakes (BC5 normals within 1° at the 95th percentile, BC4 flake edges within 0.055) and WolvenKit keeps the supplied nested chains [offline] (experiment 021). The look is still hypothesis. - Fallback: the same maps plus an emissive sparkle accent on a second plate chunk (
mesh_). It stays visible at any distance, but it is light-independent, so it must be labelled as stylised source.decal_ emissive_ subsurface - Every flake must tilt above mode 1's fade.
NormalsBlendingMode1 writes a flake's normal at weight saturate(50 − 50z), full only from about 11.5° of tilt source. A flatter flake keeps the skin's normal, so it brightens with the lid's own highlight, like paint on it. Board 1's |N(0, 25°)| tilts put 37 % of its flake texels under the fade, and a third of its flakes were brightest exactly where the skin's highlight is [offline]: the "printed" verdict. Glitter flakes 2 gives every flake at least 14° (experiment 033). - Community precedent. The installed glitter eyeshadow mod (Limerence × AllieKat Winterkissed, Nexus file "Limerence AXL Glitter Eyeshadows") uses plain
mesh_. It has 4096² maps on the vanilla eye-makeup UVs, embossed shape outlines as normals, metalness near 1 and roughness 0–0.25 resource.decal
1. From flake texture to screen pixel
Each row is one stage a sparkle has to survive, in draw order.
| Stage | What it does to a flake | Grade and evidence |
|---|---|---|
| UV mapping | The plate uses head UV0: U 0.273–0.727, V 0.676–0.821 as stored (authored glTF v = 1 − V), covering 4 % of the atlas. Along the surface, one unit of UV is about 569 mm (U) and 405 mm (V) (area-weighted medians over the plate), so a 1024 atlas gives 0.56 × 0.40 mm texels. The vanilla eye-makeup mesh has its own layout (66 mm per UV unit; both eyes overlap in UV), giving 0.065 mm texels at 1024. | resource built-in plate and winterkissed_ (vanilla eye-makeup geometry, byte for byte per experiment 017); experiment 018 |
| Decal UV transform | mesh_ computes t = UVScale·(u − 0.5) + 0.5 + UVOffset (with UVRotation) for every texture it samples, from the UV as stored (the vertex program passes it through), then wraps with sign(t)·frac(|t|). A window mapping only the plate's UV rectangle to [0,1] is two constants per axis; the flat and faceted export routes use one. | source decompiled 16098255505177109230, vertex 11128168794837425370; experiment 019 |
| Texture format | XBMs may be non-square; the game ships 2048×1024 brow textures. | resource ark_ |
| Sampler | One sampler s0: TA_, TFMin_, TFMag_, TFMip_ (template samplerStates[2]). Every decal texture is read with Sample (hardware LOD from derivatives); the program has no SampleBias, SampleGrad or SampleLevel. Any LOD bias, for example the negative bias upscalers usually want, can therefore come only from the engine's sampler descriptor. The test setup's saved settings use anisotropy 16. | resource mesh_; source decompiled program; whether the engine applies an upscaler mip bias is hypothesis |
| Mip chain | This is the only filter we control. The faceted route's plain BOX average shortens the averaged flake normals; in NormalsBlendingMode 1 the shorter normals are gated out by saturate(50 − 50z). | source; Shimmer design |
| Decal program | Writes one normal (mode 1: reoriented onto the skin normal; mode 0: plate normal plus map), with alpha NormalAlpha × (NormalAlphaTex.R or diffuse alpha) × gate. Roughness and metalness are R×scale+bias at alpha RoughnessMetalnessAlpha×coverage². Nothing derives roughness from normal variance: no Toksvig and no specular antialiasing. The skin writer has none either (its only SampleGrad is the micro-detail atlas). | source 16098255505177109230, skin 12806642364631437234 |
| Deferred light | Skin pixels get two GGX lobes at the written roughness × 0.966 and × 1.597 (default skin profile). F0 = lerp(0.04, albedo, metalness); roughness is clamped to ≥ 0.04; specular is clamped at 100. A flake at roughness 0.22 has lobe widths α ≈ 0.045 and 0.12, so its highlight sits within about 4–5° of mirror geometry. | source …_, materials and shaders §2.3 |
| SSS combine | Blurs diffuse only and adds specular unchanged. Flake texels with metalness above 0.1 skip SSS entirely, which suits flakes. | source 7703933925853799832 |
| Reflections | Environment reflections come from separate passes. With ray tracing on, the NRD denoisers (REBLUR/RELAX temporal accumulation, present in the static cache) filter them, so crisp glints come from analytic lights (sun, photo-mode lights), not from the environment. | source for the programs' presence; effect on flakes hypothesis |
| Temporal AA | m_ (static 525406595650312948) PQ-encodes the colour (SMPTE ST 2084 constants), clamps the Catmull-Rom history to mean ± 1σ of the 5-tap cross neighbourhood, blends 5 % current / 95 % history, and decodes. A stable glint of value g with dark neighbours settles at 0.05g + 0.95·0.6g ≈ 0.62g of its PQ code. For a 1×2 glint the figure is ≈ 0.9g, and a 2×2 glint keeps all of it. That the main anti-aliasing (the m_ names carry no attributed program in our index) behaves the same way is hypothesis. | source decompiled; experiment 018 |
| Upscalers | The game ships DLSS (including Ray Reconstruction and frame generation), FSR3 and XeSS as closed DLLs. The engine's FSR2/XeSS reactivity masks are max(two engine inputs) plus a stencil category (low 5 bits = 18); the DLSS colour-bias mask is a binary copy of one engine input. Decals write with stencil disabled, so makeup cannot mark itself reactive. The test setup runs DLSS "Auto" (Transformer model) at 3840×1600, with ray-traced lighting and reflections on and path tracing off. | resource bin/; source 881371692195232951, 15039989337359667650, 7261057323686950841; upscaler behaviour on glints hypothesis |
| Variable-rate shading | Every template declares shadingRateMode: 364 use MSRM_, 8 disable variable-rate shading (holograms, cloaks, decal.remt) and one forces 2×2. mesh_ is Default, so if the engine's variable-rate shading is active it may shade the decal coarsely. | resource 373 templates; engine policy hypothesis |
Consequences for any glitter design:
- Flakes must be at least 2 texels wide at every mip level and at least 2 internal pixels on screen. Flakes smaller than that can only become sheen.
- Only the mip chain and per-texel values are ours to shape. There is no per-pixel flake distribution, no second lobe and no specular antialiasing to lean on.
- Glints come from analytic lights. Photo-mode lights and the sun make them; environment-only lighting mostly will not.
2. Candidate mechanisms
| Mechanism | What the compiled programs say | Light- and view-dependent? | Verdict |
|---|---|---|---|
Resolved flakes in mesh_: flake normals plus a flake mask, and per-flake roughness, metalness and colour | Covered in §1. Per-texel normal, roughness, metalness and colour; separate normal mask; mode 1 composes with skin; one sampler, implicit LOD. | Yes, where flakes cover at least 2 pixels | Primary (§3) |
| The retired Shimmer facet bake pushed further (fewer cells, more tilt) | The same program. The facets were UV-cell discs: about 1.2–1.7 mm wide at the default 128 cells, 2.5–3.5 mm for 017's Shimmer · strong, and about 5.6 mm for Board 2's coarse "glitter proxy", with per-facet metalness. Tilts were at most 15° or 23°, partly gated below 11.5°. | Yes, but as millimetre-scale patches | Sequins or hammered metal, not glitter; in game a static grid of dots. Shimmer now uses a one-texel grain instead (experiment 030) |
mesh_, and the flipbook built into plain mesh_ | Samples ordinary maps at flipbook UVs driven by GlobalShaderConsts[0].x (time). The highlights pass writes constants. | Only through normal maps; animation is time-driven | Rejected: time flicker is not glitter (audit) |
mesh_ | Masks and constants only; no normal, light or view input. There is no UV transform either, so its mask uses the head-UV atlas. | No | Fallback accent (§4), labelled stylised |
mesh_ | Its target 2 is additive into GBuffer2 B/A. Over skin that would add into the skin-profile and emissive bits. | No | Avoid on skin |
mesh_ Fresnel | Its Fresnel term uses the normal-mapped normal. Per-flake normals would therefore brighten individual flakes by view angle, but only in albedo (diffusely lit, at most white) and with one shift colour per draw. | View only | A possible later "twinkle" variant, not glitter |
| Multilayered / clear coat | Opaque and depth-writing; replaces the surface and skin's lighting class. The runtime surface cache resolves one surface. | — | Rejected (assessment) |
metal_ | Noise- and time-driven emission in an opaque, depth-writing pass | No | Rejected (investigation) |
| Vanilla search | None of the 373 templates has a glint, sparkle, flake or sequin parameter. The "glitter" resources are an FX flipbook texture, a quest inhaler's multilayer flake microblend and car-paint setups. | — | No vanilla glint material exists resource |
| The car-paint metallic flake layer | Vehicle bodies use vehicle_: an opaque, depth-writing multilayered surface (Standard class), plus a forward coat pass that blends over its own base pass (CoatTintFwd/, CoatSpecularColor, CoatLayerMin/) resource. The flakes are the layer template car_, whose only flake data is a 512² BC5 normal car_, tiled (×15 × 4 on the Chevalier Thrax) at normal strength 0.66. That map is one-texel white noise (neighbour correlation 0.1) tilted 6.4° median, 8.9° at the 90th percentile, none above 11.5°, and its BOX mips halve the tilt per level [offline] (experiment 032 §5) | Only as micro-sparkle, and only because the opaque surface writes its normal without a fade | Rejected for the plate: it replaces the skin (no soft coverage, SSS or skin lobes), and inside mesh_ its tilts would all fade out. Its pattern, dense small-tilt noise, is Shimmer's, not Glitter's |
| Community: Winterkissed (Limerence × AllieKat) | Six looks, all mesh_ in mode 0. They use 4096² diffuse/normal/roughness/metalness maps on the vanilla eye-makeup UVs (≈ 0.016 mm per texel) and a full 13-level chain (how it was made is not recorded). In the three looks measured, normals are embossed outlines of stars, circles and hexagons: tilted rims around flat interiors. Metalness is ≈ 1 and roughness 0–0.25 over the covered area. NormalAlpha 10, RoughnessMetalnessAlpha 10 and UseNormalAlphaTex 10 over-drive the alphas so they saturate. The normal mask points at a separate noise-band texture that overlaps only part of the coverage (full normal weight on about 1–3 % of covered texels). | Yes, as a metallic foil with glinting outlines | Evidence that the community ships glitter through the same template. Its outline normals give rings, not flat flakes, the pattern our reference review rejected. A useful in-game reference |
The Winterkissed figures come from its installed 1.1.0 archive (experiment 018); what it looks like in game is not recorded here.
3. Primary route: resolved glint flakes (mesh_decal , plate-local window)
One draw per preset on the lifted plate, as today, with a new material entry (the UV constants are per material). The recipe below is the board's Glitter A default.
| Part | Specification | Grade |
|---|---|---|
| Template | base\, MeshSkinned post_ | source |
| UV window | The production window Build derives from the plate: its stored UV0 bounds widened by 1/64 of the span per side (stored U 0.2659–0.7339, V 0.6739–0.8236 for the built-in plate). UVScaleX 2.136780, UVOffsetX 0.000261, UVScaleY 6.680135, UVOffsetY −1.661879. The negative V offset follows from WolvenKit's bottom-to-top row storage and is checked on every build (experiment 019). The diagnostic Glitter route uses the same constants at 4096×1024, and its decoded maps land in place with the same sign (experiment 021). | source formula; sign [offline]; placement in game hypothesis |
| Texture size | 4096×1024 (0.064 × 0.060 mm per texel), about 8 times the linear density of the 1024 head-UV atlas the routes used before the window. The budget option is 2048×512 (0.13 × 0.12 mm), the size the flat and faceted routes now export. | resource measured |
| Constants | DiffuseAlpha 1, NormalAlpha 1, UseNormalAlphaTex 1, NormalsBlendingMode 1, RoughnessMetalnessAlpha 1, scales 1, biases 0, AlphaMaskContrast 0 | source |
DiffuseTexture | sRGB RGBA (isGamma 1). RGB is the pigment, or the flake colour on flake texels (linear mix by flake coverage). A is √(pigment coverage), with the flat route's coverage-space mip chain. | source |
NormalTexture | Linear RG (TCM_): each flake's tangent x, y, dilated 2 texels beyond its edge so bilinear and trilinear taps never average a flake with flat. Flat (0.5, 0.5) elsewhere. | source sampling; dilation [offline] |
NormalAlphaTex | Linear R: flake coverage, antialiased. This carries each flake's shape; between flakes the skin normal is untouched. | source |
RoughnessTexture | Linear R: flake roughness (0.22) on flakes and pigment roughness (0.50, the calibrated Satin candidate) elsewhere. At coarse levels the background widens toward ((r_f²)² + E[sin²θ])^¼ in proportion to the flake area no longer represented. | source channel; sheen [offline] |
MetalnessTexture | Linear R: flake metalness (0.85) on flakes. Elsewhere 0 plus the unrepresented share × flake metalness. | source |
| Flake statistics | Width: log-normal, median 0.2 mm, σ 0.35 (about 3 texels at level 0). Covered area 15 %. Tilt |N(0, 25°)| truncated at 50°, azimuth uniform. Each flake is a flat hexagon-like facet with one constant normal and no bevel rim. Colour, roughness and metalness are per flake. | Design choice; [offline] |
| Mip strategy: nested flake mips | Level L re-draws each flake at width max(w, 2 texels of L). It keeps the prefix, in a stable per-flake key order, whose enlarged area covers 15 % × 0.7^(L − L*), where L* is the first level that enlarges the median flake. No representative wider than 1.2 mm is drawn (level 4 and beyond at 4096); that energy becomes sheen. Lower keys draw on top at every level, so the flakes kept at a coarse level are the same flakes, at the same places, as at finer levels. | [offline] (results) |
| Per-flake variation encoding | Orientation goes in normal RG, shape in NormalAlphaTex, colour in diffuse RGB, highlight sharpness in roughness R, and reflectance in metalness R (F0 = lerp(0.04, colour, m)). Identity is the catalogue key that orders nesting. | source |
| Memory | Five maps at 4096×1024, block-compressed, with mips: about 19 MiB per glitter preset. Winterkissed uses five 4096² maps per look, about 100 MiB, over five times as much. | Estimate |
Offline result [offline]: the share of lid pixels that sparkle for a given light (more than 20 times the plain pigment's own highlight peak), averaged over 60 light directions, after the temporal clamp. Each level is measured at the framing where one texel is about one pixel.
| Mip level (texel) | Nested chain | Plain BOX of the same base | Today's faceted rule |
|---|---|---|---|
| 0 (0.06 mm) | 0.78 % | 0.78 % | 0.78 % |
| 1 (0.12 mm) | 0.59 % | 0.50 % | 0.50 % |
| 2 (0.25 mm), about face framing | 0.41 % | 0.13 % | 0.13 % |
| 3 (0.50 mm) | 0.28 % | 0.009 % | 0.008 % |
The 1024 head-UV atlas that the flat and faceted routes used before the window has level-3-sized texels at its base. Shimmer's retired facets were millimetres wide because of their authored cell size, not the texture; its grain is now one window texel (Summary).
Screen scale (test setup, assumed DLSS render scale ≈ 0.58):
| Framing | Internal pixels per mm | Expected mip at 4096×1024 | Representative flake |
|---|---|---|---|
| Close-up, eyes fill frame | ≈ 16 | 0 | 0.2 mm ≈ 3 px |
| Face framing | ≈ 3 | ≈ 2.4 | 0.5 mm ≈ 1.5–2 px |
| Gameplay, about 1 m | ≈ 0.7 | ≈ 4.5 | Sheen only |
The framings are estimates. A negative upscaler mip bias would move every row one level finer and shrink the representatives toward 1 pixel.
Glitter flakes 2 (board 2)
After session 6 the route's flake statistics gained optional fields that reproduce the Studio's glint models (glitter-studio-flakes.ts); regions without them draw exactly the recipe above:
| Field | Board 2 (reference: the Studio's Dense fine speckles at full strength) | Why |
|---|---|---|
| Tilt | 14° + |N(0, 16°)|, up to 65° | Every flake above the fade (with room for BC5), and a tail of steep flakes like the Studio's facets |
| Surface | Roughness uniform 0.20–0.34, metalness 0.85–1, per flake | Varied sharpness and reflectance, as the Studio's varied facets give |
| Populations | Small flakes at two texels (0.13 mm); a large share (4 % at 0.29 mm) | The Studio's occasional big flashes. Its finest facets would be one pixel, which the temporal filter dims |
| Density | The model's own count (grid × density × envelope): 27 % cover, about 16 flakes per mm² | "As authored" |
| Clustering | A value-noise envelope on the Studio's 18-cell lattice (3.8 mm), floor 0.48 | Dense and sparse areas |
| Base | Roughness 0.55, metalness 0 (the Studio's glint base; its clear coat has no G-buffer lobe) | Layering over the pigment |
Offline, with the base recipe's sizes kept, the floor takes the share of flakes that peak with the skin's own highlight from 32 % to 1 %, and caps the flakes lit by any one light at 21 % (board 1: 43 %). Twinkle rises by half [offline] (experiment 033). The reference model's two-texel flakes resolve at a macro framing (about one texel per pixel) but give way to sheen by 0.1 mm per pixel, the two-pixel rule at work.
4. Fallback: the primary maps plus an emissive sparkle accent
This covers the case where glints of analytic lights prove too rare, or are suppressed by DLSS at face framing. A second plate render chunk carries the accent, using the multi-chunk mechanism already built for experiment 017. Its material is base\:
| Part | Specification | Grade |
|---|---|---|
EmissiveMask | R holds the accent flakes: the lowest-key 8 % of the same catalogue, drawn at least 2 texels wide in a head-UV 2048 atlas (≈ 0.28 × 0.20 mm texels; the template has no UV transform), with nested mips | resource parameters; source sampling |
| Other parameters | EmissiveMaskChannel (1, 0, 0, 0), EmissiveColor = flake colour, AlphaThreshold 0; leave SecondaryMask at its default white. EmissiveEV must be above 0: this program writes EmissiveEV × EmissiveColor as a plain product, not 2^EV, so 0 is black. Experiment 021 uses 1, which writes the flake colour itself: the brightest value that keeps every channel in the colour's 0–1 range, so it should be visible without an over-range glow; the knob and the verifier refuse 0 or below | source (decal reference §5.4) |
| Behaviour | Constant glow, independent of light and view. It is sparse, so it reads as always-lit points. Its opacity is MaterialModifiersConsts[2].x × mask, a per-draw engine modifier: if the engine leaves it at 0 on a CCXL head component, the accent draws nothing at any EmissiveEV. The visible result of the subsurface_ stage over skin, and whether it blooms, are unknown. | source; modifier value and look hypothesis |
Label it in the Studio as a stylised sparkle, never as reflective glitter. The primary maps stay in the preset, so real glints still appear where lights allow.
5. What the Studio preview must match
A game-matched Glitter model (like Shimmer's, recipe optics) has to:
- Upload the export's own textures: the window maps with their exact nested mip chains, bound through the same UV transform. Do not use Three's automatic mips. Sample trilinear and anisotropic.
- Compose one normal per pixel the way the decal does: RNM onto the skin normal, alpha = mask × saturate(50 − 50z), and a lerp in the encoded normal. Roughness, metalness and colour blend at coverage², with colour in square-root space.
- Light it like the game: Burley diffuse plus the skin class's two GGX lobes (×0.966 and ×1.597, summed), F0 = lerp(0.04, albedo, metalness), roughness ≥ 0.04.
- Not evaluate glints per fragment. The browser direct-light, clustered and fine-speckle models (recipes 8–10) compute sub-pixel glints the game cannot draw; they stay preview-only studies.
- State the known gap. The browser has no temporal clamp, so one-pixel sparkles look stronger in the preview than in game. The maps avoid sub-2-texel flakes by construction, which keeps the gap small at the level being sampled.
The recipe fields should be physical, and each maps one-to-one onto the catalogue: flake colour, width (mm), covered area (%), tilt spread, sharpness (roughness) and reflectance (metalness).
6. What the next sessions should show
- Shimmer · strong, sessions 3 and 4 (28 September). The facet bake showed a static, regular grid of oversized dots and no flash runtime, as predicted from its 2.5–3.5 mm discs; experiment 030 traced the static part to per-facet metalness and the grid to the UV-cell lattice.
- Session 6 (29 September). Shimmer's sparse grain over one glossy surface read as glossy vinyl runtime. The forecast's explanation [offline]: a lone one-texel grain in a smooth neighbourhood is what the temporal clamp removes, which leaves the uniform gloss. shimmer-grain-2 puts glossy pearl specks on 86 % of texels over a satin base. After the clamp its speckle is more than twice grain-1's, and at face framing it is a soft sheen no brighter than Satin's (Shimmer design).
- Glitter board 1 (session 6) looked printed runtime (above). Board 2 (experiment 021) holds the reference model, board 1 against flakes-2 normals at the same sizes, the Studio's direct and clustered models, nested against BOX mips, and the accent. It is the finishes row of the session-7 checks: showroom close-ups under the creator rig, then judging by hand with movable lights.
Open questions
- Which program is the main anti-aliasing when no upscaler runs? Does it clamp like
m_?simpleTemporal - Does the engine apply a negative texture LOD bias when an upscaler is active, and how large?
- How do DLSS (the Transformer model), FSR3, XeSS and Ray Reconstruction treat stable 2–3 pixel glints and moving ones?
- Does variable-rate shading, if enabled, coarsen
mesh_pixels on the face?decal - What roughness shift do photo-mode lights apply per light (the per-light roughness byte)?
- Do metal flakes' environment reflections survive the RT reflection denoisers at all?
- At what brightness do glints start to bloom?
- What does
mesh_look like over skin, and does it bloom? Does the engine set its opacity modifier (decal_ emissive_ subsurface MaterialModifiersConsts[2].x) on a CCXL head component at all? - Does a lower Texture Quality setting drop the top mip of mod textures? The nested chain is designed so every level stands alone.
- What precision do GBuffer1 (normal) and GBuffer2 have? This affects small tilts only.
Related: materials and shaders · Glitter design · Shimmer design · glitter backlog · experiment 018 · experiment 009 · glint feasibility · filtering research. Community sources are acknowledged in the community credits.