:Release Notes: - Agents files for opencode and claude - Skills for opencode and claude - 3d models with medical organs - Some textures :Detailed Notes: - :Testing Performed: - :QA Notes: - Looks like shit :) :Issues Addressed: TG-1
9.1 KiB
name, description
| name | description |
|---|---|
| pbr-materials-tissue | Author and tune PBR materials for the LaparoscopicSurgeryEmulation scene, focused on tissue / mucosa / cavity-wall / instrument surfaces. Use when creating, editing, or duplicating materials under Assets/Materials/LaparoscopicBenchmark/ or assigning them to renderers in the SurgeryBenchmark/ authored roots. |
PBR Materials for Tissue (project-scoped)
This skill constrains material work in this project to a small, deliberate set of tissue-like PBR patterns. The available material inventory is fixed (see below); the goal is to tune them, not multiply them.
When to load
Load when the agent is about to:
- Create, edit, duplicate, or assign any
.matunderAssets/Materials/LaparoscopicBenchmark/orAssets/Materials/. - Adjust shader properties on the URP/Lit, URP/SimpleLit, or the project's custom shaders (
Assets/Shaders/RenderDepth.shader,Assets/Shaders/BlendShader.compute— the latter is a compute shader, not a material). - Assign materials to renderers inside the
SurgeryBenchmark/Shared/*Slotanchors or any scenario root. - Diagnose "plastic-looking tissue", "mucosa too dry", "specular too harsh", or "normal map stretched" reports.
Material inventory (do not duplicate blindly)
| Material | Purpose | Tunable axes |
|---|---|---|
CavityWall.mat |
The moist wall of the cavity | roughness, normal scale, subsurface tint, specular tint |
Tissue_Default.mat |
The "clean" tissue reference | roughness, normal scale, albedo tint, AO |
Tissue_Wet.mat |
Wet specular variant for Scenario_02 | higher specular tint, lower roughness, slight clearcoat if URP/Lit |
Tissue_LowTexture.mat |
Low-texture variant for Scenario_03 | uniform albedo, minimal normal, low contrast |
InstrumentProxy.mat |
The instrument placeholder | metalness 1.0, low roughness, neutral albedo |
Scenario roots should reference one of these materials — do not create per-scenario material instances unless the change is bounded and reported. If a new variant is needed, add it to LaparoscopicBenchmark/ with a name that ends in the scenario tag, e.g., Tissue_Wet_S04.mat.
Available textures
Assets/Textures/LaparoscopicBenchmark/TissueMucosa.png— the canonical mucosa PBR base map. Verify its import settings before assigning:- Texture Type: Default (or Albedo if no separate normal/roughness is bundled).
- sRGB: on (it is colour data).
- Alpha Source: None (unless a specific transparency case is approved).
- Max Size: 1024 (or 2048 for hero work; do not exceed 2048 without a performance budget review).
- Compression: High-quality BC7 / ASTC. Avoid DXT5 with alpha for opaque mucosa.
Assets/Models/FabOrgans/StylizedDigestiveSystem_{Diffuse,Normal,Roughness}.png— the stylized organ set; usable for theAnatomySlotplaceholder if needed.Assets/Models/organs/textures/andAssets/Models/organs/archive.fbm/— packed witharchive.fbx. Do not move files out ofAssets/Models/organs/— the FBX references them by relative path.
URP/Lit PBR cheat sheet (defaults for tissue)
- Shader:
Universal Render Pipeline/Lit(orUniversal Render Pipeline/Simple Litonly as a performance fallback — never as the default for tissue). - Surface Type: Opaque. Use Transparent only with explicit approval, and never for mucosa.
- Workflow: Metallic (this project is metallic workflow).
- Render Face: Front (tissue is single-sided).
- Double Sided: off by default; enable only on the cavity wall if it is a thin sheet viewed from inside.
| Property | Tissue_Default | Tissue_Wet | Tissue_LowTexture | CavityWall | InstrumentProxy |
|---|---|---|---|---|---|
| Base color | warm pink-red #B66A6A ish |
warm pink-red | uniform pink-red | deep red #7A2A2A ish |
neutral metal #C8C8C8 |
| Metallic | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| Smoothness | 0.35 | 0.55 | 0.20 | 0.40 | 0.85 |
| Normal Map | TissueMucosa normal (or the FabOrgans normal) |
same | none / flat | cavity bump from TissueMucosa normal at low scale |
none / flat |
| Normal Scale | 0.5–1.0 | 0.5–1.0 | n/a | 0.3–0.7 | n/a |
| Occlusion | AO from texture (or 1.0 flat) | 1.0 | 1.0 | AO from texture | 1.0 |
| Emission | off | off | off | off | off |
| Specular (workflow override) | leave default | leave default | leave default | leave default | n/a (metallic) |
Treat the colour values as starting points to be confirmed by screenshot, not as final. The cavity is small and HDR-lit; hex picks rarely match what the eye sees.
Subsurface / translucency
URP/Lit does not have a first-class subsurface-scattering slot in 14.0.11. To get a mucosal feel:
- Keep
Smoothnesslow enough (≤ 0.4) that the BRDF does not look like enamel. - Drive the cavity / tissue color slightly redder than the reference photo; URP tone-mapping pulls warmth out.
- If translucency is required for backlit tissue (e.g., a thin membrane), use a
TranslucentLit shader if the project has one, or a custom URP shader. Adding a new shader is a bounded change — state it in the handoff before writing the.shaderfile.
Roughness and specular realism
- Wet tissue in a laparoscope:
Smoothness0.5–0.6,Normal Scale0.3–0.6, noClearcoat. - Dry / low-texture:
Smoothness0.15–0.25, no normal. - Instrument proxy (steel):
Metallic1.0,Smoothness0.7–0.9, slightly tinted toward warm grey to avoid chrome-looking plastic.
The "plastic" failure mode is almost always:
Smoothnesstoo high (> 0.7) on tissue, or- Normal map stretched because UV scale does not match the mesh, or
Specularworkflow left in default Metallic workflow but the colour was hand-tweaked to look right in the editor, breaking under tone-mapping.
UV scale and stretching
When a tissue-like material is applied to a primitive (Cube, Sphere, Cylinder, Quad), the default UVs produce obvious stretching. Mitigations:
- Use the same material on a mesh that has clean UVs (the FabOrgans or archive FBX meshes).
- For primitives, scale the UVs in the import settings of the mesh (read-only) or place a small tiling texture and adjust the material's
Tiling(.x,.y) instead of stretching the UVs. - A stretching texture is a visible failure, not a stylistic choice — fix it before reporting done.
Common operations and the right MCP call
| Intent | MCP call | Notes |
|---|---|---|
| Read current material | manage_material(action="get_material_info", material_path="Assets/Materials/LaparoscopicBenchmark/Tissue_Default.mat") |
Always re-read before editing |
| Set a single property | manage_material(action="set_material_shader_property", material_path="...", property="_Smoothness", value=0.4) |
Property name is the shader's serialized name; for URP/Lit use _Smoothness, _BaseColor, _BumpScale, _Metallic |
| Set a colour | manage_material(action="set_material_color", material_path="...", property="_BaseColor", color=[0.71, 0.42, 0.42, 1.0]) |
Linear vs gamma: URP expects linear when colour space is Linear; pass sRGB-ish values and let the conversion happen if the project is Linear |
| Create a new variant | manage_material(action="create", material_path="Assets/Materials/LaparoscopicBenchmark/Tissue_Wet_S04.mat", shader="Universal Render Pipeline/Lit") |
Then set properties; do not assign to a renderer until verified |
| Assign to a renderer | manage_material(action="assign_material_to_renderer", material_path="...", target="Tissue_S04_00", search_method="by_name", slot=0) |
Always re-read after assigning |
| Tint a renderer in-scene without changing the asset | manage_material(action="set_renderer_color", target="...", color=[...], mode="property_block") |
Property block is reversible and does not duplicate the asset |
Reversibility checklist
- Did you read the material's current state before editing? If no, do that first.
- Did you change the shared asset (
Tissue_Default.matetc.) rather than create a per-instance override? Document the choice in the handoff. - Will any scenario that currently uses this material be affected? If yes, list the affected scenarios in the handoff.
- Is the change expressed as a single property tweak, or a coordinated multi-property tweak? Coordinated is fine, but state the target look in one sentence.
- After the change, does the screenshot show a believable tissue surface, or does it look like plastic / wax / enamel? If plastic, lower
Smoothnessfirst; do not increase emission.
Anti-patterns to refuse
- Creating per-scenario
.matfiles for every minor variation — tune the existing five. - Setting
Metallic > 0on tissue or cavity wall. Tissue is not metal. - Setting
Emission > 0on tissue. If a region "needs to glow", it is probably a lighting problem, not a material problem. - Using
Standardshader (Built-in pipeline) on URP — pink materials are a URP/Built-in mismatch symptom. - Stretching UVs by scaling the GameObject instead of adjusting material tiling.
- Generating textures procedurally inside the project (no procedural assets without approval).
- Renaming any of the existing
Tissue_*.mat,CavityWall.mat,InstrumentProxy.mat— the names are part of the contract referenced byLaparoscopicSurgeryEmulation.md.