# Assistant conversation 2LTMAX

- Canonical URL: <https://m.sheaf.less.rest/2LTMAX>
- Resource IRI: <https://m.sheaf.less.rest/2LTMAX>
- Type: assistant conversation
- Mode: chat

## Transcript

### 1. User

Import the attached PDF documents.

[Uploaded PDFs]
- deussen-1998-plant-ecosystems.pdf: Sheaf file #GTASE3
- wyman-2019-improved-alpha-testing.pdf: Sheaf file #KW5XQN
- jahrmann-2017-responsive-grass.pdf: Sheaf file #W7WEHC
- sanders-2018-horizon-vegetation.pdf: Sheaf file #MJUD2K
- bruneton-2012-forest-rendering-lighting.pdf: Sheaf file #SFBXH6
- wohllaib-2021-ghost-grass.pdf: Sheaf file #B4HTKS
- kuth-2025-gpu-tree-generation.pdf: Sheaf file #54QVNU

### 2. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "stage",
  "file_ids": [
    "GTASE3",
    "KW5XQN",
    "W7WEHC",
    "MJUD2K",
    "SFBXH6",
    "B4HTKS",
    "54QVNU"
  ],
  "name": "Import seven uploaded vegetation and rendering PDFs"
}
```

### 3. Tool result: document_import

{
  "status": {
    "counts": {
      "pending": 7
    },
    "files": [
      {
        "error": null,
        "status": "pending",
        "file_id": "54QVNU",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "B4HTKS",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "GTASE3",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "KW5XQN",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "MJUD2K",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "SFBXH6",
        "execution_id": null
      },
      {
        "error": null,
        "status": "pending",
        "file_id": "W7WEHC",
        "execution_id": null
      }
    ]
  },
  "sources": [],
  "action": "stage",
  "run_id": "A7DTK3",
  "file_ids": [
    "GTASE3",
    "KW5XQN",
    "W7WEHC",
    "MJUD2K",
    "SFBXH6",
    "B4HTKS",
    "54QVNU"
  ],
  "run_iri": "https://m.sheaf.less.rest/A7DTK3"
}

### 4. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "extract",
  "run_id": "A7DTK3"
}
```

### 5. Tool result: document_import

{
  "status": {
    "counts": {
      "completed": 7
    },
    "files": [
      {
        "error": null,
        "status": "completed",
        "file_id": "54QVNU",
        "execution_id": "pex_5TwU7lPQfdLo"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "B4HTKS",
        "execution_id": "pex_UFTtnsJATJBL"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "GTASE3",
        "execution_id": "pex_k0qOje-LcGEa"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "KW5XQN",
        "execution_id": "pex_0gm28XjKRxEa"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "MJUD2K",
        "execution_id": "pex_5ZCzmUi8j2vQ"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "SFBXH6",
        "execution_id": "pex_3xfAa58BdH3-"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "W7WEHC",
        "execution_id": "pex_VnTGonjf4Bt6"
      }
    ]
  },
  "action": "extract",
  "completed": 7,
  "run_id": "A7DTK3",
  "submitted": 7
}

### 6. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "inspect",
  "run_id": "A7DTK3"
}
```

### 7. Tool result: document_import

{
  "status": {
    "counts": {
      "completed": 7
    },
    "files": [
      {
        "error": null,
        "status": "completed",
        "file_id": "54QVNU",
        "execution_id": "pex_5TwU7lPQfdLo"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "B4HTKS",
        "execution_id": "pex_UFTtnsJATJBL"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "GTASE3",
        "execution_id": "pex_k0qOje-LcGEa"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "KW5XQN",
        "execution_id": "pex_0gm28XjKRxEa"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "MJUD2K",
        "execution_id": "pex_5ZCzmUi8j2vQ"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "SFBXH6",
        "execution_id": "pex_3xfAa58BdH3-"
      },
      {
        "error": null,
        "status": "completed",
        "file_id": "W7WEHC",
        "execution_id": "pex_VnTGonjf4Bt6"
      }
    ]
  },
  "action": "inspect",
  "run_id": "A7DTK3",
  "files": [
    {
      "status": "completed",
      "file_id": "54QVNU",
      "quality": {
        "blocks": 152,
        "pages": 10,
        "math_expressions": 56,
        "equation_blocks": 3,
        "pages_with_math": 6,
        "empty_equation_blocks": 0,
        "page_continuations": 4,
        "block_types": {
          "Caption": 15,
          "Equation": 3,
          "Figure": 5,
          "ListGroup": 4,
          "PageFooter": 14,
          "PageHeader": 19,
          "Picture": 10,
          "SectionHeader": 21,
          "Table": 2,
          "Text": 59
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/54QVNU.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "B4HTKS",
      "quality": {
        "blocks": 125,
        "pages": 55,
        "math_expressions": 0,
        "equation_blocks": 0,
        "pages_with_math": 0,
        "empty_equation_blocks": 0,
        "page_continuations": 0,
        "block_types": {
          "Figure": 4,
          "ListGroup": 6,
          "PageHeader": 37,
          "Picture": 52,
          "SectionHeader": 6,
          "Text": 20
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/B4HTKS.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "GTASE3",
      "quality": {
        "blocks": 165,
        "pages": 12,
        "math_expressions": 7,
        "equation_blocks": 0,
        "pages_with_math": 4,
        "empty_equation_blocks": 0,
        "page_continuations": 2,
        "block_types": {
          "Caption": 19,
          "Figure": 4,
          "Footnote": 1,
          "ListGroup": 2,
          "Picture": 13,
          "SectionHeader": 15,
          "Table": 2,
          "Text": 109
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/GTASE3.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "KW5XQN",
      "quality": {
        "blocks": 267,
        "pages": 12,
        "math_expressions": 180,
        "equation_blocks": 10,
        "pages_with_math": 11,
        "empty_equation_blocks": 0,
        "page_continuations": 4,
        "block_types": {
          "Caption": 19,
          "Equation": 10,
          "ListGroup": 5,
          "PageHeader": 24,
          "Picture": 18,
          "SectionHeader": 32,
          "Table": 1,
          "Text": 158
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/KW5XQN.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "MJUD2K",
      "quality": {
        "blocks": 453,
        "pages": 87,
        "math_expressions": 5,
        "equation_blocks": 0,
        "pages_with_math": 3,
        "empty_equation_blocks": 0,
        "page_continuations": 0,
        "block_types": {
          "Caption": 13,
          "Figure": 5,
          "ListGroup": 60,
          "PageFooter": 59,
          "PageHeader": 1,
          "Picture": 117,
          "SectionHeader": 89,
          "Table": 2,
          "Text": 107
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/MJUD2K.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "SFBXH6",
      "quality": {
        "blocks": 183,
        "pages": 11,
        "math_expressions": 366,
        "equation_blocks": 27,
        "pages_with_math": 8,
        "empty_equation_blocks": 0,
        "page_continuations": 3,
        "block_types": {
          "Caption": 10,
          "Equation": 27,
          "Figure": 3,
          "ListGroup": 8,
          "PageFooter": 18,
          "PageHeader": 11,
          "Picture": 8,
          "SectionHeader": 16,
          "Table": 1,
          "Text": 81
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/SFBXH6.datalab.json"
    },
    {
      "status": "completed",
      "file_id": "W7WEHC",
      "quality": {
        "blocks": 174,
        "pages": 10,
        "math_expressions": 195,
        "equation_blocks": 24,
        "pages_with_math": 6,
        "empty_equation_blocks": 0,
        "page_continuations": 3,
        "block_types": {
          "Caption": 21,
          "Equation": 24,
          "Figure": 1,
          "Footnote": 4,
          "ListGroup": 2,
          "Picture": 16,
          "SectionHeader": 20,
          "Table": 4,
          "Text": 82
        }
      },
      "output_path": "/home/mbrock/sheaf.mikael/var/datalab/A7DTK3/W7WEHC.datalab.json"
    }
  ]
}

### 8. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "import",
  "run_id": "A7DTK3"
}
```

### 9. Tool result: document_import

{
  "next": "Resolve metadata, rebuild indexes, and validate reader pages.",
  "action": "import",
  "documents": [
    {
      "status": "imported",
      "title": null,
      "file_id": "54QVNU",
      "document_id": "EDURTK",
      "document_iri": "https://m.sheaf.less.rest/EDURTK"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "B4HTKS",
      "document_id": "66Q3W3",
      "document_iri": "https://m.sheaf.less.rest/66Q3W3"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "GTASE3",
      "document_id": "GBXEP3",
      "document_iri": "https://m.sheaf.less.rest/GBXEP3"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "KW5XQN",
      "document_id": "QHMFH2",
      "document_iri": "https://m.sheaf.less.rest/QHMFH2"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "MJUD2K",
      "document_id": "ABD2B8",
      "document_iri": "https://m.sheaf.less.rest/ABD2B8"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "SFBXH6",
      "document_id": "BDBBL6",
      "document_iri": "https://m.sheaf.less.rest/BDBBL6"
    },
    {
      "status": "imported",
      "title": null,
      "file_id": "W7WEHC",
      "document_id": "PQ68ZH",
      "document_iri": "https://m.sheaf.less.rest/PQ68ZH"
    }
  ],
  "run_id": "A7DTK3"
}

### 10. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "metadata",
  "run_id": "A7DTK3"
}
```

### 11. Tool result: document_import

{
  "action": "metadata",
  "documents": [
    {
      "match": {
        "reason": "no DOI or ISBN found",
        "source": "none",
        "score": 0.0,
        "accept?": false
      },
      "metadata": {
        "title": "Real-Time GPU Tree Generation",
        "usage": {
          "cost": {
            "total": 7.1e-4,
            "tokens": 7.1e-4,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 4.44e-4,
            "output_cost": 2.66e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 1777,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 4.44e-4,
                "quantity": 1777
              },
              {
                "count": 177,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 2.66e-4,
                "quantity": 177
              }
            ]
          },
          "output_tokens": 177,
          "input_tokens": 1777,
          "total_cost": 7.1e-4,
          "reasoning_tokens": 0,
          "input_cost": 4.44e-4,
          "output_cost": 2.66e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 1954,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": "2025",
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "Pages 2 of 11 and 3 of 11 confirm the paper has 11 pages in total.",
        "issue": null,
        "pages": "1-11",
        "authors": [
          "Bastian Kuth",
          "Max Oberberger",
          "Carsten Faber",
          "Pirmin Pfeifer",
          "Seyedmasih Tabaei",
          "Dominik Baumeister",
          "Quirin Meyer"
        ],
        "doi": null,
        "volume": null,
        "isbn": null,
        "publication": "High-Performance Graphics",
        "confidence": "high",
        "source_filename": "39f63f950a14053c633b9323d4dd792654acabd6a848897e6ce693315ee9adf7.pdf"
      },
      "document_id": "EDURTK",
      "wrote": false
    },
    {
      "match": {
        "reason": "no DOI or ISBN found",
        "source": "none",
        "score": 0.0,
        "accept?": false
      },
      "metadata": {
        "title": "Ghost of Tsushima: Procedural Grass",
        "usage": {
          "cost": {
            "total": 6.28e-4,
            "tokens": 6.28e-4,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 4.4e-4,
            "output_cost": 1.88e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 1762,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 4.4e-4,
                "quantity": 1762
              },
              {
                "count": 125,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 1.88e-4,
                "quantity": 125
              }
            ]
          },
          "output_tokens": 125,
          "input_tokens": 1762,
          "total_cost": 6.28e-4,
          "reasoning_tokens": 0,
          "input_cost": 4.4e-4,
          "output_cost": 1.88e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 1887,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": null,
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "The provided document is a slide deck presentation titled 'Ghost of Tsushima: Procedural Grass' by Sucker Punch Productions, containing no explicit publication metadata such as authors, year, or publication venue.",
        "issue": null,
        "pages": null,
        "authors": [],
        "doi": null,
        "volume": null,
        "isbn": null,
        "publication": "Sucker Punch Productions",
        "confidence": "Low",
        "source_filename": "021357b8a517cfd81a784eb9709ac9fdde207e1d1238adf28d9dba8c871b1a9f.pdf"
      },
      "document_id": "66Q3W3",
      "wrote": false
    },
    {
      "match": {
        "reason": "no DOI or ISBN found",
        "source": "none",
        "score": 0.0,
        "accept?": false
      },
      "metadata": {
        "title": "Realistic modeling and rendering of plant ecosystems",
        "usage": {
          "cost": {
            "total": 6.77e-4,
            "tokens": 6.77e-4,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 4.35e-4,
            "output_cost": 2.42e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 1741,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 4.35e-4,
                "quantity": 1741
              },
              {
                "count": 161,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 2.42e-4,
                "quantity": 161
              }
            ]
          },
          "output_tokens": 161,
          "input_tokens": 1741,
          "total_cost": 6.77e-4,
          "reasoning_tokens": 0,
          "input_cost": 4.35e-4,
          "output_cost": 2.42e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 1902,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": null,
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "The document is a conference paper; however, specific publication venue, volume, issue, and year are not explicitly stated on the provided pages.",
        "issue": null,
        "pages": null,
        "authors": [
          "Oliver Deussen",
          "Pat Hanrahan",
          "Bernd Lintermann",
          "Radomír Mech",
          "Matt Pharr",
          "Przemyslaw Prusinkiewicz"
        ],
        "doi": null,
        "volume": null,
        "isbn": null,
        "publication": null,
        "confidence": "high",
        "source_filename": "52d362e61dd471d965b79508c6552d93f4301b135c80d0eb8dcb41fb2b1438ca.pdf"
      },
      "document_id": "GBXEP3",
      "wrote": false
    },
    {
      "match": {
        "reason": "no DOI or ISBN found",
        "source": "none",
        "score": 0.0,
        "accept?": false
      },
      "metadata": {
        "title": "Improved Alpha Testing Using Hashed Sampling",
        "usage": {
          "cost": {
            "total": 6.27e-4,
            "tokens": 6.27e-4,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 4.35e-4,
            "output_cost": 1.92e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 1741,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 4.35e-4,
                "quantity": 1741
              },
              {
                "count": 128,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 1.92e-4,
                "quantity": 128
              }
            ]
          },
          "output_tokens": 128,
          "input_tokens": 1741,
          "total_cost": 6.27e-4,
          "reasoning_tokens": 0,
          "input_cost": 4.35e-4,
          "output_cost": 1.92e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 1869,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": "2017",
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "The document lists year as XXXX 2017.",
        "issue": "X",
        "pages": "1-3",
        "authors": [
          "Chris Wyman",
          "Morgan McGuire"
        ],
        "doi": null,
        "volume": "XX",
        "isbn": null,
        "publication": "IEEE Transactions on Visualization and Computer Graphics",
        "confidence": "high",
        "source_filename": "12cecefc4eb900e39ebbb47826c31f4d2e7fa86a62b192eba50721b2358f30cb.pdf"
      },
      "document_id": "QHMFH2",
      "wrote": false
    },
    {
      "match": {
        "reason": "no DOI or ISBN found",
        "source": "none",
        "score": 0.0,
        "accept?": false
      },
      "metadata": {
        "title": "The Vegetation of Horizon Zero Dawn",
        "usage": {
          "cost": {
            "total": 6.05e-4,
            "tokens": 6.05e-4,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 4.4e-4,
            "output_cost": 1.65e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 1762,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 4.4e-4,
                "quantity": 1762
              },
              {
                "count": 110,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 1.65e-4,
                "quantity": 110
              }
            ]
          },
          "output_tokens": 110,
          "input_tokens": 1762,
          "total_cost": 6.05e-4,
          "reasoning_tokens": 0,
          "input_cost": 4.4e-4,
          "output_cost": 1.65e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 1872,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": "2018",
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "Presentation slides from GDC 2018",
        "issue": null,
        "pages": null,
        "authors": [
          "Gilbert Sanders"
        ],
        "doi": null,
        "volume": null,
        "isbn": null,
        "publication": "GDC 2018: Between Tech and Art",
        "confidence": "high",
        "source_filename": "df190b40dd4a1f981b6e8dbe292ad23d854333cf0edf7201ff9454283e2eb74d.pdf"
      },
      "document_id": "ABD2B8",
      "wrote": false
    },
    {
      "match": {
        "reason": "title match accepted for Crossref type journal-article",
        "source": "doi",
        "identifier": "10.1111/j.1467-8659.2012.03016.x",
        "score": 1.0,
        "doi": "10.1111/j.1467-8659.2012.03016.x",
        "accept?": true,
        "crossref_title": "Real‐time Realistic Rendering and Lighting of Forests",
        "crossref_type": "journal-article"
      },
      "metadata": {
        "title": "Real-time Realistic Rendering and Lighting of Forests",
        "usage": {
          "cost": {
            "total": 0.001789,
            "tokens": 0.001789,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 0.001537,
            "output_cost": 2.52e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 6147,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 0.001537,
                "quantity": 6147
              },
              {
                "count": 168,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 2.52e-4,
                "quantity": 168
              }
            ]
          },
          "output_tokens": 168,
          "input_tokens": 6147,
          "total_cost": 0.001789,
          "reasoning_tokens": 0,
          "input_cost": 0.001537,
          "output_cost": 2.52e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 6315,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": "2012",
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "Extracted from the citation information provided in the document header.",
        "issue": "2pt1",
        "pages": "373-382",
        "authors": [
          "Eric Bruneton",
          "Fabrice Neyret"
        ],
        "doi": "10.1111/j.1467-8659.2012.03016.x",
        "volume": "31",
        "isbn": null,
        "publication": "Computer Graphics Forum",
        "confidence": "high",
        "source_filename": null
      },
      "document_id": "BDBBL6",
      "wrote": true
    },
    {
      "match": {
        "reason": "title match accepted for Crossref type proceedings-article",
        "source": "doi",
        "identifier": "10.1145/3023368.3023380",
        "score": 1.0,
        "doi": "10.1145/3023368.3023380",
        "accept?": true,
        "crossref_title": "Responsive real-time grass rendering for general 3D scenes",
        "crossref_type": "proceedings-article"
      },
      "metadata": {
        "title": "Responsive Real-Time Grass Rendering for General 3D Scenes",
        "usage": {
          "cost": {
            "total": 0.002291,
            "tokens": 0.002291,
            "tools": 0.0,
            "storage": 0.0,
            "images": 0.0,
            "input_cost": 0.002003,
            "output_cost": 2.88e-4,
            "reasoning_cost": 0.0,
            "line_items": [
              {
                "count": 8011,
                "id": "token.input",
                "kind": "tokens",
                "component": "token.input",
                "cost": 0.002003,
                "quantity": 8011
              },
              {
                "count": 192,
                "id": "token.output",
                "kind": "tokens",
                "component": "token.output",
                "cost": 2.88e-4,
                "quantity": 192
              }
            ]
          },
          "output_tokens": 192,
          "input_tokens": 8011,
          "total_cost": 0.002291,
          "reasoning_tokens": 0,
          "input_cost": 0.002003,
          "output_cost": 2.88e-4,
          "reasoning_cost": 0.0,
          "cached_tokens": 0,
          "total_tokens": 8203,
          "tool_usage": {},
          "image_usage": {},
          "cache_creation_tokens": 0
        },
        "year": "2017",
        "model": "google:gemini-3.1-flash-lite-preview",
        "notes": "The paper was presented at the 2017 Symposium on Interactive 3D Graphics and Games (I3D '17). Page count inferred from citation format.",
        "issue": null,
        "pages": "1-10",
        "authors": [
          "Klemens Jahrmann",
          "Michael Wimmer"
        ],
        "doi": "10.1145/3023368.3023380",
        "volume": null,
        "isbn": "9781450348867",
        "publication": "13D '17",
        "confidence": "high",
        "source_filename": null
      },
      "document_id": "PQ68ZH",
      "wrote": true
    }
  ],
  "run_id": "A7DTK3"
}

### 12. Assistant tool calls

#### Tool call: `web_search`

```json
{
  "query": "\"Real-Time GPU Tree Generation\" Bastian Kuth 2025 High-Performance Graphics bibliographic metadata DOI"
}
```

#### Tool call: `web_search`

```json
{
  "query": "\"Ghost of Tsushima: Procedural Grass\" presentation author year"
}
```

#### Tool call: `web_search`

```json
{
  "query": "\"Realistic modeling and rendering of plant ecosystems\" Deussen Hanrahan 1998 DOI venue"
}
```

#### Tool call: `web_search`

```json
{
  "query": "\"Improved Alpha Testing Using Hashed Sampling\" Wyman McGuire DOI year venue"
}
```

#### Tool call: `web_search`

```json
{
  "query": "\"The Vegetation of Horizon Zero Dawn\" Gilbert Sanders GDC 2018"
}
```

### 13. Tool result: web_search

WEB SEARCH RESULTS
Query: "Real-Time GPU Tree Generation" Bastian Kuth 2025 High-Performance Graphics bibliographic metadata DOI

## Bibliographic metadata

- **Title:** Real-Time GPU Tree Generation  
- **Authors:** Bastian Kuth; Max Oberberger; Carsten Faber; Pirmin Pfeifer; Seyedmasih Tabaei; Dominik Baumeister; Quirin Meyer  
- **Year:** 2025  
- **Conference/proceedings:** *High-Performance Graphics – Symposium Papers*  
- **Editors:** Aaron Knoll; Christoph Peters  
- **Publisher:** The Eurographics Association  
- **Document length:** 10 pages  
- **ISBN:** 978-3-03868-291-2  
- **ISSN:** 2079-8687  
- **DOI:** **10.2312/hpg.20251168** ([diglib.cgv.tugraz.at](https://diglib.cgv.tugraz.at/items/93fc78c0-71fa-4511-8564-a7e5268bf27a/full?utm_source=openai))

### Suggested citation

Kuth, B., Oberberger, M., Faber, C., Pfeifer, P., Tabaei, S., Baumeister, D., and Meyer, Q. (2025). “Real-Time GPU Tree Generation.” In A. Knoll and C. Peters (Eds.), *High-Performance Graphics – Symposium Papers*. The Eurographics Association. DOI: **10.2312/hpg.20251168**. ([diglib.eg.org](https://diglib.eg.org/items/93fc78c0-71fa-4511-8564-a7e5268bf27a))

### BibTeX

```bibtex
@inproceedings{Kuth2025RealTimeGPUTree,
  author    = {Kuth, Bastian and Oberberger, Max and Faber, Carsten
               and Pfeifer, Pirmin and Tabaei, Seyedmasih
               and Baumeister, Dominik and Meyer, Quirin},
  title     = {Real-Time GPU Tree Generation},
  booktitle = {High-Performance Graphics -- Symposium Papers},
  editor    = {Knoll, Aaron and Peters, Christoph},
  year      = {2025},
  publisher = {The Eurographics Association},
  isbn      = {978-3-03868-291-2},
  issn      = {2079-8687},
  doi       = {10.2312/hpg.20251168}
}
```

Cited sources:
- Real-Time GPU Tree Generation: https://diglib.cgv.tugraz.at/items/93fc78c0-71fa-4511-8564-a7e5268bf27a/full?utm_source=openai
- Real-Time GPU Tree Generation: https://diglib.eg.org/items/93fc78c0-71fa-4511-8564-a7e5268bf27a

### 14. Tool result: web_search

WEB SEARCH RESULTS
Query: "Ghost of Tsushima: Procedural Grass" presentation author year

**Author/Presenter:** Eric Wohllaib, Sucker Punch Productions  
**Year:** 2021 — presented at the Game Developers Conference (GDC). ([gdcvault.com](https://gdcvault.com/play/1027033/?utm_source=openai))

Cited sources:
- GDC Vault - Advanced Graphics Summit: Procedural Grass in 'Ghost of Tsushima': https://gdcvault.com/play/1027033/?utm_source=openai

### 15. Tool result: web_search

WEB SEARCH RESULTS
Query: "Realistic modeling and rendering of plant ecosystems" Deussen Hanrahan 1998 DOI venue

- **DOI:** `10.1145/280814.280898`
- **Venue:** **SIGGRAPH ’98 — Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques**
- **Pages:** 275–286
- **Publisher:** ACM
- **Publication date:** July 24, 1998 ([doi.org](https://doi.org/10.1145/280814.280898?utm_source=openai))

**Citation:**

> Deussen, O., Hanrahan, P., Lintermann, B., Měch, R., Pharr, M., & Prusinkiewicz, P. (1998). *Realistic modeling and rendering of plant ecosystems*. Proceedings of SIGGRAPH ’98, 275–286. DOI: `10.1145/280814.280898`.

Cited sources:
- Realistic modeling and rendering of plant ecosystems | Proceedings of the 25th annual conference on Computer graphics and interactive techniques: https://doi.org/10.1145/280814.280898?utm_source=openai

### 16. Tool result: web_search

WEB SEARCH RESULTS
Query: "Improved Alpha Testing Using Hashed Sampling" Wyman McGuire DOI year venue

- **Authors:** Chris Wyman and Morgan McGuire  
- **DOI:** `10.1109/TVCG.2017.2739149`  
- **Year:** **2019** *(published online in 2017)*  
- **Venue:** *IEEE Transactions on Visualization and Computer Graphics* (TVCG), **25**(2), 1309–1320. ([research.nvidia.com](https://research.nvidia.com/labs/rtr/publication/wyman2019improved/?utm_source=openai))

Cited sources:
- Improved Alpha Testing Using Hashed Sampling | NVIDIA Real-Time Graphics Research: https://research.nvidia.com/labs/rtr/publication/wyman2019improved/?utm_source=openai

### 17. Tool result: web_search

WEB SEARCH RESULTS
Query: "The Vegetation of Horizon Zero Dawn" Gilbert Sanders GDC 2018

## GDC 2018 Presentation

**“Between Tech and Art: The Vegetation of *Horizon Zero Dawn*”**  
**Speaker:** Gilbert Sanders, Principal Artist at Guerrilla Games  
**Track:** Visual Arts  
**Length:** Approximately 58 minutes

- **GDC Vault presentation/video:** Available as free content. ([gdcvault.com](https://www.gdcvault.com/play/1025530/?utm_source=openai))  
- **Official presentation slides (PDF):** Covers vegetation simulation, shading, asset creation, shadow casting, LODs, wind systems, alpha testing, and optimization. ([media.gdcvault.com](https://media.gdcvault.com/gdc2018/presentations/gilbert_sanders_between_tech_and.pdf?utm_source=openai))  

The talk explains how Guerrilla created lush vegetation while maintaining *Horizon Zero Dawn’s* performance target, including global wind-force fields, layered tree motion, inexpensive grass animation, coverage-preserving alpha mipmaps, and optimized shadow geometry.

Cited sources:
- GDC Vault - Between Tech and Art: The Vegetation of 'Horizon Zero Dawn': https://www.gdcvault.com/play/1025530/?utm_source=openai
- The Vegetation of Horizon Zero Dawn: https://media.gdcvault.com/gdc2018/presentations/gilbert_sanders_between_tech_and.pdf?utm_source=openai

### 18. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Bastian Kuth",
    "Max Oberberger",
    "Carsten Faber",
    "Pirmin Pfeifer",
    "Seyedmasih Tabaei",
    "Dominik Baumeister",
    "Quirin Meyer"
  ],
  "document_id": "EDURTK",
  "doi": "10.2312/hpg.20251168",
  "kind": "research_paper",
  "title": "Real-Time GPU Tree Generation",
  "venue": "High-Performance Graphics – Symposium Papers",
  "year": "2025"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Eric Wohllaib"
  ],
  "corporate_authors": [
    "Sucker Punch Productions"
  ],
  "document_id": "66Q3W3",
  "kind": "report",
  "title": "Ghost of Tsushima: Procedural Grass",
  "venue": "Game Developers Conference (GDC) 2021",
  "year": "2021"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Oliver Deussen",
    "Pat Hanrahan",
    "Bernd Lintermann",
    "Radomír Měch",
    "Matt Pharr",
    "Przemyslaw Prusinkiewicz"
  ],
  "document_id": "GBXEP3",
  "doi": "10.1145/280814.280898",
  "kind": "research_paper",
  "title": "Realistic Modeling and Rendering of Plant Ecosystems",
  "venue": "Proceedings of SIGGRAPH ’98",
  "year": "1998"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Chris Wyman",
    "Morgan McGuire"
  ],
  "document_id": "QHMFH2",
  "doi": "10.1109/TVCG.2017.2739149",
  "kind": "journal_article",
  "title": "Improved Alpha Testing Using Hashed Sampling",
  "venue": "IEEE Transactions on Visualization and Computer Graphics",
  "year": "2019"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Gilbert Sanders"
  ],
  "corporate_authors": [
    "Guerrilla Games"
  ],
  "document_id": "ABD2B8",
  "kind": "report",
  "title": "Between Tech and Art: The Vegetation of Horizon Zero Dawn",
  "venue": "Game Developers Conference (GDC) 2018",
  "year": "2018"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Eric Bruneton",
    "Fabrice Neyret"
  ],
  "document_id": "BDBBL6",
  "doi": "10.1111/j.1467-8659.2012.03016.x",
  "kind": "journal_article",
  "title": "Real-time Realistic Rendering and Lighting of Forests",
  "venue": "Computer Graphics Forum",
  "year": "2012"
}
```

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Klemens Jahrmann",
    "Michael Wimmer"
  ],
  "document_id": "PQ68ZH",
  "doi": "10.1145/3023368.3023380",
  "kind": "research_paper",
  "title": "Responsive Real-Time Grass Rendering for General 3D Scenes",
  "venue": "Proceedings of the 2017 Symposium on Interactive 3D Graphics and Games (I3D ’17)",
  "year": "2017"
}
```

### 19. Tool result: update_document_metadata

{"error":"\"exit: {:timeout, {GenServer, :call, [Sheaf.Repo, :dataset, 5000]}}\""}

### 20. Tool result: update_document_metadata

{"error":"\"exit: {:timeout, {GenServer, :call, [Sheaf.Repo, {:transact, %{{:otel_tracer, :span_ctx} => {:span_ctx, 235598765820088782485946977463056111942, \\\"b13eabfac7d65bd0d261229a24f69946\\\", 8990912138312439111, \\\"7cc622f432dc5547\\\", 1, {:tracestate, []}, true, false, true, {:otel_span_ets, #Function<2.130817931/1 in :otel_tracer_server.on_end/1>}}}, \\\"replace https://less.rest/sheaf/metadata\\\", [retract: #RDF.Graph<name: ~I<https://less.rest/sheaf/metadata>\\n  @prefix bibo: <http://purl.org/ontology/bibo/> .\\n  @prefix doc: <https://less.rest/sheaf/> .\\n  @prefix fabio: <http://purl.org/spar/fabio/> .\\n  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\\n  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\\n  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\\n\\n  <http://dx.doi.org/10.1111/cgf.15243>\\n      <http://purl.org/dc/terms/title> \\\"FastFlow: GPU Acceleration of Flow and Depression Routing for Landscape Simulation\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/doi> \\\"10.1111/cgf.15243\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/volume> \\\"43\\\" ;\\n      <http://purl.org/dc/terms/creator> <https://id.crossref.org/contributor/aryamaan-jain-1apxk34sx1jwt>, <https://id.crossref.org/contributor/bernhard-kerbl-1apxk34sx1jwt>, <https://id.crossref.org/contributor/brandon-finley-1apxk34sx1jwt>, <https://id.crossref.org/contributor/guillaume-cordonnier-1apxk34sx1jwt>, <https://id.crossref.org/contributor/james-gain-1apxk34sx1jwt> ;\\n      <http://purl.org/dc/terms/date> \\\"2024-10\\\"^^xsd:gYearMonth ;\\n      <http://purl.org/dc/terms/identifier> \\\"10.1111/cgf.15243\\\" ;\\n      <http://purl.org/dc/terms/isPartOf> <https://id.crossref.org/issn/0167-7055> ;\\n      <http://purl.org/dc/terms/publisher> \\\"Wiley\\\" ;\\n      bibo:doi \\\"10.1111/cgf.15243\\\" ;\\n      bibo:volume \\\"43\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> <doi:10.1111/cgf.15243>, <info:doi/10.1111/cgf.15243> .\\n\\n  <https://id.crossref.org/contributor/david-ellerman-3ekc4hbcysp1k>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Ellerman\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"David\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"David Ellerman\\\" .\\n\\n  <https://id.crossref.org/contributor/eric-bruneton-35l3p4h9cknnw>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Bruneton\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"Eric\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"Eric Bruneton\\\" .\\n\\n  <https://id.crossref.org/contributor/peter-wonka-3bvng85hszyry>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Wonka\\\" .\\n\\n  <https://id.crossref.org/issn/1063-651X>\\n      a bibo:Journal ;\\n      <http://purl.org/dc/terms/title> \\\"Physical Review E\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/issn> \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      bibo:issn \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> \\\"urn:issn:1063-651X\\\", \\\"urn:issn:1095-3787\\\" .\\n\\n  <https://m.sheaf.less.rest/3XSLTA>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 15 ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/LE7R5L> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/5TUN47> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/39PCFR/5TUN47.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/DMTA8Y>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 10 ;\\n      fabio:isPortrayalOf <https://m.sheaf.less.rest/SXKQ7W> ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/4GPZ97> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/Y6LXVP> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/YNPQXB/Y6LXVP.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/EARFEK>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 10 ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/ZVUA3X> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/7S7YH6> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/MQ3XLF/7S7YH6.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/HDMHNA>\\n      rdfs:label \\\"arXiv\\\" ;\\n      <http://purl.org/dc/terms/title> \\\"arXiv\\\" .\\n\\n  <\" <> ..."}

### 21. Tool result: update_document_metadata

Updated metadata for #GBXEP3: kind, title, authors, year, venue, doi

### 22. Tool result: update_document_metadata

{"error":"\"exit: {:timeout, {GenServer, :call, [Sheaf.Repo, :dataset, 5000]}}\""}

### 23. Tool result: update_document_metadata

{"error":"\"exit: {:timeout, {GenServer, :call, [Sheaf.Repo, {:transact, %{{:otel_tracer, :span_ctx} => {:span_ctx, 4451449033059255178137328366665524368, \\\"03595161d1fa89959b7bedc56896e490\\\", 3405949251002968370, \\\"2f445ccc5d0a2932\\\", 1, {:tracestate, []}, true, false, true, {:otel_span_ets, #Function<2.130817931/1 in :otel_tracer_server.on_end/1>}}}, \\\"replace https://less.rest/sheaf/metadata\\\", [retract: #RDF.Graph<name: ~I<https://less.rest/sheaf/metadata>\\n  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\\n  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\\n  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\\n\\n  <http://dx.doi.org/10.1111/cgf.15243>\\n      <http://purl.org/dc/terms/title> \\\"FastFlow: GPU Acceleration of Flow and Depression Routing for Landscape Simulation\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/doi> \\\"10.1111/cgf.15243\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/volume> \\\"43\\\" ;\\n      <http://purl.org/dc/terms/creator> <https://id.crossref.org/contributor/aryamaan-jain-1apxk34sx1jwt>, <https://id.crossref.org/contributor/bernhard-kerbl-1apxk34sx1jwt>, <https://id.crossref.org/contributor/brandon-finley-1apxk34sx1jwt>, <https://id.crossref.org/contributor/guillaume-cordonnier-1apxk34sx1jwt>, <https://id.crossref.org/contributor/james-gain-1apxk34sx1jwt> ;\\n      <http://purl.org/dc/terms/date> \\\"2024-10\\\"^^xsd:gYearMonth ;\\n      <http://purl.org/dc/terms/identifier> \\\"10.1111/cgf.15243\\\" ;\\n      <http://purl.org/dc/terms/isPartOf> <https://id.crossref.org/issn/0167-7055> ;\\n      <http://purl.org/dc/terms/publisher> \\\"Wiley\\\" ;\\n      <http://purl.org/ontology/bibo/doi> \\\"10.1111/cgf.15243\\\" ;\\n      <http://purl.org/ontology/bibo/volume> \\\"43\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> <doi:10.1111/cgf.15243>, <info:doi/10.1111/cgf.15243> .\\n\\n  <https://id.crossref.org/contributor/david-ellerman-3ekc4hbcysp1k>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Ellerman\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"David\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"David Ellerman\\\" .\\n\\n  <https://id.crossref.org/contributor/eric-bruneton-35l3p4h9cknnw>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Bruneton\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"Eric\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"Eric Bruneton\\\" .\\n\\n  <https://id.crossref.org/contributor/peter-wonka-3bvng85hszyry>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Wonka\\\" .\\n\\n  <https://id.crossref.org/issn/1063-651X>\\n      a <http://purl.org/ontology/bibo/Journal> ;\\n      <http://purl.org/dc/terms/title> \\\"Physical Review E\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/issn> \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      <http://purl.org/ontology/bibo/issn> \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> \\\"urn:issn:1063-651X\\\", \\\"urn:issn:1095-3787\\\" .\\n\\n  <https://m.sheaf.less.rest/3XSLTA>\\n      a <https://less.rest/sheaf/Document>, <https://less.rest/sheaf/Paper> ;\\n      <http://purl.org/ontology/bibo/numPages> 15 ;\\n      <http://purl.org/spar/fabio/isRepresentationOf> <https://m.sheaf.less.rest/LE7R5L> ;\\n      <https://less.rest/sheaf/sourceFile> <https://m.sheaf.less.rest/5TUN47> ;\\n      <https://less.rest/sheaf/sourceKey> \\\"/home/mbrock/sheaf.mikael/var/datalab/39PCFR/5TUN47.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/DMTA8Y>\\n      a <https://less.rest/sheaf/Document>, <https://less.rest/sheaf/Paper> ;\\n      <http://purl.org/ontology/bibo/numPages> 10 ;\\n      <http://purl.org/spar/fabio/isPortrayalOf> <https://m.sheaf.less.rest/SXKQ7W> ;\\n      <http://purl.org/spar/fabio/isRepresentationOf> <https://m.sheaf.less.rest/4GPZ97> ;\\n      <https://less.rest/sheaf/sourceFile> <https://m.sheaf.less.rest/Y6LXVP> ;\\n      <https://less.rest/sheaf/sourceKey> \\\"/home/mbrock/sheaf.mikael/var/datalab/YNPQXB/Y6LXVP.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/EARFEK>\\n      a <https://less.rest/sheaf/Document>, <https://less.rest/sheaf/Paper> ;\\n      <http://purl.org/ontology/bibo/numPages> 10 ;\\n \" <> ..."}

### 24. Tool result: update_document_metadata

Updated metadata for #BDBBL6: kind, title, authors, year, venue, doi

### 25. Tool result: update_document_metadata

{"error":"\"exit: {:timeout, {GenServer, :call, [Sheaf.Repo, {:transact, %{{:otel_tracer, :span_ctx} => {:span_ctx, 110207039604305616676089951400093511696, \\\"52e91a9062394cfaefe4144e07af7010\\\", 609136358256520441, \\\"0874164a5da7acf9\\\", 1, {:tracestate, []}, true, false, true, {:otel_span_ets, #Function<2.130817931/1 in :otel_tracer_server.on_end/1>}}}, \\\"replace https://less.rest/sheaf/metadata\\\", [retract: #RDF.Graph<name: ~I<https://less.rest/sheaf/metadata>\\n  @prefix bibo: <http://purl.org/ontology/bibo/> .\\n  @prefix doc: <https://less.rest/sheaf/> .\\n  @prefix fabio: <http://purl.org/spar/fabio/> .\\n  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\\n  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\\n  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\\n\\n  <http://dx.doi.org/10.1111/cgf.15243>\\n      <http://purl.org/dc/terms/title> \\\"FastFlow: GPU Acceleration of Flow and Depression Routing for Landscape Simulation\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/doi> \\\"10.1111/cgf.15243\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/volume> \\\"43\\\" ;\\n      <http://purl.org/dc/terms/creator> <https://id.crossref.org/contributor/aryamaan-jain-1apxk34sx1jwt>, <https://id.crossref.org/contributor/bernhard-kerbl-1apxk34sx1jwt>, <https://id.crossref.org/contributor/brandon-finley-1apxk34sx1jwt>, <https://id.crossref.org/contributor/guillaume-cordonnier-1apxk34sx1jwt>, <https://id.crossref.org/contributor/james-gain-1apxk34sx1jwt> ;\\n      <http://purl.org/dc/terms/date> \\\"2024-10\\\"^^xsd:gYearMonth ;\\n      <http://purl.org/dc/terms/identifier> \\\"10.1111/cgf.15243\\\" ;\\n      <http://purl.org/dc/terms/isPartOf> <https://id.crossref.org/issn/0167-7055> ;\\n      <http://purl.org/dc/terms/publisher> \\\"Wiley\\\" ;\\n      bibo:doi \\\"10.1111/cgf.15243\\\" ;\\n      bibo:volume \\\"43\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> <doi:10.1111/cgf.15243>, <info:doi/10.1111/cgf.15243> .\\n\\n  <https://id.crossref.org/contributor/david-ellerman-3ekc4hbcysp1k>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Ellerman\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"David\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"David Ellerman\\\" .\\n\\n  <https://id.crossref.org/contributor/eric-bruneton-35l3p4h9cknnw>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Bruneton\\\" ;\\n      <http://xmlns.com/foaf/0.1/givenName> \\\"Eric\\\" ;\\n      <http://xmlns.com/foaf/0.1/name> \\\"Eric Bruneton\\\" .\\n\\n  <https://id.crossref.org/contributor/peter-wonka-3bvng85hszyry>\\n      a <http://xmlns.com/foaf/0.1/Person> ;\\n      <http://xmlns.com/foaf/0.1/familyName> \\\"Wonka\\\" .\\n\\n  <https://id.crossref.org/issn/1063-651X>\\n      a bibo:Journal ;\\n      <http://purl.org/dc/terms/title> \\\"Physical Review E\\\" ;\\n      <http://prismstandard.org/namespaces/basic/2.1/issn> \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      bibo:issn \\\"1063-651X\\\", \\\"1095-3787\\\" ;\\n      <http://www.w3.org/2002/07/owl#sameAs> \\\"urn:issn:1063-651X\\\", \\\"urn:issn:1095-3787\\\" .\\n\\n  <https://m.sheaf.less.rest/3XSLTA>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 15 ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/LE7R5L> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/5TUN47> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/39PCFR/5TUN47.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/DMTA8Y>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 10 ;\\n      fabio:isPortrayalOf <https://m.sheaf.less.rest/SXKQ7W> ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/4GPZ97> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/Y6LXVP> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/YNPQXB/Y6LXVP.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/EARFEK>\\n      a doc:Document, doc:Paper ;\\n      bibo:numPages 10 ;\\n      fabio:isRepresentationOf <https://m.sheaf.less.rest/ZVUA3X> ;\\n      doc:sourceFile <https://m.sheaf.less.rest/7S7YH6> ;\\n      doc:sourceKey \\\"/home/mbrock/sheaf.mikael/var/datalab/MQ3XLF/7S7YH6.datalab.json\\\" .\\n\\n  <https://m.sheaf.less.rest/HDMHNA>\\n      rdfs:label \\\"arXiv\\\" ;\\n      <http://purl.org/dc/terms/title> \\\"arXiv\\\" .\\n\\n  <h\" <> ..."}

### 26. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Bastian Kuth",
    "Max Oberberger",
    "Carsten Faber",
    "Pirmin Pfeifer",
    "Seyedmasih Tabaei",
    "Dominik Baumeister",
    "Quirin Meyer"
  ],
  "document_id": "EDURTK",
  "doi": "10.2312/hpg.20251168",
  "kind": "research_paper",
  "title": "Real-Time GPU Tree Generation",
  "venue": "High-Performance Graphics – Symposium Papers",
  "year": "2025"
}
```

### 27. Tool result: update_document_metadata

Updated metadata for #EDURTK: kind, title, authors, year, venue, doi

### 28. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Eric Wohllaib"
  ],
  "corporate_authors": [
    "Sucker Punch Productions"
  ],
  "document_id": "66Q3W3",
  "kind": "report",
  "title": "Ghost of Tsushima: Procedural Grass",
  "venue": "Game Developers Conference (GDC) 2021",
  "year": "2021"
}
```

### 29. Tool result: update_document_metadata

Updated metadata for #66Q3W3: kind, title, authors, corporate_authors, year, venue

### 30. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Chris Wyman",
    "Morgan McGuire"
  ],
  "document_id": "QHMFH2",
  "doi": "10.1109/TVCG.2017.2739149",
  "kind": "journal_article",
  "title": "Improved Alpha Testing Using Hashed Sampling",
  "venue": "IEEE Transactions on Visualization and Computer Graphics",
  "year": "2019"
}
```

### 31. Tool result: update_document_metadata

Updated metadata for #QHMFH2: kind, title, authors, year, venue, doi

### 32. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Gilbert Sanders"
  ],
  "corporate_authors": [
    "Guerrilla Games"
  ],
  "document_id": "ABD2B8",
  "kind": "report",
  "title": "Between Tech and Art: The Vegetation of Horizon Zero Dawn",
  "venue": "Game Developers Conference (GDC) 2018",
  "year": "2018"
}
```

### 33. Tool result: update_document_metadata

Updated metadata for #ABD2B8: kind, title, authors, corporate_authors, year, venue

### 34. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "authors": [
    "Klemens Jahrmann",
    "Michael Wimmer"
  ],
  "document_id": "PQ68ZH",
  "doi": "10.1145/3023368.3023380",
  "kind": "research_paper",
  "title": "Responsive Real-Time Grass Rendering for General 3D Scenes",
  "venue": "Proceedings of the 2017 Symposium on Interactive 3D Graphics and Games (I3D ’17)",
  "year": "2017"
}
```

### 35. Tool result: update_document_metadata

Updated metadata for #PQ68ZH: kind, title, authors, year, venue, doi

### 36. Assistant tool calls

#### Tool call: `document_import`

```json
{
  "action": "validate",
  "run_id": "A7DTK3"
}
```

### 37. Tool result: document_import

{
  "action": "validate",
  "documents": [
    {
      "title": "Real-Time GPU Tree Generation",
      "valid": true,
      "document_id": "EDURTK",
      "readable_chunks": 115,
      "source_pages": 10,
      "reader_path": "/EDURTK"
    },
    {
      "title": "Ghost of Tsushima: Procedural Grass",
      "valid": true,
      "document_id": "66Q3W3",
      "readable_chunks": 88,
      "source_pages": 54,
      "reader_path": "/66Q3W3"
    },
    {
      "title": "Realistic Modeling and Rendering of Plant Ecosystems",
      "valid": true,
      "document_id": "GBXEP3",
      "readable_chunks": 163,
      "source_pages": 12,
      "reader_path": "/GBXEP3"
    },
    {
      "title": "Improved Alpha Testing Using Hashed Sampling",
      "valid": true,
      "document_id": "QHMFH2",
      "readable_chunks": 239,
      "source_pages": 12,
      "reader_path": "/QHMFH2"
    },
    {
      "title": "Between Tech and Art: The Vegetation of Horizon Zero Dawn",
      "valid": true,
      "document_id": "ABD2B8",
      "readable_chunks": 393,
      "source_pages": 87,
      "reader_path": "/ABD2B8"
    },
    {
      "title": "Real‐time Realistic Rendering and Lighting of Forests",
      "valid": true,
      "document_id": "BDBBL6",
      "readable_chunks": 151,
      "source_pages": 11,
      "reader_path": "/BDBBL6"
    },
    {
      "title": "Responsive Real-Time Grass Rendering for General 3D Scenes",
      "valid": true,
      "document_id": "PQ68ZH",
      "readable_chunks": 171,
      "source_pages": 10,
      "reader_path": "/PQ68ZH"
    }
  ],
  "run_id": "A7DTK3",
  "embedding_status": "completed",
  "search_rows": 4720,
  "embedding_errors": 0
}

### 38. Assistant

Imported and validated all seven PDFs:

- *Real-Time GPU Tree Generation* — #EDURTK
- *Ghost of Tsushima: Procedural Grass* — #66Q3W3
- *Realistic Modeling and Rendering of Plant Ecosystems* — #GBXEP3
- *Improved Alpha Testing Using Hashed Sampling* — #QHMFH2
- *Between Tech and Art: The Vegetation of Horizon Zero Dawn* — #ABD2B8
- *Real-time Realistic Rendering and Lighting of Forests* — #BDBBL6
- *Responsive Real-Time Grass Rendering for General 3D Scenes* — #PQ68ZH

Bibliographic metadata was verified and added. All documents passed reader and search-index validation with no embedding errors.

### 39. User

can you read them and write nice microabstracts plus generate great cover art images?

### 40. Assistant tool calls

#### Tool call: `get_document`

```json
{
  "id": "EDURTK"
}
```

#### Tool call: `get_document`

```json
{
  "id": "66Q3W3"
}
```

#### Tool call: `get_document`

```json
{
  "id": "GBXEP3"
}
```

#### Tool call: `get_document`

```json
{
  "id": "QHMFH2"
}
```

#### Tool call: `get_document`

```json
{
  "id": "ABD2B8"
}
```

#### Tool call: `get_document`

```json
{
  "id": "BDBBL6"
}
```

#### Tool call: `get_document`

```json
{
  "id": "PQ68ZH"
}
```

### 41. Tool result: get_document

DOCUMENT #EDURTK
Title: Real-Time GPU Tree Generation

Outline:
  - 1 #ST65WQ Real-Time GPU Tree Generation
    - 1.1 #3AF4HM Abstract
    - 1.2 #BGB37V CCS Concepts
    - 1.3 #PYAKW4 1. Introduction
    - 1.4 #ZYPVGN 2. Background
      - 1.4.1 #8AWK3J 2.1. The Weber-Penn Model
      - 1.4.2 #AR5QHU 2.2. Mesh Nodes
    - 1.5 #LMRE4T 3. The Tree Generation Work Graph
      - 1.5.1 #4NQTQP 3.1. Stem Level
      - 1.5.2 #5PR9YG 3.2. Stem Drawing
      - 1.5.3 #3JVLMA 3.3. Leaves
      - 1.5.4 #WP55PQ 3.4. Seasons
      - 1.5.5 #22ZJCT 3.5. Animation
      - 1.5.6 #MRQUQ2 3.6. Advanced Editing
      - 1.5.7 #EX3H73 3.7. Advanced Optimizations
      - 1.5.8 #TGWYY9 3.8. Pass Fusion for Deferred Shadow Mapping
      - 1.5.9 #9Q2R4Z 3.9. Automatic Level of Detail
    - 1.6 #GNUJ7A 4. Results and Discussion
    - 1.7 #CXP5S9 5. Conclusion and Future Work
    - 1.8 #RV794Z Acknowledgments
    - 1.9 #96FQ94 References

### 42. Tool result: get_document

DOCUMENT #66Q3W3
Title: Ghost of Tsushima: Procedural Grass

Outline:
  - 1 #W32QZT GHOSTOF TSUSHIMA
    - 1.1 #5PUTKY Placing a Grass Blade
    - 1.2 #NF4YZX Generating a Grass Blade
      - 1.2.1 #YVU33M DATA PIPELINE
      - 1.2.2 #M2AA9T Cubic Bezier curve
    - 1.3 #8N9Y6H ACKNOWLEDGEMENTS

### 43. Tool result: get_document

DOCUMENT #GBXEP3
Title: Realistic Modeling and Rendering of Plant Ecosystems

Outline:
  - 1 #3286QK Realistic modeling and rendering of plant ecosystems
    - 1.1 #8N9MC6 Abstract
    - 1.2 #NMLFGT 1 INTRODUCTION
    - 1.3 #ZKTVJW 2 SYSTEM ARCHITECTURE
    - 1.4 #L5JV3W 3 TERRAIN SPECIFICATION
    - 1.5 #6AUBR5 4 SPECIFICATION OF PLANT POPULATIONS
      - 1.5.1 #LQRB4U 4.1 Interactive specification of plant populations
      - 1.5.2 #8YS5JA 4.2 Simulation of ecosystems
    - 1.6 #7SRRT6 5 MODELING OF PLANTS
    - 1.7 #H2M943 6 APPROXIMATE INSTANCING
    - 1.8 #DE33B2 7 RENDERING
    - 1.9 #YKN7AK 8 EXAMPLES
    - 1.10 #BTNVBC 9 CONCLUSIONS
    - 1.11 #P6JQDB Acknowledgements
    - 1.12 #884UE4 REFERENCES

### 44. Tool result: get_document

DOCUMENT #QHMFH2
Title: Improved Alpha Testing Using Hashed Sampling

Outline:
  - 1 #44GBYC Improved Alpha Testing Using Hashed Sampling
    - 1.1 #42D4DE Abstract—
    - 1.2 #2WK4G6 1 INTRODUCTION
    - 1.3 #5QEEQJ 2 WHY DOES GEOMETRY DISAPPEAR?
    - 1.4 #53S2QB 3 STATE OF THE ART IN ALPHA TESTING
    - 1.5 #BTYG8Z 4 STOCHASTIC ALPHA TESTING
    - 1.6 #JRGDYC 5 HASHED ALPHA TESTING
      - 1.6.1 #984KZ6 5.1 Hash Function
      - 1.6.2 #VY22UQ 5.2 Anchoring Hashed Noise to Geometry
      - 1.6.3 #AVPY9H 5.3 Avoiding Correlations Between Layers
      - 1.6.4 #899GPH 5.4 Achieving Stable Pixel-Scale Noise
        - 1.6.4.1 #QXZKEC 5.4.1 Stability For Screen-Space Translations in X and Y
        - 1.6.4.2 #KFA6B4 5.4.2 Stability For Screen-Space Translations in Z
    - 1.7 #PBEZQQ 6 ANISOTROPIC HASHED ALPHA TESTING
      - 1.7.1 #BLTXA3 6.1 Difficulties Removing Anisotropy
      - 1.7.2 #726Q7U 6.2 Mitigating Anisotropy
    - 1.8 #3SCLT7 7 IMPLEMENTATION CONSIDERATIONS
      - 1.8.1 #YLJH9N 7.1 Fading in Noise with Distance
        - 1.8.1.1 #E5XEXG 7.1.1 Fading in Noise With Anisotropic Texture Sampling
      - 1.8.2 #7Z55V6 7.2 Hashed Alpha Testing With Temporal Antialiasing
        - 1.8.2.1 #5XTVGC 7.2.1 Temporal Antialiasing by Reducing Noise Scale
        - 1.8.2.2 #MSBL54 7.2.2 Temporal Antialiasing by Independent Hashing
        - 1.8.2.3 #2Q4G64 7.2.3 Temporal Antialiasing by Temporal Stratification
      - 1.8.3 #KFFJHQ 7.3 Using Premultiplied Alpha
    - 1.9 #ZJXSLW 8 APPLICATIONS TO ALPHA-TO-COVERAGE
      - 1.9.1 #KVJWMS 8.1 Applications to Screen Door Transparency
    - 1.10 #RU94D8 9 OTHER APPLICATIONS OF HASHED SAMPLING
    - 1.11 #DBB4PS 10 STOCHASTIC TRANSPARENCY COMPARISON
    - 1.12 #R5QF6K 11 RESULTS
    - 1.13 #ZW8XY9 12 CONCLUSIONS
    - 1.14 #PAWDPN ACKNOWLEDGMENTS
    - 1.15 #J7E8F8 REFERENCES

### 45. Tool result: get_document

DOCUMENT #ABD2B8
Title: Between Tech and Art: The Vegetation of Horizon Zero Dawn

Outline:
  - 1 #MFUGJF The Vegetation of Horizon Zero Dawn
    - 1.1 #52X55Y Welcome
    - 1.2 #TEDEY5 Topics
    - 1.3 #Z98PAS Our Renderer
    - 1.4 #82JYHM Horizon Zero Dawn
    - 1.5 #ECWA9L Our first steps...
      - 1.5.1 #HJR95K Killzone Shadow Fall:
      - 1.5.2 #9FDTZH Placement System
    - 1.6 #9TYLT2 Simulation
    - 1.7 #NZT45Z Making Foliage Move
      - 1.7.1 #7EWEMB Making Foliage Move
    - 1.8 #CZ5EA6 Categories of Spring Settings:
      - 1.8.1 #258E34 Trees and Plants
        - 1.8.1.1 #T6PRQR Vertex Program: Trees
      - 1.8.2 #X2P7C7 Vertex Program: Trees
        - 1.8.2.1 #MCYTHX Vertex Program: Trees
        - 1.8.2.2 #YLAJVL Vertex Program: Trees
        - 1.8.2.3 #5RLYFV Vertex Program: Trees
        - 1.8.2.4 #7VEUX8 Vertex Program: Trees
        - 1.8.2.5 #XVFHTY Vertex Program: Trees
      - 1.8.3 #S92KH2 Vertex Program: Plants
      - 1.8.4 #FDNGMJ Grasses
        - 1.8.4.1 #CXM7PA Vertex Program: Grass
        - 1.8.4.2 #NDVV5L Vertex Programs: Making Grass Move
        - 1.8.4.3 #3ZT5Q6 Vertex Programs: Making Grass Move
        - 1.8.4.4 #3RQF7M Vertex Programs: Making Grass Move
        - 1.8.4.5 #NVESGB Vertex Programs: Making Grass Do More
        - 1.8.4.6 #JVVVCU Vertex Programs: Making Grass Do More
        - 1.8.4.7 #43G49Z Vertex Programs: Making Grass Do More
        - 1.8.4.8 #FSRQ8J Vertex Programs: Making Grass Do More
      - 1.8.5 #ZB9PQG Shading – Alpha
        - 1.8.5.1 #4UJQLS Pixel Program: Alpha
          - 1.8.5.1.1 #XZDE58 Scalpel GPU Profiler
          - 1.8.5.1.2 #3JPF3T Draw Hierarchy / Samplers / Render targets / Render state / Shader state
          - 1.8.5.1.3 #S4F3RD Legend
            - 1.8.5.1.3.1 #GZGJ4G Selection
            - 1.8.5.1.3.2 #6TDX24 Table controls
          - 1.8.5.1.4 #RM7MAN Scalpel GPU Profiler
          - 1.8.5.1.5 #BQTL6Y Draw Hierarchy / Samplers / Render targets / Render state / Shader state
            - 1.8.5.1.5.1 #JB7378 Legend
            - 1.8.5.1.5.2 #K69M9B Selection
            - 1.8.5.1.5.3 #JXYTFK Table controls
        - 1.8.5.2 #JG85A7 Pixel Program: Alpha
          - 1.8.5.2.1 #CD68QM Scalpel GPU Profiler
        - 1.8.5.3 #DT7AR5 Pixel Program: Alpha
        - 1.8.5.4 #VD4449 Pixel Program: Alpha
          - 1.8.5.4.1 #9ZGYVL Alpha Testing Optimization:
          - 1.8.5.4.2 #NVPV6U Anti-Aliasing
        - 1.8.5.5 #RLC25Z Shading
        - 1.8.5.6 #28BQGN Pixel Program: G-Buffers
        - 1.8.5.7 #E4HXXB Shading
        - 1.8.5.8 #KEY88P Pixel Program: Vegetation Textures
        - 1.8.5.9 #ZJZ5VC Vegetation Textures:
        - 1.8.5.10 #AFKMK8 Shading
        - 1.8.5.11 #BS6F8P Pixel Program: Vegetation Textures
          - 1.8.5.11.1 #KZSEET Vegetation Textures:
          - 1.8.5.11.2 #2QAL8Y Get packed into:
        - 1.8.5.12 #V8LJSD Pixel Program: Normals
        - 1.8.5.13 #P9SP93 Pixel Program: Normals
        - 1.8.5.14 #49U8HT Pixel Program: Normals
        - 1.8.5.15 #EXJ6GV Pixel Program: Normals
        - 1.8.5.16 #QN8SA5 Pixel Program: Normals
        - 1.8.5.17 #RK5T3U Pixel Program: Normals
        - 1.8.5.18 #H4PWUB Pixel Program: Normals
        - 1.8.5.19 #EDGLAY Pixel Program: Albedo
        - 1.8.5.20 #XLT7XC Colorization Texture Array:
        - 1.8.5.21 #TS24R5 Pixel Program: Albedo
        - 1.8.5.22 #3JHMBP Pixel Program: Roughness / Reflectance
        - 1.8.5.23 #MXZG4T Pixel Program: Translucency
    - 1.9 #3EYJES Asset Creation
      - 1.9.1 #6HBR9J Asset Creation
      - 1.9.2 #K7UVRC Creation Process
        - 1.9.2.1 #B933Q9 Process
      - 1.9.3 #EPE7ES Creation Process
      - 1.9.4 #L28KHX Creation Process
      - 1.9.5 #TH3B3D Creation Process
        - 1.9.5.1 #U5GFWD Process
        - 1.9.5.2 #Y5VX3S Process
        - 1.9.5.3 #V6AJ9K Process
      - 1.9.6 #HCAQY2 Assets: Trees
      - 1.9.7 #LD3AX4 Assets: Plants
    - 1.10 #F4W7Y2 Shadow Casting
      - 1.10.1 #5LFPRD Shadow Casting
    - 1.11 #H5T7M2 Shadow Casting
      - 1.11.1 #R22YCC Shadow Casting Vegetation
    - 1.12 #KBMKEN Summary
      - 1.12.1 #LZ8AXU Summary
      - 1.12.2 #V4MS42 What worked for us?
    - 1.13 #VWFGJZ References

### 46. Tool result: get_document

DOCUMENT #BDBBL6
Title: Real‐time Realistic Rendering and Lighting of Forests

Outline:
  - 1 #XR7DQ8 Real-time Realistic Rendering and Lighting of Forests
    - 1.1 #KFK357 ► To cite this version:
  - 2 #ZX2JYE Real-time Realistic Rendering and Lighting of Forests
    - 2.1 #9S3JS2 Abstract
    - 2.2 #QREKH2 1. Introduction
    - 2.3 #4THWJB 2. Related work
    - 2.4 #RNMTHM 3. Strahler et al. model
    - 2.5 #Y8VXY9 4. Our Model
    - 2.6 #6MAATG 5. Nearest trees: representation and rendering
    - 2.7 #6DMZ4P 6. Farthest trees: representation and rendering
    - 2.8 #5KNTTV 7. Seamless transition between representations
    - 2.9 #387UFC 8. Implementation
    - 2.10 #2L89HX 9. Results and validation
    - 2.11 #ZX7AQX 10. Discussion
    - 2.12 #XZX56G 11. Conclusion
    - 2.13 #PYN6GH References

### 47. Tool result: get_document

DOCUMENT #PQ68ZH
Title: Responsive Real-Time Grass Rendering for General 3D Scenes

Outline:
  - 1 #5FHX2Q Responsive Real-Time Grass Rendering for General 3D Scenes
    - 1.1 #LX8HQS Abstract
    - 1.2 #9C7W2D 1 Introduction
    - 1.3 #WPSP64 2 Previous Work
    - 1.4 #6B6F7R 3 Overview
    - 1.5 #SEM8VP 4 Preprocessing
    - 1.6 #L88M6R 5 Physical Model
      - 1.6.1 #BFN9FD 5.1 Natural Forces
      - 1.6.2 #AABN93 5.2 State Validation
      - 1.6.3 #837YCQ 5.3 Collision
    - 1.7 #RDERFQ 6 Rendering
      - 1.7.1 #CT9JP3 6.1 Indirect Rendering
      - 1.7.2 #J5PHD5 6.2 Culling
      - 1.7.3 #SYPVZY 6.3 Blade Geometry
    - 1.8 #WJRRU9 7 Results
      - 1.8.1 #WBJRYY 7.1 Nature scene
      - 1.8.2 #CXEEA6 7.2 Helicopter scene
      - 1.8.3 #5NC82H 7.3 Comparison to related work
    - 1.9 #WCKSTG 8 Conclusion and Future Work
    - 1.10 #H7RNBU References

### 48. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "Y7NN3U",
  "document_id": "QHMFH2",
  "micro_abstract": "Develops hashed alpha testing, a stable quasi-random thresholding method that preserves distant alpha-mapped foliage and hair while controlling flicker, anisotropy, and interactions with TAA and alpha-to-coverage."
}
```

### 49. Assistant tool calls

#### Tool call: `read`

```json
{
  "blocks": [
    "3AF4HM",
    "GNUJ7A",
    "CXP5S9",
    "W32QZT",
    "8N9MC6",
    "YKN7AK",
    "BTNVBC",
    "42D4DE",
    "R5QF6K",
    "ZW8XY9",
    "TEDEY5",
    "9TYLT2",
    "NZT45Z",
    "CZ5EA6",
    "3EYJES",
    "F4W7Y2",
    "KBMKEN",
    "9S3JS2",
    "2L89HX",
    "ZX7AQX",
    "XZX56G",
    "LX8HQS",
    "6B6F7R",
    "WJRRU9",
    "WCKSTG"
  ],
  "expand": true
}
```

### 50. Tool result: read

DOCUMENT #EDURTK
Real-Time GPU Tree Generation

SECTION #3AF4HM Abstract

EXCERPT #77B2LY p. 0
  Trees for real-time media are typically created using procedural algorithms and then baked to a polygon format, requiring large amounts of memory. We propose a novel procedural system and model for generating and rendering realistic trees and similar vegetation specifically tailored to run in real-time on GPUs. By using GPU work graphs with mesh nodes, we render gigabytes-worth of tree geometry from kilobytes of generation code every frame exclusively on the GPU. Contrary to prior work, our method combines instant in-engine artist authoring, continuous frame-specific level of detail and tessellation, highly detailed animation, and seasonal details like blossoms, fruits, and snow. Generating the unique tree geometries of our teaser test scene and rendering them to the G-buffer takes 3.13 ms on an AMD Radeon RX 7900 XTX.

DOCUMENT #EDURTK
Real-Time GPU Tree Generation

SECTION #GNUJ7A 4. Results and Discussion

EXCERPT #9DHVLQ p. 6
  We evaluate the Direct3D12 implementation of our method. All measurements were taken on an AMD RX 7900 XTX GPU, driver version 24.30.31.03, at a 1920×1080 resolution. We use the scene of Fig. 9. It spans 6.6 hectares and is filled with 1,200 trees and bushes of 20 different types, including 17 with custom splines.

EXCERPT #9EDXP8 p. 6
  Memory Requirements Tab. 2 shows the theoretical memory needed to render our test scene without our method. We assume the highest static discrete tree LOD has all leaves at maximum quality, and stems tessellated with one triangle per centimeter. For reference, the highest quality tree of the PBRT landscape scene [PJH23]

EXCERPT #Y4MJWX p. 6
  One Sassafras Tree Trees of Entire Scene Stem Vertices 1,479,896 45.2 MiB 493,756,958 14.7 GiB Stem Triangles 2,038,580 23.3 MiB 684,357,207 7.6 GiB Leaf Vertices 1,974,720 60.3 MiB 302,936,912 9.0 GiB Leaf Triangles 1,974,720 22.6 MiB 302,936,912 3.4 GiB Total 151.4 MiB 34.8 GiB

EXCERPT #3JRGJB p. 6
  Table 2: Theoretical Memory. We list vertex and triangle count and theoretical memory requirements for the stem and the leaves of one Sassafras tree and tree geometry of the entire scene. As we create the required geometry on the fly, the actual permanent memory requirements for the geometry is only ca. 51 KiB.

EXCERPT #R2DZR2 p. 6
  amounts to about 4 million triangles, similar to our Sassafras tree. We assume one vertex to consist of a position, a normal, and a texture coordinate, amounting to 32 bytes. The memory required for just the trees of the scene would exceed the 24 GiB memory capacity of our high-end GPU. Note that recreating features of our method such as LODs, animation, seasonal changes, or normal mapping would require significantly more memory. In comparison, our method only requires 704 bytes of parameters per tree type. With 20 tree types, 1,200 initial transformations with a type index, and 17 custom spline positions, this amounts to 51 KiB for the trees in the scene. A work graph requires temporary backing memory to store records, with the size range determined by the driver. Users must select a size within this range. Our work graph, including nodes for grass and asset rendering, as well as debugging, requires 1.5 GiB of backing memory. However, testing across different GPU architectures and driver versions shows significant variation in this requirement. Note that this memory can be reused, freed or re-allocated outside the work graph execution.

EXCERPT #R935EL p. 6
  Performance Fig. 10 plots the time required to generate and render different fractions of the frames from the camera path of Fig. 9. The median tree generation and rendering time to the G-buffer is 3.13 ms. As generation does not have to run twice for the shadow map, measuring it together with the G-buffer amounts to 4.72 ms. Frame-to-frame timings of 7.74 ms additionally contains rendering all other scene geometry including grass, the compositing pass, screen space ambient occlusion and reflections, temporal anti-aliasing, tone mapping, and present. Furthermore, the performance plots follow the total number of rasterized triangles of a frame, except for the orchard region, where we generate many extra triangles for blossoms. In addition, our automatic LOD succeeds in keeping the times under the set target of 8.3 ms.

EXCERPT #MAVHVD p. 6
  Continuous LOD In Fig. 11, we demonstrate how the tree generation changes at different distances to the camera, and measure the number of triangles. Our method succeeds in preserving the overall appearance of the full detailed 3.6 M triangle tree, while drastically reducing the amount of geometry to 8.7 k when far away. To evaluate how seamless this LOD change is, we take the interval of Fig. 11 from a to b, and demonstrate how our smooth LOD distributes the resulting FLIP [ANA*20] error to several frames compared to a conventional LOD switch. As can be seen, in-between frames further away from the camera have a higher error to their predecessor. This is desirable, because changes at greater distance are less visible. The greatest visual error happens between image (10) and (14), where leaf lobes start to merge as described in Sec. 3.3. This process finishes between image (13) to (14), which explains the sudden decline in number of triangles at 50 m. Note that, for a reasonable camera speed, many more intermediate frames would be generated, as shown in the supplemental video.

EXCERPT #QGZ3SQ p. 6

EXCERPT #VEEYLW p. 7

EXCERPT #9GVPAF p. 7

EXCERPT #S7LQAX p. 7
  Figure 10: Performance along a Camera Path. The figure consists of a line graph and a sequence of camera path images. The graph plots Time (ms) on the left y-axis (0 to 15) and Triangles (millions) on the right y-axis (0 to 40) against a camera path. The legend includes: G-Buffer Time (green solid line), G-Buffer & Shadows Time (blue solid line), Frame-to-Frame Time (red solid line), Frame-to-Frame Auto-LOD Time (red dashed line), 120 Hz Target Time (grey dotted line), and Frame-to-Frame Triangles (violet solid line). The graph is divided into segments (a) through (e) marked with vertical lines. Below the graph is a sequence of images showing the camera path through a 3D landscape with trees and water.

EXCERPT #YR5MBL p. 7
  Figure 10: Performance along a Camera Path. We fly through our scene from Fig. 9, measure frame times, and (a–e) mark the corresponding regions from the camera path. In green, we plot the time to generate and render the tree geometry of the current frame to the G-buffer. In blue, we additionally enable creation of the shadow map. Red shows the total frame-to-frame time, including all other graphical effects, with the secondary axis dashed showing the total number of triangles for this. The violet plot shows this number with our auto-LOD enabled.

EXCERPT #ZM2GUK p. 7
  Editing A user interface allows changing tree parameters. As the parameters fit in ca. 1 KiB, GPU upload times after edits are negligible. Thus, we get real-time feedback making modelling intuitive and efficient. Fig. 13 and the supplemental video show tree edits. Same as the original model, we do not automatically handle tree-self or tree-tree intersection, but can manually prevent them by placing pruning meshes.

DOCUMENT #EDURTK
Real-Time GPU Tree Generation

SECTION #CXP5S9 5. Conclusion and Future Work

EXCERPT #XGND6W p. 7
  We presented a system and model for real-time tree generation on GPUs. By generating tree geometries for the current frame on the fly, our method dramatically reduces memory requirements for detailed vegetation. In future work, we want to explore how real-time ray-tracing can profit from fast vegetation generation.

DOCUMENT #66Q3W3
Ghost of Tsushima: Procedural Grass

SECTION #W32QZT GHOSTOF TSUSHIMA

EXCERPT #X6UFR4 p. 0
  Procedural Grass

EXCERPT #TTRD5L p. 0
  A small red square logo with the letters 'SP' in white, located in the bottom right corner of the image. SP logo

EXCERPT #BSFHGL p. 1
  This is a highly detailed and atmospheric landscape painting in a style reminiscent of traditional Chinese ink wash art, but with a more dramatic, almost cinematic lighting. The scene is dominated by a massive, multi-tiered waterfall that cascades over a dark, rocky precipice. To the right of the waterfall, a hillside is covered in dense, autumnal foliage in shades of orange, red, and brown. Perched atop this hillside is a complex of traditional Chinese architecture, featuring multiple levels of dark, tiled roofs with upturned eaves and white walls. The architecture appears to be a fortress or a palace. In the foreground, a figure on horseback stands on a small, grassy patch near the base of the waterfall, looking towards the scene. The ground is covered in lush green grass and small white flowers. A flock of white birds is seen flying across the misty air near the base of the waterfall. The sky is filled with large, billowing white clouds that catch the light, creating a dramatic contrast with the darker areas of the landscape. The overall mood is one of grandeur and tranquility. A dramatic landscape painting featuring a large waterfall cascading over a rocky ledge, with traditional Chinese architecture perched on a hillside to the right. The sky is filled with massive, billowing white clouds. In the foreground, a figure on horseback stands near the base of the waterfall, and a flock of birds flies across the misty air.

EXCERPT #R5SGJR p. 2
  A misty, atmospheric scene featuring two figures in a pond, a stone path with lanterns, and large, gnarled trees. The scene is set in a traditional East Asian garden or temple grounds. In the foreground, two figures are wading through a shallow pond. One figure, dressed in dark traditional robes, holds a long staff or sword aloft. The other figure, also in traditional attire, is positioned slightly behind and to the side. The water is calm, reflecting the surrounding environment. To the left, a stone path leads up a gentle slope, lined with several glowing lanterns that cast a warm, golden light. The path is bordered by large, dark, gnarled trees with thick trunks and dense foliage. In the background, a misty hillside rises, dotted with more trees and a few distant lanterns. The overall mood is serene and mysterious, with a soft, hazy light filtering through the trees and mist. A misty, atmospheric scene featuring two figures in a pond, a stone path with lanterns, and large, gnarled trees.

EXCERPT #2ZPBP3 p. 3
  This is a painting of a winter landscape, heavily covered in snow. In the middle ground, a traditional Japanese wooden torii gate stands prominently. To its left, a small, partially snow-covered shrine building is visible. The foreground is filled with a dense layer of snow, interspersed with dark, thin blades of grass and some dried, brownish plant matter. The background shows rolling hills or mountains, also blanketed in snow, under a pale, overcast sky. The overall style is painterly, with visible brushstrokes and a soft, atmospheric quality. The color palette is dominated by whites and greys of the snow, with dark browns and blacks providing contrast in the vegetation and the wooden structure. A painting of a snowy landscape with a wooden torii gate and a small shrine building.

EXCERPT #T3ZEXV p. 4
  A scenic landscape featuring a dirt path leading through a field of white flowers and green grass towards a wooden torii gate. In the background, there are dense green trees, a red building, and snow-capped mountains under a clear blue sky. The foreground is dominated by a wide, light-brown dirt path that curves slightly to the right. On either side of the path are patches of tall, vibrant green grass. In the middle ground, a large field of small white flowers stretches across the landscape. A traditional Japanese wooden torii gate stands in the center of this field. Behind the gate, a dense forest of tall, slender evergreen trees rises. To the left of the trees, a large, leafy tree casts a shadow on the ground. In the far background, a red brick building is visible on a hillside, and beyond that, a range of mountains with significant snow cover. The sky is a clear, deep blue. A scenic landscape featuring a dirt path leading through a field of white flowers and green grass towards a wooden torii gate. In the background, there are dense green trees, a red building, and snow-capped mountains under a clear blue sky.

EXCERPT #39T7HC p. 5
  A digital rendering of a misty forest landscape. In the foreground, a lush green hillside covered in tall grass slopes upwards from the bottom left towards the center. Several tall, slender pine trees are scattered across the hillside, some standing alone and others in small groups. A thick layer of white mist or fog flows across the base of the hill and fills the lower right portion of the image, partially obscuring the ground and the lower branches of the trees. In the background, more pine trees are visible, some appearing as silhouettes against a bright, hazy sky. The overall atmosphere is serene and ethereal, with soft lighting and a cool color palette dominated by greens and whites. A misty forest landscape with tall pine trees and a grassy hillside.

EXCERPT #WJ6FTB p. 6

EXCERPT #Z59U9S p. 6

EXCERPT #K5QDAV p. 6
  • Compute shader • Data pipeline • Vertex shader • Pixel shader • Miscellaneous

EXCERPT #53PUZA p. 6
  An abstract, high-contrast, black and white image with a textured, painterly appearance. It features dark, vertical, brushstroke-like elements against a lighter, textured background, suggesting a stylized landscape or architectural structure. Abstract background image

EXCERPT #DQLFHB p. 7
  An aerial, high-angle view of a lush landscape. A dark blue river flows from the top center towards the bottom right, winding through a valley. The riverbanks are lined with dense forests of trees with vibrant golden-yellow foliage. In the upper left, a small wooden bridge crosses a tributary. To the left of the river, a dirt path winds through a green field, dotted with several large, dense clusters of small white flowers. In the background, misty mountains are visible under a soft, hazy sky. The overall atmosphere is serene and picturesque, suggesting an autumn or early spring setting. Aerial view of a river valley with golden trees and white flowers.

EXCERPT #TY5JFW p. 8
  A landscape photograph featuring a vibrant green field in the foreground, divided by a network of faint, light-colored lines. The field is bordered by a dense line of trees with bright yellow foliage. In the background, rolling hills and mountains are visible under a cloudy sky. A small, dark structure is nestled among the yellow trees on the right side. The overall scene is a mix of natural elements, with the green field and yellow trees providing a strong contrast to the darker background. A landscape with green fields, yellow trees, and mountains in the background.

EXCERPT #FTWM7U p. 9
  This image is a 3D visualization of a terrain map, likely generated from a digital elevation model (DEM). The terrain is represented by a color gradient where blue indicates lower elevations and red indicates higher elevations. A grid of rectangular blocks is overlaid on the terrain, with colors transitioning from blue in the foreground to green and then to red in the background. A river flows through the landscape, and a dense forest of yellow trees is visible on the right side. A small, dark-colored house is nestled among the trees. The sky is a clear blue with some light clouds. A 3D visualization of a terrain map with a color gradient from blue to red, overlaid with a grid of rectangular blocks. The terrain features a river, a forest of yellow trees, and a small house.

EXCERPT #ATM6TQ p. 10

EXCERPT #V5X9NV p. 10

SECTION #5PUTKY Placing a Grass Blade

EXCERPT #NH5PX4 p. 10
  • Turn lane ID into position on tile grid, jitter • Distance culling and frustum culling • Determine grass type and height from texture at position • Drop lanes that don't have grass • Occlusion culling

EXCERPT #LJ5QTJ p. 11
  A dense field of tall grass, viewed from a high angle. The foreground is dominated by a large, irregular patch of bright blue grass, which appears to be a different variety or perhaps dyed. This blue patch is surrounded by a thick carpet of green grass. The grass blades are long and thin, creating a textured, almost chaotic pattern. The lighting is even, highlighting the vibrant colors of the grass. A dense field of tall grass, with a large, irregular patch of bright blue grass in the foreground and surrounding areas of green grass.

EXCERPT #D99QNG p. 12
  A top-down view of a dense field of tall, thin grass. The majority of the grass is a vibrant yellow-green color. In the lower half of the image, there is a large, irregular patch of bright blue grass, which appears to be a different variety or perhaps a digital overlay. The grass blades are long and slender, creating a textured, almost chaotic pattern. The background grass is slightly more out of focus than the foreground patch. A dense field of tall grass with a large patch of blue grass in the foreground.

EXCERPT #3WMTH3 p. 13

EXCERPT #8M3FAF p. 13

SECTION #NF4YZX Generating a Grass Blade

EXCERPT #66DTCB p. 13
  • Position (3 floats) • Facing (2 floats) • Wind strength at position • Per-blade Hash • Grass Type • Clump facing (2 floats) • Clump color • Height • Width • Tilt • Bend • Side Curve

EXCERPT #QAQ7HN p. 14

EXCERPT #N76PZQ p. 14
  A vibrant, high-resolution digital landscape featuring a dense field of tall, green grass in the foreground. The grass blades are long and thin, with a slight wave to them, suggesting a gentle breeze. In the middle ground, a cluster of large, grey, craggy rocks sits on a slight rise. To the left of the rocks, a small, dark, rectangular structure, possibly a gazebo or a small building, is partially visible. The background is filled with a dense forest of tall, thin trees with green foliage. The sky is a clear, bright blue. The overall scene is a peaceful, naturalistic environment, likely a screenshot from a video game or a digital art rendering. A lush green field of tall grass with large grey rocks and a forest in the background.

EXCERPT #LVWCEP p. 15

EXCERPT #58UR78 p. 15

EXCERPT #4DUMUU p. 15
  The diagram shows a 2D grid with x and y axes ranging from 0 to 3. A central point at (1, 1) is labeled 'sample point'. Several arrows originate from this point and point to various colored dots scattered across the grid, representing different data samples or textures being accessed. The dots are colored blue, green, red, and purple. The arrows indicate the direction of sampling or data flow. Sample Color Approximate Coordinates (x, y) Blue (0.5, 2.5) Green (1.2, 2.5) Red (0.8, 0.8) Purple (1.8, 1.8) Red (2.3, 1.8) Purple (2.8, 2.2) Blue (1.8, 0.5) Green (2.8, 0.5) A 2D grid diagram illustrating a compute shader's sampling process. The grid has x and y axes from 0 to 3. A 'sample point' is marked at (1, 1). Arrows point from the sample point to various colored dots (blue, green, red, purple) scattered across the grid, representing different data samples or textures being accessed.

EXCERPT #L92SFN p. 16

EXCERPT #JS5SQP p. 16
  A vibrant, high-resolution digital landscape. The foreground is dominated by a dense field of tall, green grass that appears to be blowing in a breeze, creating a sense of movement. To the left, a cluster of large, grey, craggy rocks sits on a slight incline. A small, light-colored path or stream bed winds through the rocks and grass. In the background, a dense forest of tall, thin trees with green foliage stretches across the horizon. The sky is a clear, bright blue. The overall scene is a lush, naturalistic environment, likely a render from a video game or a digital art piece. A lush, green landscape with tall grass, large rocks, and a forest in the background.

EXCERPT #EW3XXE p. 17

EXCERPT #CPBZBW p. 17
  A vibrant, high-resolution digital landscape. The foreground is dominated by a dense field of tall, green grass that appears to be blowing in a breeze, creating a sense of movement. In the middle ground, several large, grey, craggy rocks are scattered across the terrain. To the left, a small, dark wooden structure, possibly a gazebo or a small shrine, is partially visible among the trees. The background is filled with a dense forest of tall, thin trees with green foliage. In the far distance, a mountain peak is visible under a clear blue sky. The overall scene is bright and sunny, with strong shadows cast by the rocks and trees. A lush, green landscape with tall grass, large rocks, and a forest in the background.

EXCERPT #6V8FY2 p. 18

EXCERPT #NCJDGQ p. 18
  A vibrant, high-resolution digital landscape. The foreground is dominated by a dense field of tall, green grass that appears to be blowing in a breeze, creating a sense of movement. To the left, a cluster of large, grey, craggy rocks sits on a slight incline. In the background, a dense forest of tall, thin trees with green foliage stretches across the horizon under a clear blue sky. A small, dark wooden structure, possibly a gazebo or a small building, is visible among the trees on the left. The overall scene is bright and sunny, with strong shadows cast by the rocks and trees. A lush, green landscape with tall grass, large rocks, and a forest in the background.

EXCERPT #8JAG9C p. 19

EXCERPT #AFGG6H p. 19
  A vibrant, high-resolution digital landscape. The foreground is dominated by a dense field of tall, green grass that appears to be blowing in a gentle breeze. To the left, a cluster of large, grey, textured rocks sits on a slight incline. A small, dark wooden structure, possibly a gazebo or a small shrine, is partially visible behind the rocks. In the background, a dense forest of tall, thin trees with green foliage stretches across the horizon. The sky is a clear, bright blue. The overall scene is a peaceful, naturalistic environment, likely a screenshot from a video game or a digital art render. A lush, green landscape with tall grass, large rocks, and a forest in the background.

EXCERPT #H5WQSG p. 20

EXCERPT #FH36C7 p. 20
  A vibrant, high-resolution digital landscape. The foreground is dominated by a dense field of tall, green grass that appears to be blowing in a breeze, creating a sense of movement. To the left, a cluster of large, grey, craggy rocks sits on a slightly elevated patch of land. A small, light-colored path or stream bed winds through the rocks and grass. In the background, a dense forest of tall, thin trees with green foliage stretches across the horizon. The sky is a clear, bright blue. The overall scene is a lush, naturalistic environment, likely a screenshot from a video game or a high-quality digital rendering. A lush, green landscape with tall grass, large rocks, and a forest in the background.

EXCERPT #NBQQDS p. 21

EXCERPT #2BM5VF p. 21

EXCERPT #VF26AF p. 21
  graph LR; C1[compute 1] --> BC[blade count]; BC --> C2[compute 2]; C2 --> IDA[indirect draw args]; C1 --> ID[instance data]; IDA --> V[vertex]; ID --> V; V --> P[pixel]; The diagram illustrates a data pipeline with the following components and flow: compute 1 (blue box) is the starting point. compute 1 outputs to blade count (gray box). blade count outputs to compute 2 (blue box). compute 2 outputs to indirect draw args (gray box). compute 1 also outputs directly to instance data (gray box). indirect draw args outputs to vertex (green box). instance data outputs to vertex (green box). vertex outputs to pixel (orange box). A data pipeline diagram showing the flow from compute 1 to pixel.

SECTION #YVU33M DATA PIPELINE

EXCERPT #E5W76B p. 22

EXCERPT #WFYYXB p. 22
  The diagram illustrates a data pipeline architecture. On the left, there are two vertical gray boxes, each labeled "instance data buffer". Arrows from these buffers feed into a series of four horizontal processing blocks. Each block is composed of four colored segments: a blue segment labeled "compute 1", a blue segment labeled "compute 2", a green segment labeled "vertex", and an orange segment labeled "pixel". The first block is connected to the top "instance data buffer". The second block is connected to the bottom "instance data buffer". The third block is connected to the top "instance data buffer". The fourth block is connected to the bottom "instance data buffer". The pipeline shows a staggered flow where data from both buffers is processed in parallel through the same sequence of stages. Diagram of a data pipeline showing two instance data buffers feeding into a sequence of compute and vertex/pixel stages.

EXCERPT #B7ZAVL p. 23

EXCERPT #M64NLC p. 23

EXCERPT #4TS8SV p. 23
  High LOD 15 vertices

EXCERPT #P4SXS7 p. 23
  A tall, thin, black wireframe tower structure standing on a green grassy field. The tower is composed of many small, interconnected triangles, creating a smooth, tapering silhouette. The background is a blurred, light-colored landscape. High LOD tower model

EXCERPT #AYX9GT p. 23
  Low LOD 7 vertices

EXCERPT #36KSRJ p. 23
  A tall, thin, black wireframe tower structure standing on a green grassy field. The tower is composed of a few large, interconnected triangles, creating a simplified, blocky silhouette. The background is a blurred, light-colored landscape. Low LOD tower model

EXCERPT #UXZ3HJ p. 24
  A tall, thin, black metal structure, possibly a marker or a small tower, stands vertically in the center of a field. The structure is composed of a central vertical pole with several horizontal rungs and diagonal bracing, forming a series of triangles. The ground is covered in green grass, interspersed with patches of dry, brownish-yellow grass and scattered dry leaves. The lighting is bright, casting a soft shadow of the structure onto the ground to its right. A tall, thin, black metal structure standing in a field of green grass and dry leaves.

EXCERPT #XJ4D3S p. 25

EXCERPT #LCYKS4 p. 25

EXCERPT #SZDQPA p. 25
  A diagram illustrating a vertex shader input. It consists of a 2x2 grid of blue squares. Each square contains a black dot in the bottom-left corner and a red 'X' in the top-right corner. This represents a 2x2 grid of vertices, where each vertex is defined by its position (black dot) and a texture coordinate (red 'X'). A 2x2 grid of blue squares, each containing a black dot and a red 'X'.

EXCERPT #XGLVH9 p. 25
  A diagram illustrating a vertex shader output. It consists of a single teal square. Inside the square, there are four black dots arranged in a 2x2 grid, representing the output vertices. This represents a single vertex, where the position is defined by the black dot. A single teal square containing four black dots.

EXCERPT #K5C9U9 p. 26

EXCERPT #87ZHJW p. 26

EXCERPT #6HZFWE p. 26
  High LOD 15 vertices

EXCERPT #BFBP58 p. 26
  A wireframe rendering of a sword hilt, showing a complex structure with 15 vertices. The hilt is positioned on a grassy ground. The wireframe is composed of white and black lines, highlighting the detailed geometry of the pommel, guard, and crossguard. High LOD wireframe model of a sword hilt.

EXCERPT #XDWR9Q p. 26
  Low LOD 7 vertices

EXCERPT #XS87D8 p. 26
  A wireframe rendering of the same sword hilt, but with a simplified geometry using only 7 vertices. The structure is much less detailed, appearing as a basic outline of the hilt's main components. The background is the same grassy ground. Low LOD wireframe model of a sword hilt.

EXCERPT #T7D67G p. 27

EXCERPT #8SW2UB p. 27

SECTION #M2AA9T Cubic Bezier curve

EXCERPT #DJSHKW p. 27
  • Position easy to calculate • Derivative easy to calculate • Use derivative to find normal • Moving control points changes blade shape • Useful for animation • Useful for varying appearance of grass

EXCERPT #8XDCU9 p. 28

EXCERPT #CKZ4TE p. 28

EXCERPT #WVHCE7 p. 28
  A graph illustrating a curve controlled by bend. The x-axis ranges from 0 to 10, and the y-axis ranges from 0 to 8. A blue curve starts at the origin (0,0) and ends at approximately (9, 9). A black dot marks the midpoint of the curve at approximately (3, 8.5), labeled "midpoint". An orange arrow points from the text "controlled by bend" to the curve, indicating the parameter that controls the curve's shape. x y 0 0 2 4 4 6.5 6 8 8 9 9 9 A graph illustrating a curve controlled by bend, with a midpoint marked.

EXCERPT #DCBZ7Z p. 29

EXCERPT #4F7CHH p. 29

EXCERPT #M4XPGF p. 29
  • Evaluate Bezier curve • Get normal orthogonal to facing • Step vertex in width direction • Evaluate Bezier derivative curve

EXCERPT #6BQUET p. 29
  The image shows a 3D perspective view of a textured surface, possibly a ground plane with a green and brown pattern. A black Bezier curve is drawn on the surface. A yellow arrow labeled "surface normal" points upwards from a vertex on the curve. A grey arrow labeled "Bezier derivative" points along the curve, indicating the direction of the derivative at that point. The curve is composed of several segments, and the derivative arrow is shown at one of the vertices. A 3D visualization of a Bezier curve on a textured surface, illustrating the calculation of a surface normal and a Bezier derivative.

EXCERPT #FZQAKK p. 30
  This image displays a 3D visualization of a point cloud or a mesh, likely generated from a depth sensor like a LiDAR scanner. The surface is represented by a grid of points or small squares, each colored according to its vertical position (height or depth). The color scheme follows a gradient: blue and purple for the lowest points, transitioning through green and yellow to red and orange for the highest points. The terrain features a prominent central depression or valley, with a small, dark, vertical object standing within it. The background is dark, suggesting a night-time scan or a lack of ambient light, with some faint outlines of trees or structures visible in the distance. A 3D visualization of a point cloud or mesh, colored by height or depth, showing a grid-like structure with a central depression.

EXCERPT #GZNPFP p. 32

EXCERPT #Q84AVP p. 32

EXCERPT #VLBK59 p. 32
  Flat normals

EXCERPT #B4X95N p. 32
  A blue sword is shown against a background of a colorful, noisy texture. The sword's surface is smooth and uniform in color, indicating that the normals are flat and do not vary across the surface. A blue sword with flat normals.

EXCERPT #WRDVWY p. 32
  Rounded normals

EXCERPT #HCM4VS p. 32
  A blue sword is shown against a background of a colorful, noisy texture. The sword's surface is smooth and uniform in color, indicating that the normals are rounded and do not vary across the surface. A blue sword with rounded normals.

EXCERPT #D22JJJ p. 33
  A low-angle, close-up shot of a vast field of tall, vibrant green grass. The blades are long and slender, some standing upright while others lean over, creating a dense, textured appearance. The grass fills the foreground and middle ground, extending to a flat horizon line. Above the horizon, the sky is a clear, uniform light blue, occupying the upper half of the frame. A single, long blade of grass is prominently featured in the upper left foreground, extending diagonally across the frame. The lighting is bright and even, suggesting a sunny day, with no visible shadows or clouds. A field of tall green grass under a clear blue sky.

EXCERPT #6SHMVA p. 34
  A low-angle, close-up view of a cornfield. The foreground is dominated by large, vibrant green corn leaves, some of which are slightly out of focus. The plants are densely packed, and their long, pointed leaves create a sense of depth and texture. In the background, the field stretches out to a flat horizon under a clear, bright blue sky. The lighting is bright and even, suggesting a sunny day. The overall composition emphasizes the lushness and growth of the crops. A dense field of green corn plants under a clear blue sky.

EXCERPT #27ESYZ p. 35
  A wide-angle photograph of a vast, flat agricultural field. The foreground and middle ground are filled with dense, green crops, likely corn or a similar grain, growing in neat rows. The plants are vibrant green and appear to be in the early stages of growth. The field extends to a straight, level horizon line. Above the horizon, the sky is a clear, pale blue, with a slight gradient from a lighter hue near the horizon to a slightly deeper blue at the top. The overall scene is bright and open, suggesting a sunny day in a rural or agricultural setting. A vast, flat field of green crops under a clear blue sky.

EXCERPT #MQX43N p. 36
  A wide-angle photograph of a vast, flat landscape covered in dense green vegetation, likely a field of tall grass or reeds. The vegetation is lush and green, with individual blades visible in the foreground. The field extends to a flat horizon line under a clear, pale blue sky. The lighting is bright and even, suggesting a sunny day. The overall composition is simple and emphasizes the expanse and uniformity of the natural environment. A vast, flat landscape covered in dense green vegetation under a clear blue sky.

EXCERPT #2H4SQN p. 37

EXCERPT #ZGFCXA p. 37

EXCERPT #Q3PEUX p. 37
  • Output material data to G buffers • Gloss- 1D texture • Diffuse- Two textures • 1D texture for vein • 2D texture for color and alternate colors • Translucency- Constant value • AO- Constant value

EXCERPT #ZLKMHB p. 37
  A vertical rectangular inset image showing a close-up of a textured surface, likely a tree trunk or bark. The texture is detailed with various shades of brown and tan, showing natural patterns and imperfections. A bright white vertical highlight or scratch runs down the center of the image, creating a strong contrast with the darker, textured background. A vertical rectangular inset showing a close-up of a textured surface, likely a tree trunk or bark, with a bright white vertical highlight or scratch running down the center.

EXCERPT #48UVGV p. 38
  A dense field of tall green grass with white feathery seed heads, likely a type of ornamental grass, growing in a field. The grass is illuminated by bright sunlight, creating strong highlights and shadows. The foreground shows the lower green blades of the grass, while the background is filled with the white seed heads. The lighting is bright, suggesting a sunny day, and the overall scene is a lush, natural landscape. A dense field of tall green grass with white feathery seed heads, likely a type of ornamental grass, growing in a field. The grass is illuminated by bright sunlight, creating strong highlights and shadows.

EXCERPT #XGFYHB p. 39
  A vibrant, high-quality digital landscape scene. The foreground is dominated by a vast field of white, daisy-like flowers with green foliage, stretching across the lower two-thirds of the frame. A narrow, light-brown dirt path winds through the field, starting from the left and curving towards the center. To the left of the path, a calm blue lake reflects the sky, bordered by a dense line of trees with bright yellow foliage. To the right, a lush green forest of tall, leafy trees stands on a gentle slope. In the background, a rocky, mountainous peak rises against a clear blue sky with a few wispy clouds. The overall scene is bright and colorful, suggesting a sunny day in a fantastical or idealized natural setting. A vibrant landscape scene featuring a field of white flowers in the foreground, a winding path, a lake, and a forest of yellow and green trees under a blue sky.

EXCERPT #FL25VE p. 40
  A screenshot of a rural landscape, likely from a video game. The foreground and middle ground are dominated by a large field of harvested rice stalks, arranged in neat rows. Several large, conical haystacks are scattered throughout the field. In the lower-left foreground, two white geese are visible, one standing and one partially submerged in a small pool of water. To the right, there is a dense, green vine-covered wall or fence. In the background, a dense forest of tall, thin trees (possibly bamboo or birch) stretches across the horizon. A small, white shrine-like structure with a thatched roof is visible on the left side of the background. Further back, a few traditional houses with thatched roofs are nestled on a hillside. The sky is clear and blue, with a few wispy clouds. The overall scene depicts a peaceful, rural setting during the harvest season. A screenshot of a rural landscape featuring a large field of harvested rice stalks arranged in rows. Several large, conical haystacks are scattered throughout the field. In the foreground, two white geese are visible. The background shows a dense forest of tall, thin trees, a small shrine-like structure, and a few traditional houses on a hillside under a clear blue sky.

EXCERPT #X6GRWL p. 41
  An aerial view of a lush, rocky landscape. A river flows through the center, surrounded by dense green forests and rocky terrain. In the foreground, a sandy beach meets the water, with three small, simple huts or structures built near the shore. The background features more rugged, rocky hills and a small, distant settlement or village. The scene is bathed in bright sunlight, creating strong shadows and highlighting the textures of the rocks, sand, and foliage. Aerial view of a lush, rocky landscape with a river, forest, and a small settlement on a sandy beach.

EXCERPT #KHL9MZ p. 42
  A samurai, seen from behind, stands in a field of tall green grass and white flowers. He is wearing dark armor with red lacing and a shoulder guard. He holds a sword in his right hand. The landscape is a vast field of white flowers, possibly a rice paddy, with a river flowing through it. In the background, there is a dense forest of green trees and a large, rocky mountain under a blue sky with some clouds. A small bridge is visible on the right side of the river. A samurai standing in a field of white flowers, looking out over a river and a forested landscape.

EXCERPT #HLWD6P p. 43
  This is a digital landscape rendering, likely from a video game. The scene is set in a coastal or marshy area. In the foreground, a dirt path leads from the bottom center towards the middle ground. The path is flanked by dense, tall grass with long, thin blades. The grass on the left has white, feathery seed heads, while the grass on the right is mostly green. The path itself is brown and shows some signs of wear and small puddles. In the middle ground, the path continues towards a body of water. On the far side of the water, there is a harbor or port area. Several large, traditional-looking sailing ships with multiple masts and sails are docked or anchored. The ships have a reddish-brown hull and white sails. In the background, there are more ships and some distant landmasses or mountains under a clear blue sky with a few wispy clouds. The overall lighting is bright, suggesting a sunny day. The image has a slightly stylized, high-quality digital art feel. A digital landscape rendering featuring a dirt path, tall grass, and a distant harbor with ships.

EXCERPT #PBBQBP p. 44
  A black and white photograph capturing a dense thicket of tall, slender grasses or reeds. The plants are clustered together, with their long, narrow leaves creating a complex, layered texture. The foreground is dominated by a large, bright white area, likely due to overexposure, which obscures the lower portions of the vegetation. The background also features a bright, washed-out section, suggesting a continuation of the field or a distant horizon. The overall composition emphasizes the verticality and density of the natural growth. A black and white photograph of a dense patch of tall grass or reeds, with a bright, overexposed area in the foreground and background.

EXCERPT #KDGDWP p. 45
  A black and white photograph capturing a dense cluster of tall, slender grasses or reeds. The plants are positioned on the left side of the frame, leaning slightly towards the right. Their long, narrow leaves create a complex, layered texture. The base of the plants meets a light-colored, sandy surface, which occupies the lower right portion of the image. Sharp, dark shadows are cast from the base of the grasses onto the sand, indicating a strong light source from the upper left. The background is a bright, featureless white, likely representing a body of water or a very bright sky, which contrasts sharply with the dark foliage and shadows. Black and white photograph of a dense clump of tall, thin grasses or reeds growing along a sandy bank, with shadows cast onto the sand.

EXCERPT #NCLCK5 p. 46
  A close-up, low-angle shot of a dense patch of green grass growing on a sandy, textured ground. The grass blades are long, narrow, and vibrant green, with some showing signs of being cut or broken. They are growing in a somewhat uniform, dense clump. The ground is a mix of light brown and tan sand, with visible ripples and small indentations, suggesting it might be a beach or a dune area. The lighting is bright, casting soft shadows from the grass onto the sand. The overall composition is simple, focusing on the texture and color of the natural elements. A close-up view of a dense patch of green grass growing on a sandy, textured ground.

EXCERPT #UZUZUU p. 47
  A scenic landscape featuring a river, a bridge, and a large, mossy rock formation in the foreground. The foreground is dominated by a large, light-colored rock formation with a flat top covered in green moss and patches of dry grass. The rock face is steep and shows signs of weathering. To the left, a river flows, its water reflecting the sky. In the background, a stone bridge with multiple arches spans the river. The surrounding area is lush with green grass and some trees, with shadows cast across the mossy rock surface. A scenic landscape featuring a river, a bridge, and a large, mossy rock formation in the foreground.

EXCERPT #L758GM p. 48
  This image captures a vibrant forest floor scene. The foreground and middle ground are dominated by a thick, undulating carpet of green ferns, their fronds creating a complex, textured pattern. Interspersed among the ferns are patches of reddish-brown soil and smaller, low-lying plants. In the lower-left corner, a clump of tall, thin grasses adds to the variety of vegetation. To the right, a large, weathered log lies horizontally across the fern-covered slope. The background is filled with tall, slender trees with light-colored bark, their trunks rising vertically towards a canopy of green leaves. Sunlight filters through the trees, casting soft, dappled shadows across the ferns and the forest floor, creating a sense of depth and tranquility. The overall color palette is rich with various shades of green, accented by the earthy reds of the soil and the warm tones of the tree trunks. A lush forest scene featuring a dense carpet of green ferns and other vegetation covering a sloping ground. Tall, slender trees stand in the background, and a fallen log lies on the right side. The scene is bathed in soft, dappled sunlight.

EXCERPT #ZWFGE5 p. 49

EXCERPT #HC8DCU p. 49

EXCERPT #QV9BGD p. 49
  A diagram consisting of a 2x4 grid of blue squares. Each square contains a single black dot in its center. The grid is divided into two columns and two rows by thin black lines. A 2x4 grid of blue squares, each containing a black dot.

EXCERPT #NRJDU9 p. 49
  A diagram consisting of a single large teal square. Inside the square, there are four black dots arranged in a 2x2 grid pattern, corresponding to the positions of the dots in the blue grid to its left. A large teal square containing four black dots.

EXCERPT #FYZTEA p. 50
  A digital rendering of a misty forest landscape. In the foreground, a lush green hillside covered in tall grass slopes upwards from the bottom left towards the center. Several tall, slender pine trees are scattered across the hillside, some standing alone and others in small groups. A thick layer of white mist or fog flows through the valley between the hills, partially obscuring the trees in the distance. In the background, more forested hills are visible under a pale, overcast sky. The overall atmosphere is serene and ethereal, with soft lighting and a cool color palette dominated by greens and blues. A misty forest landscape with tall pine trees and a grassy hillside.

EXCERPT #N9ZPJC p. 51
  THANKS

EXCERPT #6WTTVA p. 51
  Questions? @ericwoh

EXCERPT #GVY3YT p. 51
  A small red logo located in the bottom right corner of the slide. It consists of the letters 'SP' in a white, bold, sans-serif font, enclosed within a red rounded square border. Small red logo with the letters 'SP' inside a rounded square.

SECTION #8N9Y6H ACKNOWLEDGEMENTS

EXCERPT #TAZ7H2 p. 52
  The logo for GH5T, featuring the letters 'G', 'H', and 'T' in a bold, sans-serif font, with a circular icon containing a stylized upward-pointing arrow between the 'H' and 'T'. GH5T logo

EXCERPT #A3ELAM p. 52
  Jasmin Patry

EXCERPT #86P2J5 p. 52
  Bill Rockenbeck

EXCERPT #NJMP4S p. 52
  Adrian Bentley

EXCERPT #X5Y86N p. 52
  Matt Pohlmann

EXCERPT #LKBQRG p. 52
  Tom Low

EXCERPT #56VK9Z p. 52
  Dave Elder

EXCERPT #RQZ7B4 p. 52
  Joanna Wang

EXCERPT #YGM3CR p. 53
  WE ARE HIRING!

EXCERPT #2UXFY7 p. 53
  https://jobs.suckerpunch.com/

EXCERPT #AD6XBS p. 53
  A small red square logo with the letters 'SP' in white, located in the bottom right corner of the image. SP logo

EXCERPT #KLVCUA p. 54

EXCERPT #SZNVFD p. 54

EXCERPT #PV7QMM p. 54
  Outerra's 2012 blog post-

EXCERPT #HV8F3A p. 54
  https://outerra.blogspot.com/2012/05/procedural-grass-rendering.html

EXCERPT #J2DBVD p. 54
  A stylized, painterly illustration of a landscape with tall, thin, dark trees and a light, hazy sky. The style is reminiscent of traditional Chinese ink wash painting, with expressive brushstrokes and a muted color palette of greys, browns, and off-whites. The composition is vertical, with the trees dominating the foreground and middle ground, creating a sense of depth and scale.

DOCUMENT #GBXEP3
Realistic Modeling and Rendering of Plant Ecosystems

SECTION #8N9MC6 Abstract

EXCERPT #SZTQV9 p. 0
  Modeling and rendering of natural scenes with thousands of plants poses a number of problems. The terrain must be modeled and plants must be distributed throughout it in a realistic manner, reflecting the interactions of plants with each other and with their environment. Geometric models of individual plants, consistent with their positions within the ecosystem, must be synthesized to populate the scene. The scene, which may consist of billions of primitives, must be rendered efficiently while incorporating the subtleties of lighting in a natural environment.

EXCERPT #SJ2667 p. 0
  We have developed a system built around a pipeline of tools that address these tasks. The terrain is designed using an interactive graphical editor. Plant distribution is determined by hand (as one would do when designing a garden), by ecosystem simulation, or by a combination of both techniques. Given parametrized procedural models of individual plants, the geometric complexity of the scene is reduced by approximate instancing , in which similar plants, groups of plants, or plant organs are replaced by instances of representative objects before the scene is rendered. The paper includes examples of visually rich scenes synthesized using the system.

EXCERPT #JGZ9NQ p. 0
  CR categories: I.3.7 [Computer Graphics]: Three-Dimensional Graphics and Realism, I.6.3 [Simulation and Modeling]: Applications, J.3 [Life and Medical Sciences]: Biology.

EXCERPT #LNXMY2 p. 0
  Keywords: realistic image synthesis, modeling of natural phenomena, ecosystem simulation, self-thinning, plant model, vector quantization, approximate instancing.

DOCUMENT #GBXEP3
Realistic Modeling and Rendering of Plant Ecosystems

SECTION #YKN7AK 8 EXAMPLES

EXCERPT #2JQDZY p. 6
  We evaluated our system by applying it to create a number of scenes. In the examples presented below, we used two combinations of the modules: (i) ecosystem simulation and plant modeling using cpfg followed by rendering using rayshade or toro , and (ii) interactive specification of plant distribution using densedis in conjunction with plant generation using xfrog and rendering using fshade .

EXCERPT #BX6CPL p. 6
  Figure 7 presents visualizations of two stages of the self-thinning process, based on distributions shown in Figure 4. The plants represent hypothetical varieties of Lychnis coronaria [47] with red, blue, and white flowers. Plant size values returned by the ecosystem simulation were quantized to seven representative values for each plant variety. The quantized values were mapped to the age of the modeled plants. The scene obtained after 99 simulation steps had 16,354 plants. The rayshade file representing this scene without instancing would be 3.5 GB (estimated); with instancing it was 6.7 MB, resulting in the compression ratio of approximately 500:1. For the scene after 164 steps, the corresponding values were: 441 plants, 125 MB, 5.8 MB, compression 21:1.

EXCERPT #Q4T7Y9 p. 6
  The mountain meadow (Figure 8 top) was generated by simulating an ecosystem of eight species of herbaceous plants, as discussed in Section 5. The distribution of plants is qualitatively similar to that shown schematically in Figure 6, but it includes a larger number of smaller plants. The individual plants were modeled with a high level of detail, which made it possible to zoom in on this scene and view individual plants. The complete scene has approximately 102,522 plants, comprising approximately 2 \cdot 10^9 primitives (polygons and cylinders). The rayshade file representing this scene without instancing would be 200 GB (estimated), with the instancing it was 151 MB, resulting in a compression ratio of approximately 1,300:1.

EXCERPT #ZMTT6U p. 7
  Figure 7: Two images showing a field of Lychnis coronaria. The top image shows a dense field of small, bright yellow flowers with dark centers, growing in a field of green grass. The bottom image shows a similar field, but with a higher density of flowers, including some white and pink blossoms, and a more varied green foliage.

EXCERPT #P4GR3J p. 7
  Figure 7: A Lychnis coronaria field after 99 and 164 simulation steps

EXCERPT #C7KN8Y p. 7
  The time needed to model this scene on a 150 MHz R5000 Silicon Graphics Indy with 96 MB RAM was divided as follows: simulation of the ecosystem (25 steps): 35 min, quantization (two-dimensional parameter space, each of the 8 plant species quantized to 7 levels): 5 min, generation of the 56 representative plants using cpfg : 9 min. The rendering time using rayshade on a 180 MHz R10000 Silicon Graphics Origin 200 with 256 MB RAM (1024 × 756 pixels, 4 samples per pixel) was approximately 8 hours. (It was longer using toro , but in that case the rendering time did not depend critically on the amount of RAM.)

EXCERPT #K98S9P p. 7
  In the next example, the paradigm of parameterizing, quantizing, and instancing was applied to entire groups of plants: tufts of grass with daisies. The number of daisies was controlled by a parameter (Figure 9). The resulting lawn is shown in Figure 10. For this image, ten different sets of grass tufts were generated, each instanced twenty times on average. The total reduction in geometry due to quantization and instancing (including instancing of grass blades and daisies within the tufts) was by a factor of 130:1. In Figure 11, a model parameter was used to control the size of the heaps of leaves. The heap around the stick and the stick itself were modeled manually.

EXCERPT #VSW7YC p. 7
  Interactive creation of complex scenes requires the proper use of techniques to achieve an aesthetically pleasing result. To illustrate the process that we followed, we retrace the steps that resulted in the stream scene shown in Figure 15.

EXCERPT #JT49TV p. 7
  We began with the definition of a hilly terrain crossed by a little stream (Figure 2). To cover it with plants, we first created procedural models of plant species fitting this environment (Figure 12). Next, we extracted images representing the terrain altitudes and the stream position (Figures 13a and 13b) from the original terrain data. This

EXCERPT #HYBFFH p. 7
  Figure 8: A series of four images showing a mountain meadow. The top image is a wide shot of a lush green meadow with many small yellow and white flowers. The bottom-left image is a closer view of the same meadow, showing more detail of the flowers and grass. The bottom-right image is a very close-up view of a single white daisy flower with a yellow center, showing its petals and the surrounding green leaves.

EXCERPT #U42TWF p. 7
  Figure 8: Zooming in on a mountain meadow

EXCERPT #HWC2CL p. 7
  provided visual cues needed while painting plant distributions, for example, to prevent plants from being placed in the stream.

EXCERPT #YJMPD3 p. 7
  After that, we interactively chose a viewpoint, approximately at human height. With the resulting perspective view of the terrain as a reference, we painted a gray scale image for each plant species to define its distribution. We placed vegetation only in the areas visible from the selected viewpoint to speed up the rendering later on. For example, Figure 13c shows the image that defines the density distribution of stinging nettles. Since the stinging nettles grow on wet ground, we specified high density values along the stream. The density image served as input to densedis , which determined positions of individual plants. The dot diagram produced by densedis (Figure 13d) provided visual feedback that was used to refine the density image step by step until the desired distribution was found.

EXCERPT #6NC77U p. 8
  Two 3D models of grass tufts. The left model is a dense clump of green grass. The right model is a similar clump but includes several small white daisy flowers interspersed among the grass blades.

EXCERPT #83NWAZ p. 8
  Figure 9: Grass tufts with varying daisy concentrations

EXCERPT #ZYLHQQ p. 8
  A top-down view of a virtual lawn. The ground is covered with a dense field of small green grass tufts. Scattered throughout the grass are numerous small white daisy flowers and a few small yellow flowers.

EXCERPT #7L3G3L p. 8
  Figure 10: Lawn with daisies

EXCERPT #5KKNXB p. 8
  A top-down view of a virtual lawn covered with a thick layer of brown, autumn-colored leaves. The leaves are scattered over a green grassy surface, with some leaves showing more detail than others.

EXCERPT #3EBCEE p. 8
  Figure 11: Leaves on grass

EXCERPT #HYKNDF p. 8
  A 2x3 grid of images showing sample plant models. Top row: a green apple tree, a green stinging nettle plant, and a dandelion seed head. Bottom row: a green grass tuft, a green reed plant, and a yellow flower. The rightmost column shows the plants against a gray background.

EXCERPT #C63ZEL p. 8
  Figure 12: Sample plant models used in the stream scene. Top row: apple, stinging nettle, dandelion; bottom row: grass tuft, reed, yellow flower.

EXCERPT #P2V44X p. 8
  Four small images labeled a, b, c, and d showing the process of creating a distribution of stinging nettles. (a) is a grayscale heightmap of the covered area. (b) is a river image. (c) is a plant density distribution painted by the user. (d) is the resulting plant positions.

EXCERPT #2QSBMJ p. 8
  Figure 13: Creating distribution of stinging nettle: the heightmap of the covered area (a), the river image (b), the plant density distribution painted by the user (c), and the resulting plant positions (d).

EXCERPT #P47XYL p. 8
  Once the position of plants was established, we employed additional parameters to control the appearance of the plants. The vigor of stinging nettle plants, which affects the length of their stems and the number of leaves, was controlled using the density image for the nettles. To control the vigor of grass we used the height map: as a result, grass tufts have a slightly less saturated color on top of the hill than in the lower areas. Each tuft was oriented along a weighted sum of the terrain's surface normal vector and the up vector.

EXCERPT #35ASFY p. 8
  At this point, the scene was previewed and further changes in the density image were made until a satisfying result was obtained.

EXCERPT #TXZKPZ p. 8
  An OpenGL preview of a stream scene. The scene shows a stream flowing through a landscape with green grass, stinging nettle plants, and yellow flowers. In the background, there are rolling hills and a blue sky.

EXCERPT #PB6MQU p. 8
  Figure 14: OpenGL preview of the stream scene including stinging nettle and yellow flowers

EXCERPT #DHMWDZ p. 9
  A vibrant, high-resolution digital rendering of a lush stream scene. In the foreground, a dense field of green grass is interspersed with numerous small yellow dandelions and white dandelion seed heads. A small stream flows through the middle ground, bordered by tall green reeds and grass. Several large, leafy green trees stand in the background under a bright blue sky with soft white clouds. The scene is rendered with high detail and naturalistic lighting.

EXCERPT #T9MDAY p. 9
  Figure 15: Stream scene

EXCERPT #RWH9VN p. 9
  Figure 14 shows the preview of the distribution of stinging nettles and yellow flowers. To prevent intersections between these plants, the painted density image for the yellow flowers was multiplied by the inverted density image for the nettles.

EXCERPT #ZVD9Y4 p. 9
  The apple trees were placed by painting black dots on a white image. The final scene (Figure 15) was rendered using fshade . Images representing each species were rendered separately, and the resulting sub-scenes were composited as described in Section 7. The clouds were then added using a real photograph as a texture map. To increase the impression of depth in the scene, color saturation and contrast were decreased with increasing depth in a postprocessing step, and colors were shifted towards blue. Table 1 provides statistics about the instancing and geometric compression for this scene. The creation of this image took two days plus one day for defining the plant models. The actual compute time needed to synthesize this scene on a 195 MHz R10000 8-processor Silicon Graphics Onyx with 768MB RAM (1024 × 756 pixels, 9 samples per pixel) was 75 min.

EXCERPT #X4P2M2 p. 9
  Figures 16 and 17 present further examples of scenes with interactively created plant distributions. To simulate the effect of shadowing on the distribution of the yellow flowers in Figure 16, we rendered a top view of the spheres that approximate the shape of the apple trees, and multiplied the resulting image (further modified interactively) with the initial density image for the yellow flowers. We followed a similar strategy in creating Figure 17: the most impor-

EXCERPT #9RVKLJ p. 9
  tant trees were positioned first, then rendered from above to provide visual cues for the further placements. Table 2 contains statistics about the geometry quantization in Figure 17.

EXCERPT #K2J35M p. 9
  plant obj. inst. plant obj. inst. apple 1 4 grass tuft 15 2577 reed 140 140 stinging nettle 10 430 dandelion 10 55 yellow flower 10 2751

EXCERPT #ZPCUK3 p. 9
  Table 1: Number of prototype objects and their instances in the stream scene (Figure 15). Number of polygons without instancing: 16,547,728, with instancing: 992,216. Compression rate: 16.7:1.

EXCERPT #JG5R7K p. 9
  plant obj. inst. plant obj. inst. weeping willow 16 16 reed 15 35 birch 43 43 poppy 20 128 distant tree 20 119 cornflower 72 20 St. John's wort 20 226 dandelion 20 75 grass tuft 15 824

EXCERPT #G4RTWL p. 9
  Table 2: Number of prototype objects and their instances in the Dutch scene (Figure 17). Number of polygons without instancing: 40,553,029, with instancing: 6,737,036. Compression rate: 6.0:1

EXCERPT #VHNPR5 p. 10
  Figure 16: A detailed 3D rendering of a forest scene. It features several large, leafy trees with green foliage in the foreground and middle ground, set against a backdrop of a dense forest. The ground is covered in green grass and small yellow wildflowers. The lighting is bright, suggesting a sunny day.

EXCERPT #LUKGQC p. 10
  Figure 16: Forest scene

EXCERPT #BA7SX2 p. 10
  Figure 17: A 3D rendering of a Dutch landscape. It shows a wide, flat field of green grass with scattered yellow and white wildflowers. In the background, there are several tall, thin trees with green foliage, and a distant horizon under a pale blue sky.

EXCERPT #W9BYHV p. 10
  Figure 17: Dutch landscape

DOCUMENT #GBXEP3
Realistic Modeling and Rendering of Plant Ecosystems

SECTION #BTNVBC 9 CONCLUSIONS

EXCERPT #JE6RMQ p. 10
  We presented the design and experimental implementation of a system for modeling and rendering scenes with many plants. The central issue of managing the complexity of these scenes was addressed with a combination of techniques: the use of different levels of abstraction at different stages of the modeling and rendering pipeline, procedural modeling, approximate instancing, and the employment of space- and time-efficient rendering methods. We tested our system by generating a number of visually complex scenes. Consequently, we are confident that the presented approach is operational and can be found useful in many practical applications.

EXCERPT #HXC783 p. 10
  Our work is but an early step in the development of techniques for creating and visualizing complex scenes with plants, and the presented concepts require further research. A fundamental problem is the evaluation of the impact of quantization and approximate instancing on the generated scenes. The difficulty in studying this problem stems from: (i) the difficulty in generating non-instanced reference images for visual comparison purposes (the scenes are too large), (ii) the lack of a formally defined error metric needed to evaluate the artifacts of approximate instancing in an objective manner, and (iii) the difficulty in generalizing results that were obtained by the analysis of specific scenes. A (partial) solution to this problem would set the stage for the design and analysis of methods that may be more suitable for quantizing plants than the general-purpose variance-based algorithm used in our implementation.

EXCERPT #YGGPXX p. 10
  Other research problems exposed by our experience with EcoSys include: (i) improvement of the terrain model through its coupling with the plant population model (in nature vegetation affects terrain, for example by preventing erosion); (ii) design of algorithms for converting plant densities to positions, taking into account statistical properties of plant distributions found in natural ecosystems [66]; (iii) incorporation of morphogenetic plasticity (dependence of the plant shape on its neighbors [58]) into the multi-level modeling framework; this requires transfer of information about plant shapes between the population model and the procedural plant models; (iv) extension of the modeling method presented in this paper to animated scenes (with growing plants and plants moving in the wind); (v) design of methods for conveniently previewing scenes with billions of geometric primitives (for example, to select close views of details); and (vi) application of more faithful local and global illumination models to the rendering of plant scenes (in particular, consideration of the distribution of diffuse light in the canopy).

DOCUMENT #QHMFH2
Improved Alpha Testing Using Hashed Sampling

SECTION #42D4DE Abstract—

EXCERPT #DN4PKL p. 0
  We further describe and analyze the idea of hashed alpha testing from Wyman and McGuire [1], which builds on stochastic alpha testing and simplifies stochastic transparency. Typically, alpha testing provides a simple mechanism to mask out complex silhouettes using simple proxy geometry with applied alpha textures. While widely used, alpha testing has a long-standing problem: geometry can disappear entirely as alpha mapped polygons recede with distance. As foveated rendering for virtual reality spreads, this problem worsens as peripheral minification and prefiltering introduce this problem on nearby objects.

EXCERPT #N6QLYJ p. 0
  We first introduce the notion of stochastic alpha testing , which replaces a fixed alpha threshold of \alpha_\tau = 0.5 with a randomly chosen \alpha_\tau \in [0..1) . This entirely avoids the problem of disappearing alpha-tested geometry, but introduces temporal noise.

EXCERPT #S4F32B p. 0
  Hashed alpha testing uses a hash function to choose \alpha_\tau procedurally. With a good hash function and inputs, hashed alpha testing maintains distant geometry without introducing more temporal flicker than traditional alpha testing. We also describe how hashed alpha interacts with temporal antialiasing and applies to alpha-to-coverage and screen-door transparency. Because hashed alpha testing addresses alpha test aliasing by introducing stable sampling, it has implications in other domains where increased sample stability is desirable. We show how our hashed sampling might apply to other stochastic effects.

EXCERPT #7Y42YQ p. 0
  Index Terms —anisotropy, alpha map, alpha test, hash, hashed alpha test, stable shading, stochastic sampling.

DOCUMENT #QHMFH2
Improved Alpha Testing Using Hashed Sampling

SECTION #R5QF6K 11 RESULTS

EXCERPT #2CTYN8 p. 8
  We prototyped our hashed and stochastic alpha test in an OpenGL-based renderer using the Falcor prototyping library [22]. We did not optimize performance, particularly for stochastic alpha testing, as we sought stable noise rather than optimal performance. Timings include logic to explore variations to hashes, fade-in functions, and other normalization factors.

EXCERPT #6KK9DU p. 8
  Table 1 shows performance relative to traditional alpha testing, rendered at 1920 \times 1080 and using one shader for all surfaces, transparent and opaque. Our added overhead for hashed alpha testing is all computation, without additional texture or global memory accesses. Anisotropic hashed alpha testing increases costs, perhaps 10–20% over the isotropic variant, but with our limited timing precision and our test’s small overhead the timing runs were identical for both variants. Our stochastic alpha test prototype uses a random seed texture, requiring synchronization to avoid correlations from seed reuse. This causes a significant slowdown.

EXCERPT #84GS8U p. 8
  Cost varies with number, depth complexity, and screen coverage of alpha-mapped surfaces. At 1920 \times 1080 with one test per fragment, our hashed alpha test costs an additional 0.1 to 0.3 ms per frame for scenes with typical numbers of alpha-mapped fragments. For stochastic alpha testing, synchronization costs increase greatly in high depth complexity scenes.

EXCERPT #R4VEEB p. 8
  Figure 1 shows a game-quality head model with alpha-mapped hair billboards. With distance the hair disappears. This is most visible in his beard, as the underlying diffuse

EXCERPT #5HKJSG p. 8
  Figure 10: A comparison between traditional and hashed alpha testing with Castano’s precomputed per-mip modifications to texture alpha. (a) Traditional: shows a plant with thin, wispy branches. (b) Hashed: shows a plant with denser, more solid foliage. (c) Castano [8]: shows a plant with very dense, almost solid foliage.

EXCERPT #S27N4H p. 8
  Fig. 10: A comparison between traditional and hashed alpha testing with Castano’s precomputed per-mip modifications to texture alpha, which tends to enlarge thin geometry.

EXCERPT #3JRWT2 p. 8
  Figure 12: With alpha testing, tree leaves disappear with distance. Hashed alpha testing keeps these leaves, but nearby leaves have noisy edges and, due to alpha of 0.99, some internal noise. Fading in the hash contribution, per Section 7.1, keeps distant leaves without nearby noise. (a) Traditional: shows a tree with leaves that disappear with distance. (b) Hashed: shows a tree with leaves that disappear with distance, but with noisy edges. (c) Fade in hash: shows a tree with leaves that disappear with distance, but with noisy edges.

EXCERPT #F4KL2C p. 8
  Fig. 12: With alpha testing, tree leaves disappear with distance. Hashed alpha testing keeps these leaves, but nearby leaves have noisy edges and, due to alpha of 0.99, some internal noise. Fading in the hash contribution, per Section 7.1, keeps distant leaves without nearby noise.

EXCERPT #VH66CK p. 8
  texture has no hair painted on his chin. See the supplemental video for dynamic comparisons with this model.

EXCERPT #JDFJF8 p. 8
  Figure 9 shows similar comparisons on a number of artist-created tree models provided as samples by XFrog. These trees’ alpha maps contain 50–75% transparent pixels, causing foliage to disappear quickly when rendered in the distance or at low resolution. Hardware accelerated alpha-to-coverage has high layer-to-layer correlation that causes leaves to appear as a single layer and overly transparent. Hashed alpha testing and hashed alpha-to-coverage fix these problems and appear much closer to the ground truth, despite rendering at lower resolution.

EXCERPT #FMQJ3X p. 8
  In Figures 10 and 11, we compare hashed alpha against the widely used approach of Castano [8], which computes a per-mipmap alpha threshold and bakes this into the texture as a preprocess. This approach dilates distant geometry to keep it visible, giving an overly dense appearance on the thin leaves in Figure 10.

EXCERPT #QQJ4NV p. 8
  Figure 11 compares hashed alpha testing, 8 \times MSAA using hashed alpha-to-coverage, and both hashed techniques with temporal antialiasing. Interestingly using hashed alpha testing with TAA gives results largely similar to alpha-to-coverage, and temporally antialiased alpha-to-coverage is nearly indistinguishable from the ground truth.

EXCERPT #BS68MF p. 8
  Figure 12 shows a more complex example where hashed noise may be undesirable nearby and the fade-in from Section 7.1 maintains crisp edges near the viewer.

EXCERPT #CBU5BH p. 9

EXCERPT #WREZKC p. 9

EXCERPT #TGBUW5 p. 9
  A 4x5 grid of tree and plant models comparing different rendering techniques. The rows are labeled on the left: Bishop Pine Tree, Japanese Walnut, European Beech, and Potted Palm. The columns are labeled at the top: Traditional Alpha Test, Traditional Alpha-to-Coverage, Hashed Alpha Test, Hashed Alpha-to-Coverage, and Ground Truth. Each row shows five images of the corresponding plant model. The 'Traditional Alpha Test' column shows significant transparency artifacts where overlapping polygons are not properly blended. The 'Traditional Alpha-to-Coverage' column shows a more solid but less detailed appearance. The 'Hashed Alpha Test' and 'Hashed Alpha-to-Coverage' columns show improved detail and coverage compared to the traditional methods, though some noise is visible. The 'Ground Truth' column shows the final, most accurate representation of the plants.

EXCERPT #TFD9Y3 p. 9
  Fig. 9: Four plant models whose alpha-mapped polygons disappear with distance. This also happens when rendering at lower resolution (left four columns), which allows for better comparisons to our supersampled ground truth (right column). Notice how alpha testing loses alpha-mapped details and alpha-to-coverage introduces correlations that under represent final opacity where transparent polygons overlap. Both hashed alpha testing and hashed alpha-to-coverage largely retain appropriate coverage, but both introduce some noise.

EXCERPT #77DN4T p. 10

EXCERPT #4HN6RA p. 10

EXCERPT #Q2C7WC p. 10
  Figure 11: Comparing distant renderings of a bearded man using various techniques. The figure shows seven sub-images: (a) Ground truth, (b) Traditional, (c) Castano [8], (d) Hashed, (e) Hashed, TAA, (f) Hash A2C, and (g) A2C w/TAA. The renderings show a bearded man's head and shoulders from a three-quarter view. The ground truth is sharp, while the others show varying degrees of aliasing and noise.

EXCERPT #YY4CEF p. 10
  Fig. 11: Comparing distant renderings of the bearded man using various techniques, including a ground truth sorted blend, traditional alpha testing, Castano’s tweaks to texture alpha values, as well as hashed alpha testing and hashed alpha-to-coverage (both with and without temporal antialiasing).

EXCERPT #WHM5VH p. 10
  Figure 13: Difference images from before and after a sub-pixel translation along the x-axis. (a) Traditional alpha test shows significant aliasing and noise. (b) Hashed alpha test shows a more stable, noisy result. (c) Stochastic alpha test shows a very noisy, almost white result. The images are inverted for better visibility.

EXCERPT #RUY74L p. 10
  Fig. 13: Difference images from before and after a sub-pixel translation along the x -axis using a (a) traditional alpha test, (b) hashed alpha test, and (c) stochastic alpha test. Difference images inverted for better visibility.

EXCERPT #VYSM6T p. 10
  Figure 14: A synthetic example with a checkerboard texture. (a) traditional alpha test, (b) isotropic hashed alpha, (c) anisotropic hashed alpha, (d) 8x isotropic alpha-to-coverage, and (e) 8x anisotropic alpha-to-coverage. The images show a checkerboard pattern with varying levels of aliasing and noise.

EXCERPT #G4D4R8 p. 10
  Fig. 14: A synthetic example, with a checkerboard texture where half the texels have \alpha = 0 and half have \alpha = 1 . We compare (a) traditional alpha testing, (b) isotropic hashed alpha, (c) anisotropic hashed alpha, (d) 8\times isotropic alpha-to-coverage, and (e) 8\times anisotropic alpha-to-coverage.

EXCERPT #FN4W4G p. 10
  Figure 13 compares the temporal stability of traditional, hashed, and stochastic alpha testing under slight, sub-pixel motion. Note that under the same sub-pixel motion hashed alpha testing exhibits temporal stability roughly equivalent to traditional alpha testing. Stochastic alpha testing and methods that do not anchor noise or discretize it to pixel scale exhibit significantly more instability.

EXCERPT #56Z6AP p. 10
  Figure 14 shows a synthetic example of a planar checkerboard texture containing half opaque and half transparent texels. In this case, alpha testing does not disappear with distance but aliases. Hashed alpha testing replaces this aliasing with noise, and using MSAA-based alpha-to-coverage

EXCERPT #LBAHXT p. 10
  Figure 15: Two foveated images. (a) Traditional alpha test shows a yellow circle highlighting a region where foliage disappears due to low resolution shading. (b) Hashed alpha test shows the same region where foliage remains visible, maintaining its aggregate appearance.

EXCERPT #TPLNFV p. 10
  Fig. 15: Two foveated images, as per Patney et al. [23]. In both, the viewer looks towards the curtains (yellow circle). Regions outside the circle use progressively lower quality. Low resolution shading uses coarser mipmap levels, causing traditional alpha tests to fail. With hashed alpha testing, the foliage maintains its aggregate appearance.

EXCERPT #VQNWGB p. 10
  converges to a desired uniform gray in the distance.

EXCERPT #DSDSKE p. 10
  Beyond use for distant or low-resolution alpha-mapped geometry, other applications exist for hashed alpha testing. In head-mounted displays for virtual reality, rendering at full resolution in the user’s periphery is wasteful, especially as display resolutions increase. Instead, foveated rendering [24] uses at lower resolution away from a user’s gaze. Patney et al. [23] suggest prefiltering all rendering terms, but they were unable to support alpha testing due to an inability to prefilter the results. Naive alpha testing in foveated rendering causes even nearby foliage to disappear in the periphery (see Figure 15). With temporal antialiasing, hashed alpha testing enables use of alpha mapped geometry in foveated renderers.

EXCERPT #M6M6P6 p. 10
  Figure 16 shows hashed alpha testing in a more complex environment. Results are more subtle as scene scale is small enough to minimize the pixels accessing coarse mipmaps.

DOCUMENT #QHMFH2
Improved Alpha Testing Using Hashed Sampling

SECTION #ZW8XY9 12 CONCLUSIONS

EXCERPT #K2GSPB p. 10
  We introduced the idea of stochastic or hashed alpha testing to address the problem of alpha-mapped geometry disappearing with distance. Stochastic alpha testing uses a random \alpha_r rather than a fixed threshold of 0.5. To address the temporal noise stochastic introduces, we proposed a procedural hash to provide a stable noise threshold.

EXCERPT #JJP5E5 p. 10
  We obtained stable, pixel scale noise by hashing on discretized object-space coordinates at two scales. We showed how to ensure the interpolated hash value maintains a uniform distribution, how to maintain sample quality in the presence of anisotropy, and how hashed alpha testing works with temporal antialiasing. We demonstrate temporal stability both in Figure 13 and the accompanying video. And we suggested how this stable sampling scheme could extend to other stochastic light transport effects. We provided inline code to replicate our hashed test.

EXCERPT #YLD8EB p. 11

EXCERPT #WPHKE2 p. 11

EXCERPT #VX96QC p. 11
  Figure 16: Disappearing geometry in San Miguel. Two side-by-side images showing a scene with a fountain and trees. Red boxes highlight areas where geometry disappears or flickers. (a) Traditional alpha test shows more flickering than (b) Hashed alpha test.

EXCERPT #68RGEF p. 11
  (a) Traditional alpha test (b) Hashed alpha test Fig. 16: Disappearing geometry in San Miguel.

EXCERPT #WJ5H97 p. 11
  Thinking about alpha-to-coverage and screen door transparency in the context of varying \alpha_r provides insights, showing them all to be different discrete sampling strategies for transparency: alpha test and alpha-to-coverage perform regular sampling, screen-door transparency interleaves samples, stochastic alpha testing randomly samples, and hashed alpha testing uses quasi-random sampling via a uniform hash function.

EXCERPT #7YRB9A p. 11
  While our hashed test provides spatially and temporally stable noise without scene-dependent parameters, we did not explore the space of 2D and 3D hash functions to see which minimizes flicker between frames. Additionally, using more sophisticated hash inputs than object-space coordinates may generalize over a larger variety of highly instanced scenes. Both areas seem fruitful for future work.

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #TEDEY5 Topics

EXCERPT #37YLNF p. 3
  • Simulation • Shading • Creation • Shadow Casting • Summary

EXCERPT #SZCZX5 p. 3
  A screenshot from the game Horizon Zero Dawn. The scene depicts a lush, hilly landscape with a dirt path leading through tall grass and small shrubs. Several trees with dense foliage are scattered across the hillside. In the background, a small wooden structure, possibly a watchtower or a small house, is visible on a distant peak. The sky is filled with dramatic, orange-hued clouds, suggesting a sunset or sunrise. The overall atmosphere is serene and naturalistic. A screenshot from the game Horizon Zero Dawn showing a lush, hilly landscape with a dirt path, several trees, and a small wooden structure in the background under a dramatic, cloudy sky.

EXCERPT #9JU7YV p. 3

EXCERPT #XBNMHH p. 4
  Introduction

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #9TYLT2 Simulation

EXCERPT #HGHE6B p. 8
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #Z8KYPZ p. 9
  Simulation

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #NZT45Z Making Foliage Move

EXCERPT #7EWJXS p. 9
  All Movement is driven by a Global Wind Force Field

EXCERPT #B58SLG p. 9
  • Compute Shader: around 150 microseconds • Local Around the Player / Camera • Baked-in Physical Properties • Supports up to 4 Different Categories of Spring Settings

EXCERPT #5W3D88 p. 9
  A large, detailed tree with green foliage and a thick, gnarled trunk, standing on a patch of dry, yellowish-brown grass and low-lying plants. To the left of the tree is a smaller, bushy plant. The background is a bright, hazy sky with distant blue hills visible on the horizon. A large, detailed tree with green foliage and a thick, gnarled trunk, standing on a patch of dry, yellowish-brown grass and low-lying plants. To the left of the tree is a smaller, bushy plant. The background is a bright, hazy sky with distant blue hills visible on the horizon.

EXCERPT #6WME3Y p. 9

EXCERPT #GM7ZL3 p. 10
  Scene fields enabled Enable turbulence Enable flow Show flow field vectors Click vector field at camera Show flow field probes Main Probes Flow Curves Main Probes with 3D Particle Cam Look Modes Scene Forward Cascade Scene Near Cascade Scene Mid Cascade Scene Far Cascade Scene Forward Solver Scene Detail Solver Scene Grass Solver Scene Hair Solver Scene Tree Solver Scene Visualization Scale Slider Scale 0.963 5.0000000e+000 Scene Visualization Scale 0.963 5.0000000e+000 Scene Size 5.0000000e+000 Enable Autoacceleration Replay speed multiplier 1.40 Scene Acceleration Factor 25.00 Replay speedup 9.47

EXCERPT #MPFSX5 p. 11
  Simulation

SECTION #7EWEMB Making Foliage Move

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #CZ5EA6 Categories of Spring Settings:

EXCERPT #7WP4PA p. 11
  • Trees • Vegetation_Shader • Plants • Vegetation_Shader • Grasses • Vegetation_Grass_Shader • Special • Sampled by Banners, Tarps, Canvas, etc.

EXCERPT #YJ4WPC p. 11
  A 3D rendered landscape featuring a large, leafy tree and a smaller bush on a grassy hill. The scene is set against a bright, hazy sky. The ground is covered with various types of grass and small plants, some of which are highlighted with a yellowish glow. The overall aesthetic is that of a high-quality video game environment. A 3D rendered landscape featuring a large, leafy tree and a smaller bush on a grassy hill, illustrating the result of the foliage simulation.

EXCERPT #QSZVXY p. 11

EXCERPT #RGZLV7 p. 12
  A screenshot from the video game Horizon Zero Dawn showing a dense forest of tall, slender trees with vibrant yellow and orange autumn foliage. The scene is captured from a low angle, looking up at the canopy. The background is slightly hazy, suggesting a misty or overcast day. The overall aesthetic is highly detailed and visually appealing, characteristic of the game's art style.

SECTION #258E34 Trees and Plants

EXCERPT #2NFQR2 p. 12
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #TTMGZV p. 13
  Simulation

SECTION #T6PRQR Vertex Program: Trees

EXCERPT #LL82L4 p. 13
  Three Levels of Motion

EXCERPT #URH96C p. 13
  A detailed 3D rendering of a large, mature tree, likely a cedar or similar species, with a thick, gnarled trunk and a dense, rounded canopy of green foliage. The tree is set against a light gray background with a subtle geometric pattern. The foliage is rendered with a high level of detail, showing individual needles and branches. A detailed 3D rendering of a large, mature tree with a thick, gnarled trunk and a dense, rounded canopy of green foliage. The tree is set against a light gray background with a subtle geometric pattern.

EXCERPT #J4P6AT p. 13

EXCERPT #Z7W6WW p. 14
  Simulation

SECTION #X2P7C7 Vertex Program: Trees

EXCERPT #SCVKEX p. 14
  Three Levels of Motion:

EXCERPT #GY4NHT p. 14
  • Tree Movement (Bend) • Height of the Object

EXCERPT #BWYXQW p. 14
  A 3D rendered tree with a dark, textured trunk and a dense, green, feathery canopy. A thick yellow arrow points vertically upwards from the base of the trunk to the top of the canopy, illustrating the 'Height of the Object' mentioned in the text. A 3D rendered tree with a yellow arrow indicating height.

EXCERPT #JHYNE7 p. 14

EXCERPT #QRZMBK p. 15
  Simulation

SECTION #MCYTHX Vertex Program: Trees

EXCERPT #7PSY8G p. 15
  Three Levels of Motion:

EXCERPT #8CW588 p. 15
  • Tree Movement (Bend) • Height of the Object • Branch Movement • Distance to Trunk

EXCERPT #ME7C7W p. 15
  A 3D rendered tree with a dark brown trunk and branches, and dense green foliage. A yellow arrow points from the trunk towards the left side of the canopy, illustrating the concept of branch movement or bending. A 3D rendered tree with a dark brown trunk and branches, and dense green foliage. A yellow arrow points from the trunk towards the left side of the canopy, illustrating the concept of branch movement or bending.

EXCERPT #AQKKBU p. 15

EXCERPT #RGGDKW p. 16
  Simulation

SECTION #YLAJVL Vertex Program: Trees

EXCERPT #CHJPCH p. 16
  Three Levels of Motion:

EXCERPT #4G9QBW p. 16
  • Tree Movement (Bend) • Height of the Object • Branch Movement • Distance to Trunk • Leaf Movement • Distance to Branch

EXCERPT #WLDDWQ p. 16
  A 3D rendered tree with a black trunk and branches, and bright red foliage. A yellow arrow points to a branch on the left side of the tree. A 3D rendered tree with a black trunk and branches, and bright red foliage. A yellow arrow points to a branch on the left side of the tree.

EXCERPT #PM3UTV p. 16

EXCERPT #YPERZ2 p. 17
  Simulation

SECTION #5RLYFV Vertex Program: Trees

EXCERPT #6SDNSN p. 17
  Three Levels of Motion:

EXCERPT #EX7BBK p. 17
  • Tree Movement (Bend) • Height of the Object • Branch Movement • Distance to Trunk • Leaf Movement • Distance to Branch • Other Data • Index / Offset

EXCERPT #6QE2HW p. 17
  A stylized, vibrant green tree with a thick trunk and dense foliage, rendered against a light gray background with a subtle geometric pattern. The tree has a main trunk that splits into several branches, each covered in dense, bright green leaves. The overall shape is somewhat rounded and bushy. The background is a light gray with a faint, repeating geometric pattern of triangles. A stylized, vibrant green tree with a thick trunk and dense foliage, rendered against a light gray background with a subtle geometric pattern.

EXCERPT #TV8W2L p. 17

EXCERPT #UMA4KM p. 18
  Simulation

SECTION #7VEUX8 Vertex Program: Trees

EXCERPT #WAZ4DW p. 18
  Three Levels of Motion:

EXCERPT #FFEFHZ p. 18
  • Tree Movement (Bend) • Height of the Object • Branch Movement • Distance to Trunk • Leaf Movement • Distance to Branch • Other Data • Index / Offset • Baked Ambient Occlusion

EXCERPT #X892NX p. 18
  A high-quality 3D render of a tree, likely from the game Horizon Zero Dawn. The tree has a thick, textured trunk that splits into several main branches. The foliage is dense and consists of many small, needle-like or leaf-like structures, giving it a realistic appearance. The tree is positioned on the right side of the slide, with its trunk extending towards the bottom center. The background is a light gray with a subtle, repeating geometric pattern of triangles. A detailed 3D rendering of a large, leafy tree with a thick trunk and many branches, set against a light gray background with a subtle geometric pattern.

EXCERPT #RAN3YG p. 18

EXCERPT #SUT5J9 p. 19
  Simulation

SECTION #XVFHTY Vertex Program: Trees

EXCERPT #CEEHG6 p. 19
  • Sample from our Global Wind at Object Center • Drives the Bend of the Tree • Rigidity • Drives the Bend of the Branches • Bend • Sway • Lift • The length of the Sampled Force drives a tiny 3D Simplex Noise Texture (16x16x16) that we use for the motion of our Leaves. • Amount

EXCERPT #PDSFD8 p. 19
  A 3D rendering of two trees on a small island, demonstrating the results of a simulation. The trees have thick, gnarled trunks and dense green foliage. The island is covered with low-lying green shrubs and tall, dry grass. The background is a light, hazy sky. The entire scene is set against a light gray background with a subtle geometric pattern. A 3D rendering of two trees on a small island, demonstrating the results of a simulation.

EXCERPT #PJ42MG p. 19

EXCERPT #8LQPN3 p. 20
  Simulation

SECTION #S92KH2 Vertex Program: Plants

EXCERPT #KR8GCD p. 20
  • (Most) Plants: Remove Bend • Ramp – Soft Clamp Formula: • f(x) = (x * (\text{amount} + 1)) / (x + \text{amount})

EXCERPT #7FYXMP p. 20
  A graph illustrating the Ramp – Soft Clamp Formula. The x-axis and y-axis both range from 0 to 1, with major grid lines at 0, 0.5, and 1. A straight black line represents the identity function f(x) = x . A smooth, red curve represents the function f(x) = (x * (\text{amount} + 1)) / (x + \text{amount}) . The curve starts at the origin (0,0), rises above the identity line, and asymptotically approaches the value 1 as x approaches 1. The curve is concave down, showing a smooth transition from 0 to 1. Graph of the Ramp – Soft Clamp Formula

EXCERPT #JPHVRF p. 20
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #3C29WF p. 20
  A 3D rendering of a desert landscape featuring two large, gnarled trees with dense green foliage. The trees are surrounded by low-lying green bushes and patches of dry, yellowish grass. The ground is sandy and light-colored. The background is a bright, hazy sky, suggesting a vast, open environment. 3D rendering of a desert landscape with trees and bushes

EXCERPT #G7XERP p. 21
  A stylized logo in the top-left corner, consisting of two white chevrons pointing right, set against a dark background. Stylized logo consisting of two white chevrons pointing right, set against a dark background.

SECTION #FDNGMJ Grasses

EXCERPT #U79ALF p. 21
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #GPB934 p. 22
  Simulation

SECTION #CXM7PA Vertex Program: Grass

EXCERPT #4S57JQ p. 22
  Grass has three LODs:

EXCERPT #2EPGKS p. 22
  • LOD1 • 20-36 triangles • High shader • LOD2 • 10-18 triangles • High shader • LOD3 • 10-18 triangles • Low shader

EXCERPT #5P3U5Q p. 22
  The image displays three pairs of visualizations for grass at different levels of detail (LODs). Each pair consists of a rendered grass tuft and its corresponding wireframe mesh. The first pair on the left represents LOD1, showing a dense, realistic grass tuft and a complex wireframe mesh with many overlapping planes. The middle pair represents LOD2, showing a slightly less dense tuft and a simpler wireframe mesh with fewer planes. The third pair on the right represents LOD3, showing a sparse tuft and a very simple wireframe mesh with a minimal number of planes. The wireframes are colored in blue and green, and the rendered grass is green. Three pairs of images showing grass at different LODs. Each pair consists of a rendered grass tuft and its corresponding wireframe mesh. The first pair (left) shows LOD1 with a dense, realistic grass tuft and a complex wireframe mesh. The second pair (middle) shows LOD2 with a slightly less dense tuft and a simpler wireframe mesh. The third pair (right) shows LOD3 with a sparse tuft and a very simple wireframe mesh.

EXCERPT #CGMH3Z p. 22

EXCERPT #EEFZ3T p. 23
  Simulation

SECTION #NDVV5L Vertex Programs: Making Grass Move

EXCERPT #VVZHD9 p. 23
  • Our Global Wind

EXCERPT #TSZCKF p. 23
  A large, detailed image of a grassy field, likely from the game Horizon Zero Dawn. The grass is rendered with a high level of detail, showing individual blades in various shades of green and yellow, suggesting a simulation of wind and light. The image is positioned on the right side of the slide, partially overlapping the white background. A close-up, high-resolution image of a grassy field, showing individual blades of grass in shades of green and yellow, illustrating the result of the simulation.

EXCERPT #M694SM p. 23

EXCERPT #DV2X2V p. 24
  Simulation

SECTION #3ZT5Q6 Vertex Programs: Making Grass Move

EXCERPT #T3MY6R p. 24
  • Our Global Wind • Ambient Motion • Large Scale Motion:

EXCERPT #J3C3LF p. 24
  x = (2 * Sin (1 * (ObjectCenterX + ObjectCenterY + ObjectCenterZ + Time))) + 1 y = (1 * Sin (2 * (ObjectCenterX + ObjectCenterY + ObjectCenterZ + Time))) + 0.5 z = 0

EXCERPT #VEJU3B p. 24

EXCERPT #MZAG5D p. 25
  Simulation

SECTION #3RQF7M Vertex Programs: Making Grass Move

EXCERPT #D8PLSN p. 25
  • Our Global Wind • Ambient Motion • Large Scale Motion:

EXCERPT #ZYM2DV p. 25
  x = (2 * Sin (1 * (ObjectCenterX + ObjectCenterY + ObjectCenterZ + Time))) + 1 y = (1 * Sin (2 * (ObjectCenterX + ObjectCenterY + ObjectCenterZ + Time))) + 0.5 z = 0

EXCERPT #NKUFHV p. 25
  • Small Scale Motion:

EXCERPT #H2VF5H p. 25
  Disp = (0.065 * Sin (2.650 * (PointWX + PointWY + PointWZ + Time))) * NormalObject * (1, 1, 0.35)

EXCERPT #4M86SG p. 25

EXCERPT #BA7NNH p. 25
  A close-up, low-angle view of a dense field of tall, golden-brown grass. The grass is rendered with a grid overlay, suggesting a vertex program or simulation. The lighting is warm, creating a golden glow on the blades.

EXCERPT #MK2U5P p. 26
  Simulation

SECTION #NVESGB Vertex Programs: Making Grass Do More

EXCERPT #S4FRKD p. 26
  • On top of the motion, we also add: • Camera Based Tilting

EXCERPT #ZF6ASV p. 26
  Disp = [Vec3 (0, 1, 0) View to Object Space] * ObjectPosZ

EXCERPT #RTSM9E p. 26
  A character from the game Horizon Zero Dawn is shown in profile, walking towards the right. She is wearing her signature blue and brown tribal-style armor. To her right is a patch of tall, dark grass. A red wireframe bounding box is drawn around the grass, and a red line extends from the top of the box, pointing towards the top right corner of the frame, illustrating the concept of camera-based tilting. A character from Horizon Zero Dawn walking past a patch of grass, with a red wireframe bounding box and a red line indicating camera-based tilting.

EXCERPT #B72M6R p. 26

EXCERPT #ZQDMR7 p. 27
  Simulation

SECTION #JVVVCU Vertex Programs: Making Grass Do More

EXCERPT #BK53C4 p. 27
  • On top of the motion, we also add: • Camera Based Tilting

EXCERPT #4NPKAE p. 27
  Disp = [Vec3 (0, 1, 0) View to Object Space] * ObjectPosZ

EXCERPT #83XE5P p. 27
  A character from the game Horizon Zero Dawn, Aloy, is shown in profile, standing on a flat surface. To her right is a patch of grass. The grass is rendered with black blades and is enclosed within several overlapping red wireframe boxes. A red line extends from the top of the grass area towards the top right corner of the frame, illustrating the camera-based tilting effect mentioned in the text. A character from Horizon Zero Dawn standing next to a patch of grass with red bounding boxes.

EXCERPT #E2ZLE7 p. 27

EXCERPT #XCLDX7 p. 28
  Simulation

SECTION #43G49Z Vertex Programs: Making Grass Do More

EXCERPT #94NR6C p. 28
  • On top of the motion, we also add: • Ground Hugging

EXCERPT #AL7HTY p. 28
  Disp = (0, 0, ([Sampled Height from Height map] - ObjectCenterZ))

EXCERPT #98GHYU p. 28

EXCERPT #KR9EWG p. 29
  Simulation

SECTION #FSRQ8J Vertex Programs: Making Grass Do More

EXCERPT #JUVVDE p. 29
  • To facilitate better Lodding, over distance :

EXCERPT #8VWZJV p. 29
  • we scale the whole animation part down

EXCERPT #UUL95W p. 29
  Displacement = [Percentage of All Animation] based on Distance to Camera

EXCERPT #3YLA7U p. 29
  • we vertically push the vertices of the mesh down

EXCERPT #FH7HUR p. 29
  Displacement = [Percentage of Object Height] based on Distance to Camera

EXCERPT #G2PWTE p. 29
  A close-up, high-resolution view of a grassy field, showing individual blades of grass in detail. The grass is green and appears to be blowing in the wind, creating a sense of movement and texture. The image is positioned on the right side of the slide, partially overlapping the white background.

EXCERPT #HBCRDY p. 29

EXCERPT #M7EVDE p. 30
  The Guerrilla Games logo, a stylized 'G' composed of three chevron-like shapes, is located in the top-left corner of the slide. Guerrilla Games logo

EXCERPT #YEU6BU p. 30
  A screenshot from the video game Horizon Zero Dawn showing a dense forest. Tall, slender trees with thick, textured bark and lush green foliage dominate the scene. Sunlight filters through the canopy, creating dappled light and long shadows on the forest floor. The image is overlaid with a faint, light-gray triangular grid pattern. Forest scene from Horizon Zero Dawn

SECTION #ZB9PQG Shading – Alpha

EXCERPT #5JZ8Z7 p. 30
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #PUUVWU p. 31
  Shading

SECTION #4UJQLS Pixel Program: Alpha

EXCERPT #9XAPQV p. 31
  • Depth Only Pass: • Very Cheap Depth Only Shader • Geometry Pass: • Depth Compare (Depth is Equal) • Zero percent Overdraw!

EXCERPT #BHQNHV p. 31
  A stylized, high-contrast image of a dense forest or jungle, rendered in a dark, almost black color scheme. The image is overlaid with a complex, light-colored geometric pattern of interconnected triangles, creating a mesh-like effect over the foliage. The scene is viewed from a low angle, looking up into the canopy of tall, thin trees.

EXCERPT #89Y454 p. 31

EXCERPT #SUVREW p. 32
  A dense forest scene featuring tall, slender trees with thick, textured bark. The trees are covered in lush green ivy, particularly on the left and right sides. The foliage is dense and vibrant green, with some leaves showing a golden-yellow hue, suggesting a late summer or autumn setting. Sunlight filters through the canopy, creating a warm, golden glow and casting long, dappled shadows on the forest floor. The ground is covered in a thick layer of green grass and low-lying plants. In the background, more trees are visible, some with lighter-colored bark, and a soft blue sky peeks through the branches. The overall atmosphere is serene and natural. A dense forest scene with tall, slender trees and thick foliage, illuminated by warm, golden light filtering through the canopy.

SECTION #XZDE58 Scalpel GPU Profiler

EXCERPT #5LQKHF p. 33
  GPU Profile 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 0 Events placement Frame 10 / 10 GPU Profile timeline showing various rendering stages like Depth, Geometry, Shadows, Lighting, Post-process, and AA. A red bar highlights a specific stage in the timeline.

SECTION #3JPF3T Draw Hierarchy / Samplers / Render targets / Render state / Shader state

EXCERPT #3HF682 p. 33
  Name Triangles Tris/Pixel Cycles/Pixel Instances DrawCalls Geometry 11.675% 0.00% 1,201,591 0.00 0.00 15,152 1,649 Shadows 9.858% 0.00% 576,726 0.00 0.00 7,614 949 Depthprime 9.670% 0.00% 957,091 0.00 0.00 14,284 1,355

EXCERPT #CANGBU p. 33
  21.345 %

SECTION #S4F3RD Legend

EXCERPT #GHVTHZ p. 33
  Pan Area ALT + Mouse Drag Zoom Area Mouse Drag Zoom Bar DoubleClick Zoom All CTRL + DoubleClick Packet to TTY/Clipboard RMB on Packet Record Hold Space Scrub Frame Left/Right Live View ESC

SECTION #GZGJ4G Selection

EXCERPT #DAVDDG p. 33
  Same name Ctrl + Hover Same name + context Ctrl + Shift + Hover

SECTION #6TDX24 Table controls

EXCERPT #6PY8X6 p. 33
  Row select Up/Down Page skip PgUp/PgDown First/Last row Home/End Column select Tab Use item Enter Expand all CTRL + Enter Collapse all ALT + Enter Print table T Save to file D

SECTION #RM7MAN Scalpel GPU Profiler

EXCERPT #3TXC77 p. 34
  GPU Profile 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 0 Events placement Frame 10/10

EXCERPT #E94QGC p. 34
  GPU Profile timeline showing various rendering stages across 38 frames. The timeline is divided into segments for Geometry, Deferred, Geo, Defer, Ac, Sha, Shad, S, Low res clouds, Cloud compute, Light, Defer, Post, Post process, C, Fp, Co, Fp, Post pr, and Post. A red bar highlights the first 10 frames, indicating a specific time range of interest.

SECTION #BQTL6Y Draw Hierarchy / Samplers / Render targets / Render state / Shader state

EXCERPT #U44R27 p. 34
  Name Triangles Tris/Pixel Cycles/Pixel Instances DrawCalls Geometry 45.560% 0.000% 1,296,684 0.00 0.00 15,938 1,645 Shadows 10.853% 0.000% 597,924 0.00 0.00 7,981 1,145

EXCERPT #JCMJN7 p. 34
  45.560 %

SECTION #JB7378 Legend

EXCERPT #UCCKU5 p. 34
  Pan Area ALT + Mouse Drag Zoom Area Mouse Drag Zoom Bar DoubleClick Zoom All CTRL + DoubleClick Packet to TTY/Clipboard RMB on Packet Record Hold Space Scrub Frame Left/Right Live View ESC

SECTION #K69M9B Selection

EXCERPT #J9DLQN p. 34
  Same name Ctrl + Hover Same name + context Ctrl + Shift + Hover

SECTION #JXYTFK Table controls

EXCERPT #G2FUWL p. 34
  Row select Up/Down Page skip PgUp/PgDown First/Last row Home/End Column select Tab Use item Enter Expand all CTRL + Enter Collapse all ALT + Enter Print table T Save to file D

EXCERPT #Y38LTR p. 35
  Shading

SECTION #JG85A7 Pixel Program: Alpha

EXCERPT #A7AJHE p. 35
  Alpha Testing, Initial HZD setup:

EXCERPT #LGSVA3 p. 35
  • Alpha Textures are Signed Distance Textures • Artists controlled size in Shader • Artists controlled over Distance Quality • Snow(flakes) in our Shader adjusted the Alpha

EXCERPT #9S78GU p. 35
  A 3D rendered bush with green leaves and a shadow, demonstrating the result of alpha testing. The bush is positioned in the lower center of the slide, casting a soft shadow on the ground. A 3D rendered bush with green leaves and a shadow, demonstrating the result of alpha testing.

EXCERPT #CAH8UF p. 35
  A signed distance alpha texture showing a complex, branching pattern, likely representing a snowflake or a similar natural phenomenon. The texture is displayed in a square frame with a grid overlay. An orange label at the bottom right reads "SIGNED DISTANCE ALPHA TEXTURE". A signed distance alpha texture showing a complex, branching pattern.

EXCERPT #X3CTPU p. 35

EXCERPT #A4YJS9 p. 36
  A close-up, high-angle shot of a dense carpet of ferns. The majority of the ferns are a vibrant green, with their fronds showing a distinct pinnate structure. In the lower-left foreground, there is a cluster of ferns that have turned a deep brown or tan color, indicating they are dried or dead. The lighting is soft and directional, coming from the upper left, which creates subtle highlights on the green fronds and casts gentle shadows, adding depth to the texture of the foliage. The background is a continuation of the green ferns, slightly out of focus, creating a sense of a vast, undisturbed natural space. A dense field of green ferns with some brown, dried leaves in the foreground.

SECTION #CD68QM Scalpel GPU Profiler

EXCERPT #2F5UPP p. 37
  EPU Profile 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 0 Events Depthprime Geometry Deferred Light Shadows Sh Lighting Post Post process Post pr Post Back DepthOnly Deferred App ShadowCasc Sh Deferred_lgt Sh Sunlight Sh Sunlight rend. Angular V. AI Cascad A. L. L. Frame 10 / 10 castor Draw Hierarchy Samplers Render targets Render state Shader state Name Shadows 8.958% 0.00% 1,483,264 0.00 0.00 4,554 59 Geometry 7.354% 0.00% 968,006 0.00 0.00 9,175 19 Depthprime 6.161% 0.00% 968,006 0.00 0.00 9,175 35 DepthOnly 6.161% 0.00% 968,006 0.00 0.00 9,175 35 levels 6.161% 0.00% 968,006 0.00 0.00 9,175 35 worlds 6.161% 0.00% 968,006 0.00 0.00 9,175 35 world 6.161% 0.00% 968,006 0.00 0.00 9,175 35 tiles 6.161% 0.00% 968,006 0.00 0.00 9,175 35 tile_x-06_y-05 6.161% 0.00% 968,006 0.00 0.00 9,175 35 placement 6.161% 0.00% 968,006 0.00 0.00 9,175 35 Placement_Castor_Bean_Plant_b001_c001_L1_lodstub 2.234% 0.00% 266,326 0.00 0.00 122 7 Placement_Castor_Bean_Plant_b001_c001_L4_lodstub 1.281% 0.00% 207,060 0.00 0.00 2,958 8 Placement_Castor_Bean_Plant_b001_c001_L3_lodstub 1.173% 0.00% 246,308 0.00 0.00 886 6 Placement_Castor_Bean_Plant_b001_c001_L2_lodstub 1.002% 0.00% 208,608 0.00 0.00 246 5 Placement_Castor_Bean_Plant_b001_c001_L5_lodstub 0.471% 0.00% 39,704 0.00 0.00 4,963 9 Legend Pan Area ALT + Mouse Drag Zoom Area Mouse Drag Zoom Bar DoubleClick Zoom All CTRL + DoubleClick Packet to TTY/Clipboard RMB on Packet Record Hold Space Scrub Frame Left/Right Live View ESC Selection Same name Ctrl + Hover Same name + context Ctrl + Shift + Hover Table controls Row select Up/Down Page skip PgUp/PgDown First/Last row Home/End Column select Tab Use Item Enter Expand all CTRL + Enter Collapse all ALT + Enter Print table T Save to file D

EXCERPT #42998C p. 38
  Scalpel GPU Profiler BPU Profile 2 Frame 10 / 10 The GPU Pipeline Profiler shows a sequence of rendering stages from 1 to 38. A red circle highlights the 'Depthprime' stage at position 27. Name % Triangles % Tris/Pixel Cycles/Pixel Instances DrawCalls Geometry 7.36% 0.00% 968,006 0.00 9,175 35 Shadows 7.06% 0.00% 1,483,264 0.00 4,554 59 Depthprime 5.06% 0.00% 968,006 0.00 9,175 35   DepthOnly 5.06% 0.00% 968,006 0.00 9,175 35     levels 5.06% 0.00% 968,006 0.00 9,175 35       world 5.06% 0.00% 968,006 0.00 9,175 35         tiles 5.06% 0.00% 968,006 0.00 9,175 35           tile_x-06_y-05 5.06% 0.00% 968,006 0.00 9,175 35             placement 5.06% 0.00% 968,006 0.00 9,175 35               Placement_Castor_Bean_Plant_b001_c001_l1_lddstub 1.677% 0.000% 265,326 0.00 122 7               Placement_Castor_Bean_Plant_b001_c001_l4_lddstub 1.210% 0.000% 207,060 0.00 2,958 8               Placement_Castor_Bean_Plant_b001_c001_l3_lddstub 0.934% 0.000% 246,308 0.00 886 6               Placement_Castor_Bean_Plant_b001_c001_l2_lddstub 0.753% 0.000% 208,608 0.00 246 5               Placement_Castor_Bean_Plant_b001_c001_l5_lddstub 0.485% 0.000% 39,704 0.00 4,963 9 Legend Pan Area ALT + Mouse Drag Zoom Area Mouse Drag Zoom Bar DoubleClick Zoom All CTRL + DoubleClick Packet to TTY/Clipboard RMB on Packet Record Hold Space Scrub Frame Left/Right Live View ESC Selection Same name Ctrl + Hover Same name + context Ctrl + Shift + Hover Table controls Row select Up/Down Page skip PgUp/PgDn First/Last row Home/End Column select Tab Use item Enter Expand all CTRL + Enter Collapse all ALT + Enter Print table T Save to file GPU Pipeline Profiler showing various stages like Geometry, Shadows, Lighting, etc., with a red circle highlighting the Depthprime stage.

EXCERPT #WVZVPJ p. 39
  Shading

SECTION #DT7AR5 Pixel Program: Alpha

EXCERPT #9QVCY3 p. 39
  Alpha Testing, Solution:

EXCERPT #WZDZZW p. 39
  • No more adjusting the Alpha in the Shader! • 'Custom Coverage' Algorithm to build a better Mip Chain: • Calculate coverage of the input image (after alpha testing). • Generate a regular Mip-chain. • For each Mip: • Generate a histogram of this Mip after bilinear up sampling. In our case to 4096x4096. • Find the point P in the histogram that corresponds to the original coverage. • Scale the pixels by 0.5 / P so that P ends up at our alpha testing value of 0.5.

EXCERPT #ER5AAV p. 39
  A 3D rendered bush with green leaves and a shadow, illustrating the result of the alpha testing solution. A 3D rendered bush with green leaves and a shadow, illustrating the result of the alpha testing solution.

EXCERPT #PCH5BL p. 39
  A grayscale image showing a complex, branching pattern, likely representing a signed distance alpha texture. A grayscale image showing a complex, branching pattern, likely representing a signed distance alpha texture.

EXCERPT #AJTT4N p. 39
  SIGNED DISTANCE ALPHA TEXTURE

EXCERPT #PH7Y8F p. 39

EXCERPT #KQE9TX p. 40
  A horizontal sequence of six images showing a mipmap chain. The first image on the left is a high-resolution, detailed grayscale render of a dense, branching plant structure. As the images progress from left to right, the resolution decreases, showing increasing levels of blurring and loss of fine detail, which is characteristic of a standard mipmap chain. Regular MIP-CHAIN of our SDF ALPHA

EXCERPT #CXEQXS p. 40
  Regular MIP-CHAIN of our SDF ALPHA

EXCERPT #YBUYCJ p. 40
  A horizontal sequence of six images showing a mipmap chain after a thresholding operation. The first image on the left is a high-resolution, detailed white-on-black render of the same plant structure. As the images progress from left to right, the resolution decreases. However, the images remain significantly sharper than the standard mipmap chain, with the white structures of the plant clearly visible against the black background even at lower resolutions, indicating that the thresholding operation has preserved the binary information. Regular MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #7V45VX p. 40
  Regular MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #JLANCQ p. 40

EXCERPT #9E22KC p. 41
  A horizontal sequence of six grayscale images showing a mipmap chain. The first image is a high-resolution, detailed view of a dense, branching plant structure. As the images progress from left to right, the resolution decreases, showing increasing levels of blurring and loss of fine detail, characteristic of a standard mipmap chain. Regular MIP-CHAIN of our SDF ALPHA

EXCERPT #RFZ6UW p. 41
  Regular MIP-CHAIN of our SDF ALPHA

EXCERPT #H9X85E p. 41
  A horizontal sequence of six grayscale images showing a mipmap chain after a threshold operation. The first image is a high-resolution, detailed view of a dense, branching plant structure. As the images progress from left to right, the resolution decreases, showing increasing levels of blurring and loss of fine detail, characteristic of a standard mipmap chain. Regular MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #C7CCAN p. 41
  Regular MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #2B8JMA p. 41
  A horizontal sequence of six grayscale images showing a scaled mipmap chain. The first image is a high-resolution, detailed view of a dense, branching plant structure. As the images progress from left to right, the resolution decreases, showing increasing levels of blurring and loss of fine detail, characteristic of a standard mipmap chain. Scaled MIP-CHAIN of our SDF ALPHA

EXCERPT #2RT5DK p. 41
  Scaled MIP-CHAIN of our SDF ALPHA

EXCERPT #UV5AQT p. 41
  A horizontal sequence of six grayscale images showing a scaled mipmap chain after a threshold operation. The first image is a high-resolution, detailed view of a dense, branching plant structure. As the images progress from left to right, the resolution decreases, showing increasing levels of blurring and loss of fine detail, characteristic of a standard mipmap chain. Scaled MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #549A5B p. 41
  Scaled MIP-CHAIN of our SDF ALPHA after THRESHOLD = 0.5

EXCERPT #4ZR3R7 p. 41

EXCERPT #BBWBA3 p. 42
  Shading

SECTION #VD4449 Pixel Program: Alpha

SECTION #9ZGYVL Alpha Testing Optimization:

EXCERPT #ZR6WEZ p. 42
  • Make the Alpha fit in Cache! • In our case, Small Assets and Grass

EXCERPT #EWYQCH p. 42
  A small, square texture image showing a repeating pattern of stylized grass blades. The pattern is composed of dark, wavy lines on a lighter background, creating a dense, textured appearance. A 256x128 pixel Alpha Texture showing a repeating pattern of stylized grass blades.

EXCERPT #HS6SR6 p. 42
  256x128 pixel Alpha Texture

EXCERPT #YL7A9H p. 42
  • Need really good Anti-Aliasing!

EXCERPT #GFZ5JX p. 42
  A large, detailed view of a grassy field, showing the result of the Alpha Testing Optimization and Anti-Aliasing. The field is composed of many small, stylized grass blades, creating a dense, textured appearance. The grass is green with some brown patches, and the overall effect is a realistic-looking field of grass. A large, detailed view of a grassy field, showing the result of the Alpha Testing Optimization and Anti-Aliasing.

EXCERPT #FKLNYF p. 42

EXCERPT #82G9U2 p. 43

SECTION #NVPV6U Anti-Aliasing

EXCERPT #YYEPBW p. 43
  SIGGRAPH 2017

EXCERPT #F3YDTQ p. 43
  Giliam de Carpentier - Guerrilla Games

EXCERPT #WKT5L2 p. 43
  Kohei Ishiyama - Kojima Productions

EXCERPT #9V3LZS p. 43
  Decima Engine: Advances in Lighting and AA

EXCERPT #EK7L4Z p. 43
  • Typically 4 Samples in total • Always two Samples per rendered pixel per frame • At most 1 millisecond per frame at 1080 / PS4

EXCERPT #XJRFBN p. 43

EXCERPT #4J53SZ p. 44
  Stylized logo consisting of two white chevrons pointing right on a black background.

EXCERPT #L72URW p. 44
  A composite image showing various stages of vegetation shading in a winter forest. The main image is a realistic scene with snow-covered trees and ground. Overlaid on the right are several semi-transparent rectangular panels showing different rendering techniques: a grayscale depth map, a wireframe view of the trees, a color-coded normal map, and a wireframe view of the ground vegetation.

SECTION #RLC25Z Shading

EXCERPT #LFMYH2 p. 44
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #2864ZY p. 45
  Shading

SECTION #28BQGN Pixel Program: G-Buffers

EXCERPT #N9GDY2 p. 45
  Our Vegetation Shaders write to Geometry Buffers:

EXCERPT #SYSTC2 p. 45
  • Normal • Albedo • Roughness • Reflectance • Translucency Amount • Translucency Diffusion • Depth • Motion Vectors - (if placed by the Placement System)

EXCERPT #DSLQFC p. 45
  A vertical stack of four images showing different G-buffer outputs for a forest scene. From top to bottom: 1. A grayscale image of a forest with a large rock, showing depth or distance. 2. A grayscale image of the same forest, showing a different G-buffer output, possibly normal or albedo. 3. A colorful image of the forest floor, showing a dense layer of grass and small plants, with colors ranging from blue to red, likely representing a depth or height map. 4. A grayscale image of the forest floor, showing a different G-buffer output, possibly normal or albedo. A vertical stack of four images showing different G-buffer outputs for a forest scene. From top to bottom: 1. A grayscale image of a forest with a large rock, showing depth or distance. 2. A grayscale image of the same forest, showing a different G-buffer output, possibly normal or albedo. 3. A colorful image of the forest floor, showing a dense layer of grass and small plants, with colors ranging from blue to red, likely representing a depth or height map. 4. A grayscale image of the forest floor, showing a different G-buffer output, possibly normal or albedo.

EXCERPT #HV46B4 p. 45

SECTION #E4HXXB Shading

SECTION #KEY88P Pixel Program: Vegetation Textures

SECTION #ZJZ5VC Vegetation Textures:

EXCERPT #KUETFS p. 46
  • Alpha • Tangent Space Normal • Albedo • Translucency Amount • Mask • Ambient Occlusion • Not on Grass!

EXCERPT #YEP8MZ p. 46
  The screenshot displays the TextureSetTool interface. On the left, a preview window shows a grid of texture thumbnails. Below it, the 'Texture Set Info' panel shows 'Original Size: 725 KB', 'Compressed Size: 725 KB', 'Maya Texture Set Object: TextureSet3', and 'Mip Mode: Wrap'. The 'Settings' panel on the right lists various texture properties with their paths and settings. The 'Merged Texture Set Info' table at the bottom right provides a summary of the texture set's components. R G B A Format Dimension Normal Normal AO Mask BC7 512 x 512 Color Color Color Translucency_Amo... BC7 512 x 512 Alpha BC4U 256 x 256 Screenshot of the TextureSetTool interface showing settings for a vegetation texture set.

EXCERPT #CPSLMX p. 46

SECTION #AFKMK8 Shading

SECTION #BS6F8P Pixel Program: Vegetation Textures

SECTION #KZSEET Vegetation Textures:

EXCERPT #W9M23E p. 47
  • Alpha • Tangent Space Normal • Albedo • Translucency Amount • Mask • Ambient Occlusion • Not on Grass!

SECTION #2QAL8Y Get packed into:

EXCERPT #SEZC7P p. 47
  • BC7: NMT / MSK / AO • BC7: CLR / TRA • BC4: ALPHA

EXCERPT #ZPH5WV p. 47
  The screenshot shows the TextureSetTool interface with the following details: Settings: Name: castor_bean_plant_b001_set Path: IP:\Assets\Work_Files\models\eco_assets\herbs\castor_bean_plant\textures\castor_bean_plant Textures: Color: D:\Dev\HRZZ\NIP\Assets\Work_Files\models\eco_ass... (Active, 512x512, RGB, Default) Alpha: jan_plant\textures\castor_bean_plant_b001_ALPHA.ped (512x256, R, BC4) Normalmap: D:\Dev\HRZZ\NIP\Assets\Work_Files\models\eco_ass... (512x512, RGB, Normal_Low) Reflection: (Browse, R, Default) Ambient Occlusion: D:\Dev\HRZZ\NIP\Assets\Work_Files\models\eco_ass... (512x512, R, Default) Roughness: (Browse, R, Default) Heightmap: (Browse, R, Default) Mask: D:\Dev\HRZZ\NIP\Assets\Work_Files\models\eco_ass... (512x512, R, Default) Mask Alpha: (Browse, A, Default) Incandescence: (Browse, RGB, Default) Translucency Diffusion: (Browse, R, Default) Translucency Amount: D:\Dev\HRZZ\NIP\Assets\Work_Files\models\eco_ass... (512x512, R, Default) Misc 01: (Browse, R, Default) Texture Set Info: Original Size: 725 KB Compressed Size: (blank) Maya Texture Set Object: TextureSet3 Mip Mode: Wrap Work_Files Path: D:\Dev\HRZZ\NIP\Assets\Work_Files Game_Assets Path: D:\Dev\HRZZ\NIP\Assets\Game_Assets Merged Texture Set Info: R G B A Format Dimension Normal Normal Normal AO Mask BC7 512 x 512 Color Color Color Color Translucency_Amo... BC7 512 x 512 Alpha BC4U 256 x 256 Buttons: Start Edit Extension Editor, Batch Re-Export Preview: Original, Original Zoom, Compressed Zoom, Diff Screenshot of the TextureSetTool interface showing texture settings for 'castor_bean_plant_b001_set'.

EXCERPT #96EY9T p. 47

EXCERPT #JC4AVQ p. 48
  Shading

SECTION #V8LJSD Pixel Program: Normals

EXCERPT #379Y2C p. 48
  Our Normals, when Rendered Double Sided are:

EXCERPT #VQRGEN p. 48
  • Flipped Correctly in Tangent Space • Most Plants, lots of Small Trees, most Pine Trees

EXCERPT #UMKZDD p. 48
  A 3D rendered palm tree with a slender trunk and several fronds. The fronds are green on the outer edges and have a brownish-orange underside, demonstrating double-sided shading. The tree is positioned on a light gray surface, casting a soft, dark shadow to its right. The background is a light gray with a subtle geometric pattern of triangles. A 3D rendered palm tree with double-sided normals.

EXCERPT #58B39N p. 48

EXCERPT #MSYL9N p. 49
  Shading

SECTION #P9SP93 Pixel Program: Normals

EXCERPT #2NRWBB p. 49
  Our Normals, when Rendered Double Sided are:

EXCERPT #XVTYM6 p. 49
  • Flipped Correctly in Tangent Space • Most Plants, lots of Small Trees, most Pine Trees

EXCERPT #3QAEZG p. 49
  A stylized, double-sided rendered plant with vibrant purple, blue, and green foliage. The plant has a thin, light blue stem and branches that spread outwards. The leaves are elongated and pointed, with a mix of colors. The plant is casting a dark, stylized shadow on the ground to its right. The background is a light gray with a subtle geometric pattern of triangles. A stylized, double-sided rendered plant with vibrant purple, blue, and green foliage, casting a shadow on the ground.

EXCERPT #689P7N p. 49

EXCERPT #RZ7BV8 p. 50
  Shading

SECTION #49U8HT Pixel Program: Normals

EXCERPT #MU86RA p. 50
  Our Normals, when Rendered Double Sided are:

EXCERPT #4XR8AT p. 50
  • Flipped Correctly in Tangent Space • Most Plants, lots of Small Trees, most Pine Trees • Flipped 'Incorrectly' • Adjusted Vertex Normals • Abs() the Z components of our Viewspace Normal • Grass and most of our Trees Canopies

EXCERPT #EQP5FV p. 50
  A large, detailed evergreen tree, likely a cedar or similar species, with a thick, gnarled trunk and a dense, rounded canopy of green needles. The tree is rendered with double-sided normals, showing a realistic shadow on the ground below it. The background is a light blue sky with a subtle geometric pattern. A large, detailed evergreen tree with a thick, gnarled trunk and a dense, rounded canopy of green needles. The tree is rendered with double-sided normals, showing a realistic shadow on the ground below it.

EXCERPT #WDVH8P p. 50

EXCERPT #XNU9BT p. 51
  Shading

SECTION #EXJ6GV Pixel Program: Normals

EXCERPT #9WA952 p. 51
  Our Normals, when Rendered Double Sided are:

EXCERPT #P4J827 p. 51
  • Flipped Correctly in Tangent Space • Most Plants, lots of Small Trees, most Pine Trees • Flipped 'Incorrectly' • Adjusted Vertex Normals • Abs() the Z components of our Viewspace Normal • Grass and most of our Trees Canopies

EXCERPT #9X4BGB p. 51
  A 3D rendering of a tree with a semi-transparent canopy. The tree's trunk is dark brown and textured. The canopy is composed of many small, overlapping surfaces. The front-facing surfaces of the canopy are covered with green normal vectors, while the back-facing surfaces are covered with purple normal vectors. This visualizes the concept of double-sided shading, where both the front and back of a surface are visible and shaded. The tree is set against a light gray background with a subtle geometric pattern. A 3D rendering of a tree with a semi-transparent canopy, showing green normal vectors on the front and purple normal vectors on the back, illustrating double-sided shading.

EXCERPT #PX2J2H p. 51

EXCERPT #6XX4Q9 p. 52
  Shading

SECTION #QN8SA5 Pixel Program: Normals

EXCERPT #8QG3N9 p. 52
  Our Normals, when Rendered Double Sided are:

EXCERPT #9DB3R5 p. 52
  • Flipped Correctly in Tangent Space • Most Plants, lots of Small Trees, most Pine Trees • Flipped 'Incorrectly' • Adjusted Vertex Normals • Abs() the Z components of our Viewspace Normal • Grass and most of our Trees Canopies

EXCERPT #XUKY8C p. 52
  A 3D rendered tree with a thick, textured trunk and a dense, rounded canopy. The canopy is composed of many small, leaf-like polygons, each colored with a different hue from the rainbow spectrum (red, orange, yellow, green, cyan, blue, purple). This visualization demonstrates the effect of double-sided normal rendering, where the backside of the polygons is also visible and colored, creating a vibrant, multi-colored effect. The tree is set against a plain white background with a subtle shadow cast on the ground below. A 3D rendered tree with a rainbow-colored canopy, illustrating the result of double-sided normal rendering.

EXCERPT #FPHTZN p. 52

EXCERPT #NQYSXX p. 53
  A 3D model of a tree with 'NORMAL' vertex normals. The tree has a thick, gnarled trunk and a large, rounded canopy. The foliage is colored with a gradient from blue to red, and the trunk is a mix of blue and green. The tree is set against a light gray background with a subtle geometric pattern. A 3D model of a tree with 'NORMAL' vertex normals, showing a smooth, rounded canopy and a thick, gnarled trunk. The foliage is colored with a gradient from blue to red, and the trunk is a mix of blue and green. The tree is set against a light gray background with a subtle geometric pattern.

EXCERPT #AE4JSE p. 53
  'NORMAL' VERTEX NORMALS

EXCERPT #W7LEVJ p. 53
  A 3D model of a tree with 'CUSTOM' vertex normals. The tree has a thick, gnarled trunk and a large, rounded canopy. The foliage is colored with a gradient from blue to red, and the trunk is a mix of blue and green. The tree is set against a light gray background with a subtle geometric pattern. A 3D model of a tree with 'CUSTOM' vertex normals, showing a more detailed and textured canopy and a thick, gnarled trunk. The foliage is colored with a gradient from blue to red, and the trunk is a mix of blue and green. The tree is set against a light gray background with a subtle geometric pattern.

EXCERPT #2LHPK4 p. 53
  CUSTOM VERTEX NORMALS

EXCERPT #SLFVF5 p. 53

EXCERPT #JTB3RY p. 54
  A large, dense evergreen tree with a thick, gnarled trunk and a wide, spreading canopy of dark green foliage. The tree is positioned on the left side of the frame. Below the tree, there is a small orange rectangular label with white text that reads 'NORMAL' VERTEX NORMALS.

EXCERPT #DKLBHY p. 54
  'NORMAL' VERTEX NORMALS

EXCERPT #UQYZPW p. 54
  A large, dense evergreen tree, identical in shape and color to the one on the left, with a thick, gnarled trunk and a wide, spreading canopy of dark green foliage. The tree is positioned on the right side of the frame. Below the tree, there is a small orange rectangular label with white text that reads CUSTOM VERTEX NORMALS.

EXCERPT #XLKJP5 p. 54
  CUSTOM VERTEX NORMALS

EXCERPT #2J3STS p. 54

EXCERPT #WKX5X7 p. 55
  The Guerrilla Games logo, a stylized 'G' composed of three white chevrons pointing downwards, set against a dark background. Guerrilla Games logo

EXCERPT #JBFLXJ p. 55
  A screenshot from the video game Horizon Zero Dawn. A female character with red braided hair, wearing a brown and orange tribal-style outfit, stands in a vast field of tall, golden-brown grass. She is looking towards the left. In the background, there are rolling hills and mountains under a hazy, blue sky. The right side of the image has a white triangular overlay with a grid pattern. A character standing in a vast field of tall, golden-brown grass under a hazy sky with distant mountains.

SECTION #RK5T3U Pixel Program: Normals

EXCERPT #HTAEMH p. 55
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #D8P46J p. 56
  The Guerrilla Games logo, consisting of three stylized, overlapping 'G' shapes in a grey color, is located in the top-left corner of the slide. Guerrilla Games logo

EXCERPT #GWS8YY p. 56
  A screenshot from the video game Horizon Zero Dawn. A character with red braided hair, wearing a green and brown outfit, is standing in a vast field of tall, golden-brown grass. In the background, there are rolling hills and a large, dark, rocky mountain under a clear blue sky. The scene is brightly lit, suggesting a sunny day. A character in a field of tall grass

SECTION #H4PWUB Pixel Program: Normals

EXCERPT #63KMUL p. 56
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #EWW7NL p. 57
  Shading

SECTION #EDGLAY Pixel Program: Albedo

SECTION #XLT7XC Colorization Texture Array:

EXCERPT #TPXXU5 p. 57
  • Based on Asset Type • Artist driven • U-Component • Based on World Data • Erosion, Flow, Closeness to Water baked into 512x512 Worlddata Texture • V-Components • Based on Ecotope • Place in the World • W-Component

EXCERPT #ZEH2R9 p. 57
  The image displays a series of seven horizontal texture strips, each representing a different color component (U, V, W) used in the albedo shading process. The strips are arranged in a fan-like pattern, showing a gradient from brown/orange on the left to green on the right. A red box highlights a specific section of the bottom-most strip, which is a zoomed-in view of the texture data. The background is a light gray with a subtle geometric pattern. A series of seven horizontal texture strips showing a color gradient from brown to green, with a red box highlighting a specific section.

EXCERPT #TPY8QN p. 57

EXCERPT #DNHJU5 p. 58
  Shading

SECTION #TS24R5 Pixel Program: Albedo

EXCERPT #HFUKGH p. 58
  In our shader, we colorize most of our Vegetation:

EXCERPT #YD6ZKG p. 58
  • Two Textures drive colorization • Albedo • Mask • Illuminate Blend Function • \text{Result} = \text{Texture} * (2 * \text{Colorize} * \text{Mask} + 1 - \text{Mask})

EXCERPT #4SZRWL p. 58
  The image displays two textures used in a vegetation shading pipeline. The top texture, labeled 'ALBEDO TEXTURE', shows a close-up of a leaf with a complex, multi-colored pattern of greens, blues, and purples, representing the colorization of the vegetation. The bottom texture, labeled 'MASK TEXTURE', is a black and white image showing the same leaf's silhouette, where white areas represent the leaf's surface and black areas represent the background or other parts of the scene. Two textures used in the vegetation shading process: an Albedo texture and a Mask texture.

EXCERPT #3E3QMB p. 58

EXCERPT #SCAAZM p. 59
  A 3D model of a bush with dense, lobed leaves in shades of reddish-brown and dark brown, casting a soft shadow on the ground. A 3D model of a bush with reddish-brown autumn leaves.

EXCERPT #DJZ2VM p. 59
  A 3D model of a bush with dense, lobed leaves in shades of yellowish-green and brown, casting a soft shadow on the ground. A 3D model of a bush with yellowish-green autumn leaves.

EXCERPT #57RGDH p. 59
  A 3D model of a bush with dense, lobed leaves in shades of bright yellow and brown, casting a soft shadow on the ground. A 3D model of a bush with bright yellow autumn leaves.

EXCERPT #ED6X7A p. 59
  A 3D model of a bush with dense, lobed leaves in shades of dark green, casting a soft shadow on the ground. A 3D model of a bush with dark green summer leaves.

EXCERPT #E5VV7N p. 59
  A 3D model of a bush with dense, lobed leaves in shades of light green and yellow, casting a soft shadow on the ground. A 3D model of a bush with light green summer leaves.

EXCERPT #2DBWWZ p. 59
  A 3D model of a bush with dense, lobed leaves in shades of vibrant green, casting a soft shadow on the ground. A 3D model of a bush with vibrant green summer leaves.

EXCERPT #49BR5P p. 59

EXCERPT #VDEW7G p. 60
  Shading

SECTION #3JHMBP Pixel Program: Roughness / Reflectance

EXCERPT #9HJQU8 p. 60
  • Reflectance – Fixed at 4% Dielectric • Baked Ambient Occlusion and Occlusion Texture • Roughness – Artist controlled • Baked Ambient Occlusion, Occlusion Texture and Translucency Texture • Grass – Similar Value Setup, but: • Influenced by Translucency Texture

EXCERPT #UEPWVG p. 60
  A grayscale texture map showing several leaves with detailed vein patterns, representing an ambient occlusion texture. The leaves are arranged in a cluster, with some overlapping. The texture is used to simulate the way light interacts with the surface of the leaves, creating a sense of depth and shadow. A grayscale texture map showing several leaves with detailed vein patterns, representing an ambient occlusion texture.

EXCERPT #L4QCGH p. 60
  AMBIENT OCCLUSION TEXTURE

EXCERPT #BJVCP7 p. 60
  A 3D render of a green, leafy plant, likely a grass or small shrub, demonstrating the shading and texture applied. The plant is shown from a low angle, with its leaves fanning out. The shading is realistic, with darker areas on the underside of the leaves and lighter areas on the top. The texture is a mix of green and brown, suggesting a natural, organic material. A 3D render of a green, leafy plant, likely a grass or small shrub, demonstrating the shading and texture applied.

EXCERPT #4M44DV p. 60

EXCERPT #J5UM34 p. 61
  Shading

SECTION #MXZG4T Pixel Program: Translucency

EXCERPT #X2MGU3 p. 61
  Our Translucency is the product of the following:

EXCERPT #U266FV p. 61
  • Amount of light hitting the object from behind • Angle between the camera, the lit pixel on screen and the light source • 'Max Luminance' of Albedo Color • Surface Thickness • Pre-computed Ambient Occlusion • Boost for Artistic Purposes

EXCERPT #VWXQ4V p. 61
  A grayscale texture image showing the silhouettes of fern fronds against a light background. The fronds are dark and detailed, showing the veins. In the bottom right corner, there is an orange rectangular label with the text 'TRANSLUCENCY TEXTURE' in white capital letters.

EXCERPT #PYPERH p. 61
  A 3D render of a green, leafy plant, possibly a maple seedling, shown from a slightly elevated angle. The plant has vibrant green leaves with visible veins and is casting a soft shadow on the light gray ground beneath it.

EXCERPT #WHCR96 p. 61

EXCERPT #75SGPU p. 62
  Stylized logo consisting of two white chevrons pointing right, set against a black background.

EXCERPT #65DYHV p. 62
  A lush, sunlit jungle scene from the game Horizon Zero Dawn. Sunlight filters through the dense canopy of large trees and hanging vines, creating a warm, golden glow. The foreground is filled with vibrant green foliage and large rocks.

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #3EYJES Asset Creation

EXCERPT #KJA7UQ p. 62
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

EXCERPT #4ZLCH6 p. 63
  A stylized logo consisting of two white chevrons pointing right, set against a black background. Stylized logo consisting of two white chevrons pointing right on a black background.

EXCERPT #SQW3QG p. 63
  A vertical, rectangular concrete specimen with a rough, textured surface. It shows some internal structure and minor surface cracking. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with visible internal structure and some surface cracking.

EXCERPT #VQ8CRH p. 63
  A vertical, rectangular concrete specimen with a rough, textured surface. A distinct horizontal band of reinforcement is visible near the bottom. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with a visible horizontal reinforcement band near the bottom.

EXCERPT #BQWUHJ p. 63
  A vertical, rectangular concrete specimen with a relatively smooth, light-colored surface. It shows some internal structure and minor surface cracking. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with a smooth, light-colored surface.

EXCERPT #N64R5P p. 63
  A vertical, rectangular concrete specimen with a rough, textured surface. It shows some internal structure and minor surface cracking. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with a rough, textured surface and some surface cracking.

EXCERPT #T9EGF8 p. 63
  A vertical, rectangular concrete specimen with a rough, textured surface. It shows some internal structure and minor surface cracking. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with a rough, textured surface and some surface cracking.

EXCERPT #UKGNMH p. 63
  A vertical, rectangular concrete specimen with a rough, textured surface. It shows some internal structure and minor surface cracking. Several thin, dark wires are visible protruding from the top and bottom edges. A vertical, rectangular concrete specimen with a rough, textured surface and some surface cracking.

EXCERPT #V9DD3R p. 64
  A 3D render of a large, irregular pile of debris and rubble. The pile is composed of various materials, including broken concrete blocks, twisted metal sheets, and a single tire. The debris is scattered across a dark, textured surface that features a repeating geometric pattern of triangles. The lighting is dramatic, casting strong shadows and highlighting the textures of the materials. In the top left corner, there is a small, stylized logo consisting of three white chevrons pointing right, set against a black background. A 3D render of a large, irregular pile of debris and rubble, including broken concrete, twisted metal, and a tire, set against a dark background with a geometric pattern.

EXCERPT #LVUH5Y p. 65
  A stylized logo consisting of two white chevrons pointing right, set against a black background. Stylized logo consisting of two white chevrons pointing right, set against a black background.

EXCERPT #85WRZR p. 65
  A detailed, weathered tree trunk and root system, rendered in a dark, textured style. The tree is positioned diagonally, with its roots spreading out at the bottom and its trunk curving upwards and to the left. The wood is heavily textured, showing deep grooves and a weathered appearance. The background is black with a faint, repeating geometric pattern of triangles. A detailed, weathered tree trunk and root system, rendered in a dark, textured style, set against a black background with a faint geometric pattern.

EXCERPT #M32VSM p. 66
  A stylized logo consisting of two white chevrons pointing right, set against a black background. Stylized logo consisting of two white chevrons pointing right, set against a black background.

EXCERPT #ZA29QV p. 66
  A dense, misty forest scene. Tall, slender trees with textured bark stand in the background. Sunlight filters through the dense canopy, creating bright, ethereal rays of light that illuminate the mist and the forest floor. The foreground is filled with lush, dark green foliage, including large ferns and various leafy plants. The overall atmosphere is serene and mysterious, with a soft, golden light dominating the scene. A dense, misty forest scene with tall trees and sunlight filtering through the canopy.

EXCERPT #XF9ZTD p. 67
  A screenshot from the video game Horizon Zero Dawn. In the foreground, a character with long red hair, wearing a green and brown outfit, is crouching in a field of tall, golden-brown grass. She is holding a bow and arrow, aiming towards a herd of mechanical deer in the distance. The deer are covered in green and yellow mechanical components. In the background, there are large, mechanical tree trunks with intricate designs, and a misty, mountainous landscape under a cloudy sky. The overall scene is set in a lush, autumnal environment. A screenshot from the video game Horizon Zero Dawn showing a character in a forest with large, mechanical tree trunks and a herd of mechanical deer in the background.

SECTION #6HBR9J Asset Creation

EXCERPT #MKWL2R p. 67
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #K7UVRC Creation Process

EXCERPT #9QVN5V p. 68
  • Build 'Speed Model' • Maya / SpeedTree / Photoshop

EXCERPT #ZAWQQF p. 68
  A diamond-shaped wireframe diagram showing the overall canopy structure of a tree, with a central trunk and branching limbs. Diamond-shaped wireframe diagram of a tree canopy.

EXCERPT #4CDGMZ p. 68
  A triangular wireframe diagram showing a detailed view of a tree branch and its foliage. Triangular wireframe diagram of a tree branch.

EXCERPT #3RXPBZ p. 68
  A triangular wireframe diagram showing a detailed view of a tree branch and its foliage. Triangular wireframe diagram of a tree branch.

EXCERPT #LZGWQD p. 68
  A 3D render of a tree with a thick, dark, curved trunk and a dense, green canopy. The tree is casting a large, detailed shadow on the ground. To the right of the tree, a small human silhouette is visible for scale. 3D render of a tree with a shadow and a human silhouette for scale.

EXCERPT #6V5N5M p. 68

EXCERPT #XKA4E2 p. 69
  Creation

SECTION #B933Q9 Process

EXCERPT #6PV3MV p. 69
  • High Detail Creation • Maya / SpeedTree / Photoshop

EXCERPT #W54V7L p. 69
  A high-detail 3D render of a plant branch, likely a digital asset for a game. The branch is dark brown and textured, with several smaller sub-branches extending from it. The leaves are green with visible veins and some darker green shading, giving them a realistic appearance. The entire branch is set against a light gray background with a subtle geometric pattern. A soft, dark shadow of the branch is cast onto the background, indicating a light source from the upper left. A detailed 3D render of a plant branch with green leaves and a dark brown trunk, casting a shadow on a light gray background.

EXCERPT #2WYSSM p. 69

SECTION #EPE7ES Creation Process

EXCERPT #ZUDVCQ p. 70
  • Baking into UV Space • Maya / SpeedTree / Photoshop

EXCERPT #GMWRWN p. 70
  A 3D model of a tree branch with green leaves and purple flowers, shown within a wireframe bounding box. The branch is positioned diagonally across the frame, with the wireframe box indicating its spatial volume. A 3D model of a tree branch with green leaves and purple flowers, shown within a wireframe bounding box.

EXCERPT #8AY8DU p. 70
  A vertical strip showing the UV unwrapped texture of the tree branch. The texture is divided into several triangular and quadrilateral sections, representing the UV layout of the model's surface. The colors are consistent with the 3D model, showing green foliage and purple flowers. A vertical strip showing the UV unwrapped texture of the tree branch, divided into several triangular and quadrilateral sections.

EXCERPT #C4ZEEU p. 70

SECTION #L28KHX Creation Process

EXCERPT #UGM693 p. 71
  • Build LOD Chain of Components • Maya

EXCERPT #3GFQ6V p. 71
  A sequence of eight images illustrating the LOD chain for a tree model. The first two images on the left show the tree at high detail, with many green leaves and a complex branch structure, enclosed in a diamond-shaped wireframe. The subsequent six images show the tree at progressively lower levels of detail, with fewer leaves and simpler branch structures, each enclosed in a triangular wireframe. The final image on the right shows the tree at the lowest level of detail, with only a few green leaves and a simple branch structure, also enclosed in a triangular wireframe. The images are arranged in a horizontal line, showing the progression from high to low detail. A sequence of eight images showing the LOD chain for a tree model, from high detail to low detail.

EXCERPT #6PERE6 p. 71

SECTION #TH3B3D Creation Process

EXCERPT #7GS7YL p. 72
  The image displays a 3x8 grid of 24 wireframe models, illustrating the iterative creation process of a stylized plant asset. Each row represents a different view or stage of refinement. The models show a progression from a complex, multi-faceted structure to a simpler, more defined form, with green foliage and black wireframe outlines. The top row shows the most complex and multi-faceted models, while the bottom row shows the simplest and most defined forms. The middle row shows intermediate stages of refinement. The models are arranged in a grid, with each model occupying a square space. The background is a light gray with a subtle geometric pattern of triangles. A 3x8 grid of 24 wireframe models showing the iterative creation process of a stylized plant asset. Each row represents a different view or stage of refinement. The models show a progression from a complex, multi-faceted structure to a simpler, more defined form, with green foliage and black wireframe outlines.

EXCERPT #42HYA2 p. 72

EXCERPT #RC9FQ3 p. 73
  Creation

SECTION #U5GFWD Process

EXCERPT #ZKXL7Z p. 73
  • Build Asset out of Components • SpeedTree

EXCERPT #AFGPCW p. 73
  A 3D render of a large, leafy tree with a thick, dark trunk, casting a shadow on the ground. A small human figure is visible in the background for scale. The tree has a dense canopy of green leaves and a thick, dark, textured trunk that curves slightly to the right. The shadow is cast on a light gray surface, and a small human figure stands to the right of the tree for scale. A 3D render of a large, leafy tree with a thick, dark trunk, casting a shadow on the ground. A small human figure is visible in the background for scale.

EXCERPT #86Q6G3 p. 73

EXCERPT #WWKPAQ p. 74
  Creation

SECTION #Y5VX3S Process

EXCERPT #5ST3UF p. 74
  • Build Asset out of Components • SpeedTree

EXCERPT #BV8EK9 p. 74
  A 3D rendered tree asset with a thick, dark, curved trunk and a dense, green, bushy canopy. The tree is casting a soft shadow on the ground. To the right of the tree is a large, thick, red handwritten-style number '6'. In the background, a small, faint silhouette of a person is visible on the right side, providing a sense of scale.

EXCERPT #J6X2UV p. 74

EXCERPT #ADXNBS p. 75
  Creation

SECTION #V6AJ9K Process

EXCERPT #6LB7CW p. 75
  • SpeedTree Export to Maya • Houdini • Asset Setup / Export to Game • Maya

EXCERPT #BTT9T5 p. 75
  A 3D rendered tree with a thick, dark, curved trunk and a dense, rounded canopy of green leaves. The tree is casting a soft, dark shadow on the ground below it. A 3D rendered tree with a thick, dark, curved trunk and a dense, rounded canopy of green leaves. The tree is casting a soft, dark shadow on the ground below it.

EXCERPT #3TG2HY p. 75

EXCERPT #W9WGPB p. 76
  Creation

SECTION #HCAQY2 Assets: Trees

EXCERPT #FJBG68 p. 76
  Trees have five LODs:

EXCERPT #JVNW8P p. 76
  • LOD1 • ~10000 triangles • High shader • LOD2 • ~2600 triangles • High shader • LOD3 • ~1200 triangles • Low shader • LOD4 • Low shader + fading in billboard • ~200 + 12 triangles • LOD5 • Billboard shader • 12 triangles

EXCERPT #5XCG7J p. 76
  The image displays five trees arranged horizontally, each representing a different level of detail (LOD) for a game asset. From left to right: the first tree is the most detailed (LOD1), showing a dense canopy of many small, semi-transparent yellow and green triangles. The second tree (LOD2) has a slightly less dense canopy. The third tree (LOD3) shows a more simplified canopy structure. The fourth tree (LOD4) is a simplified version with a visible wireframe grid around the canopy. The fifth tree (LOD5) is the simplest, showing a single billboard texture for the entire canopy. All trees have a dark brown trunk and are set against a light gray background with a subtle geometric pattern. Five trees illustrating different levels of detail (LODs) for a game asset.

EXCERPT #PBRMSJ p. 76

EXCERPT #TA2RDP p. 77
  Creation

SECTION #LD3AX4 Assets: Plants

EXCERPT #WH7X7V p. 77
  • Plants have three LODs: • LOD1 • ~2000 triangles • High shader • LOD2 • ~800 triangles • High shader • LOD3 • ~140 triangles • Low shader • LOD4 • 8 triangles • Billboard shader

EXCERPT #QNHKYE p. 77
  The image displays four variations of a bush asset, illustrating different levels of detail (LODs). The top-left and top-right images show the asset at LOD1 and LOD2, respectively, featuring dense, detailed green foliage. The bottom-left image shows the asset at LOD3, where the foliage is simplified. The bottom-right image shows the asset at LOD4, which is a simple billboard with a few green triangles. Each asset is shown from a slightly different angle and has a soft blue shadow cast to its right. Four 3D renderings of a bush asset at different levels of detail (LODs). The top-left image shows LOD1 with high detail and many green leaves. The top-right image shows LOD2 with slightly less detail. The bottom-left image shows LOD3 with a simplified leaf structure. The bottom-right image shows LOD4 as a simple billboard with a few green triangles. Each image has a blue shadow cast to the right.

EXCERPT #68YS3F p. 77

EXCERPT #BHSJKZ p. 78
  A screenshot from the game Horizon Zero Dawn showing a dense forest. Tall, slender trees with green foliage are visible, with sunlight filtering through the canopy, creating a hazy, golden atmosphere. The scene is overlaid with a faint geometric pattern of triangles. A screenshot from the game Horizon Zero Dawn showing a dense forest with tall trees and sunlight filtering through the canopy. The scene is overlaid with a faint geometric pattern of triangles.

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #F4W7Y2 Shadow Casting

EXCERPT #FPC74E p. 78
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #5LFPRD Shadow Casting

EXCERPT #PU93XL p. 79
  For sun shadows, we use four cascades:

EXCERPT #KCZV9V p. 79
  • Compartment Cascade • 1024 x 1024 map - covers Aloy only • Cascade 0 • 2048 x 2048 map - to 8m away from camera • Cascade 1 • 2048 x 2048 map - to 80m away from camera • Distant cascade – height-field-based system • 1536 x 1536 map - 1.5km x 1.5km region around the camera.

EXCERPT #PTRUMT p. 79
  A screenshot from the video game Horizon Zero Dawn showing the character Aloy from behind. She is standing on a dirt path in a lush, sunlit environment with large rocks and dense vegetation. Her shadow is cast on the ground, and the scene is filled with warm, golden light, illustrating the shadow casting system. Aloy in Horizon Zero Dawn

EXCERPT #ZM4P9V p. 79

DOCUMENT #ABD2B8
Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #KBMKEN Summary

EXCERPT #Q2CS92 p. 83
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

SECTION #LZ8AXU Summary

SECTION #V4MS42 What worked for us?

EXCERPT #GBZP3D p. 84
  • Depth Prime • Custom Mip Chain • LOD up, not down • Shadow Casters separate • Placement System • All In-house

EXCERPT #UUFCZJ p. 84
  A screenshot from the game Horizon Zero Dawn showing a snowy, mountainous landscape. In the foreground, there are several snow-covered evergreen trees of varying sizes, some with snow-laden branches. The ground is covered in a thick layer of snow, with some patches of grass visible. In the background, more snow-covered mountains and a body of water are visible under a clear sky. A screenshot from the game Horizon Zero Dawn showing a snowy, mountainous landscape. In the foreground, there are several snow-covered evergreen trees of varying sizes, some with snow-laden branches. The ground is covered in a thick layer of snow, with some patches of grass visible. In the background, more snow-covered mountains and a body of water are visible under a clear sky.

EXCERPT #DCR6AX p. 84

EXCERPT #4AUFGC p. 85
  Stylized logo consisting of two white chevrons pointing right, set against a black background.

EXCERPT #37RFLU p. 85
  A screenshot from the video game Horizon Zero Dawn showing a lush, overgrown landscape. In the foreground, there is a stone and wood structure with a railing, surrounded by tall grass and dense foliage. In the background, a large, ancient stone ruin is visible through a misty, sunlit forest. The sun is low in the sky, creating a strong lens flare and illuminating the scene with a warm, golden light.

EXCERPT #AB7QNS p. 85
  Thank You!

EXCERPT #PR6FRA p. 85
  Guerrilla Games – GDC 2018 – Between Tech and Art: The Vegetation of Horizon Zero Dawn

DOCUMENT #BDBBL6
Real‐time Realistic Rendering and Lighting of Forests

SECTION #9S3JS2 Abstract

EXCERPT #7R6ZNJ p. 1
  Realistic real-time rendering and lighting of forests is an important aspect for simulators and video games. This is a difficult problem, due to the massive amount of geometry: aerial forest views display millions of trees on a wide range of distances, from the camera to the horizon. Light interactions, whose effects are visible at all scales, are also a problem: sun and sky dome contributions, shadows between trees, inside trees, on the ground, and view-light masking correlations. In this paper we present a method to render very large forest scenes in real-time, with realistic lighting at all scales, and without popping nor aliasing. Our method is based on two new forest representations, z-fields and shader-maps, with a seamless transition between them. Our first model builds on light fields and height fields to represent and render the nearest trees individually, accounting for all lighting effects. Our second model is a location, view and light dependent shader mapped on the terrain, accounting for the cumulated subpixel effects. Qualitative comparisons with photos show that our method produces realistic results.

EXCERPT #7QAJTP p. 1
  Categories and Subject Descriptors (according to ACM CCS): Computer Graphics [I.3.7]: Three-Dimensional Graphics and Realism—

DOCUMENT #BDBBL6
Real‐time Realistic Rendering and Lighting of Forests

SECTION #2L89HX 9. Results and validation

EXCERPT #HCSQ6Y p. 8
  Results. Our results are shown in Figs. 1, 5 and 9. The components of our lighting model are shown in Fig. 5, and the seamless transition between our two models in Fig. 6. See also the companion video.

EXCERPT #QH3PJA p. 8
  Performance. Given an input mesh of a tree and its ambient occlusion, it takes a few seconds to compute the 181 views, and about 10 minutes to precompute the G, T, D, E tables with a NVidia Geforce 470 GTX (we use 8 samples for \lambda , and 16 for each \theta_v, \theta_r, \phi angle). With this GPU, a typical 1024 \times 768 frame with about 180,000 z-field trees is rendered in 30 ms (33 fps), including 7 ms for the terrain, 0.6 for the shader-map, 4.4 for the shadow maps, and 18 for the z-field trees (respectively 7, 0.6, 1.4 and 10.6 with a 580 GTX – 51 fps).

EXCERPT #USBP2L p. 8
  Validation. We do not target “exact” lighting, so we did not compare our results quantitatively with ground truth images. Instead, we did qualitative comparisons. First with photos: Fig. 9 shows that our method can reproduce all the lighting effects presented in introduction. Second, with the view-dependent plots of a completely different model based on radiative transfer theory (see Fig. 8). Another goal was to get

EXCERPT #3UY5QB p. 8
  Figure 5: Results. The 8 components of our lighting model. The top image shows a full forest scene. Below it are eight smaller images arranged in two rows of four, labeled k_g, k_t, k_l, k_r, f_g, f_t, f_l, f_r. These represent different lighting components like sky, terrain, and foliage contributions.

EXCERPT #L4RAEA p. 8
  Figure 5: Results. The 8 components of our lighting model.

EXCERPT #AT45WR p. 8
  Figure 6: Results. Seamless transition between our models. A grid of four images showing the transition from 'terrain only' to 'terrain + shader-map' to 'terrain + z-field trees' to 'all components'. The images show a forest scene with increasing detail and lighting complexity.

EXCERPT #XN8DMD p. 8
  Figure 6: Results. Seamless transition between our models.

EXCERPT #4DQSXC p. 8
  a consistent result at all scales. We validated this by measuring the radiance of a forest patch rendered with our method at several distances and for many view angles (see Fig. 7).

DOCUMENT #BDBBL6
Real‐time Realistic Rendering and Lighting of Forests

SECTION #ZX7AQX 10. Discussion

EXCERPT #44HAW5 p. 8
  A limitation of our method is the size of the z-field data: 45 MB per tree model. The number of models that can be used simultaneously in a given view is thus limited. For the same reason, trees cannot be animated to move in the wind. On the other hand, adding a normal per texel in each precomputed view is feasible (each model would then take 79 MB).

EXCERPT #GUQLLA p. 8

EXCERPT #7MNE8J p. 8

EXCERPT #7Q5MSW p. 9

EXCERPT #RUVLFP p. 9
  Figure 7: Validation of scale consistency. A line graph showing relative radiance (0 to 2) versus distance to camera (100 to 10000 m). Four curves are plotted: coniferous tree (green), deciduous tree (red), coniferous tree (avg) (blue), and deciduous tree (avg) (magenta). The curves are relatively flat, indicating radiance is close to 1. Insets show z-field trees and a shader-map. Labels include 'z-field trees', 'shader-map', '0.8 s_max', and 's_max'.

EXCERPT #PM34WG p. 9
  Figure 7: Validation of scale consistency. The radiance of a forest patch rendered with our method (insets), as a function of the view distance s . Each curve shows the ratio L(\theta_v, \phi, s)/L(\theta_v, \phi, 50) for a different view direction, where L(\theta_v, \phi, s) is the radiance at distance s ( \theta_l = 45 ). Our results are close to 1, the ideal case where L is independent of s .

EXCERPT #RCEDGN p. 9
  Figure 8: Validation with reference plots. A 3D plot of radiance versus theta_v cos phi and theta_v sin phi. Below are two 2D line plots comparing 'hotspot' and 'our model' (red line) with '[LS93b]' (black line). The plots show radiance (0 to 1) versus theta_v sin phi (-90 to 90).

EXCERPT #83M7B6 p. 9
  Figure 8: Validation with reference plots. The radiance of a forest patch rendered with our method, as a function of the view direction ( \theta_l = 60 ). Bottom: with r = 0 as in [LS93b], a_1 = 0.2 and a_2 = 20 , our results are quite similar to theirs.

EXCERPT #AYHHYW p. 9
  This would enable the use of more realistic leaf BRDFs, with specular reflections, for the nearest z-field trees.

EXCERPT #NANMBF p. 9
  The tables \mathbb{G} , \mathbb{T} , \mathbb{D} , \mathbb{E} are precomputed for a given tree model, tree aspect ratio h , tree distribution law, and foliage density \tau . But they are so small (131 kB in total) that we can easily use several versions of them to support spatially varying tree distribution laws or tree foliage densities (spatially varying tree colors are trivial since p and p are not used in any precomputed data). Likewise, it is easy to extend our method with a spatially varying tree aspect ratio h : it suffice to add this parameter to the 1D and 2D tables \mathbb{D} and \mathbb{E} (the 4D tables \mathbb{G} and \mathbb{T} remain unchanged since they are computed on rescaled trees). It should also be possible to support anisotropic tree distributions (e.g., forests with aligned trees) by adding one or two angle parameters to each table.

DOCUMENT #BDBBL6
Real‐time Realistic Rendering and Lighting of Forests

SECTION #XZX56G 11. Conclusion

EXCERPT #K34H8J p. 9
  We presented a method to render large forest scenes in real-time, with a realistic lighting model, consistent at all scales. Comparisons with photos show that our method can reproduce the main lighting effects observed in real forest scenes. In future work, we would like to implement seamless transitions with 3D mesh models for close views, currently not handled. We would also like to study the applicability of our model to other kinds of scene (rocks, grass, etc).

EXCERPT #BH23M7 p. 9
  Acknowledgments This work is funded by the ANR 2010 JCJC 0207 01 “SimOne” project. We thank Laurence Boissieux for the 3D tree models and Charles de Rousiers for proofreading this paper.

DOCUMENT #PQ68ZH
Responsive Real-Time Grass Rendering for General 3D Scenes

SECTION #LX8HQS Abstract

EXCERPT #W8ZZWR p. 0
  Grass plays an important role in most natural environments. Most interactive applications use image-based techniques to approximate fields of grass due to the high geometrical complexity, leading to visual artifacts. In this paper, we propose a grass-rendering technique that is capable of drawing each blade of grass as geometrical object in real time. Accurate culling methods together with an adaptable rendering pipeline ensure that only the blades of grass that are important for the visual appearance of the field of grass are rendered. In addition, we introduce a physical model that is evaluated for each blade of grass. This enables that a blade of grass can react to its environment by calculating the influence of gravity, wind and collisions. A major advantage of our approach is that it can render fields of grass of arbitrary shape and spatial alignment. Thus, in contrast to previous work, the blades of grass can be placed on any 3D model, which is not required to be a flat surface or a height map.

EXCERPT #GPVWTN p. 0
  Keywords: real-time rendering, vegetation, hardware tessellation

EXCERPT #FWRW7C p. 0
  Concepts: •Computing methodologies → Rendering; Physical simulation; Visibility;

DOCUMENT #PQ68ZH
Responsive Real-Time Grass Rendering for General 3D Scenes

SECTION #6B6F7R 3 Overview

EXCERPT #JEP7QX p. 1
  In a preprocessing phase, the blades of grass are distributed on the surface of a 3D model, and subsequently divided into multiple patches, where each patch contains approximately the same number of blades. Note that the patches can have arbitrary shapes and alignments, since they are only container objects of individual blades of grass. During the rendering of each image, three steps are performed:

EXCERPT #H6N5S2 p. 1
  1. The physical model is evaluated for each blade of grass. 2. The culling methods cull the blades that are not important for the final rendering, based on occlusions and the orientation and distance of the blade to the camera. 3. Each blade of grass is rendered as tessellated geometric object using an indirect rendering approach.

EXCERPT #3AHGUA p. 1
  The following sections describe each step in detail.

DOCUMENT #PQ68ZH
Responsive Real-Time Grass Rendering for General 3D Scenes

SECTION #WJRRU9 7 Results

EXCERPT #Y8BVH6 p. 6
  In this section, we present the results of our rendering technique and compare them to related algorithms. The evaluation of our results is based on visual appearance, elapsed time on the graphics card and the total time required for a frame. The results are rendered in a testing framework that focuses on the geometry and the animation of the field of grass, but lacks additional photo-realistic rendering techniques that are common in modern engines like shadows, ambient occlusion or atmospheric effects. Note, however, that this is not a limitation of the method: since the grass blades are drawn as geometrical objects, it is straightforward to integrate our method into an engine that supports such techniques. The framework is implemented in C++ and OpenGL, version 4.5. The results are generated on a machine using an NVIDIA GeForce GTX 780M graphics card and an Intel Core i7-4800 @ 2.7 GHz CPU with 32 GB Ram. The resolution that is used for the renderings is 1024x768 pixels. In order to reduce aliasing artifacts, MSAA with 8 samples is used. A representative open-source demo application of our grass-rendering technique is available at https://github.com/klejah/ResponsiveGrassDemo .

EXCERPT #EUPDYY p. 6
  In the following, we present two scenes that are evaluated and discussed. The evaluation is based on different measurements, which are: the rendered frames per second, the time for rendering the frame, the number of blades that are drawn, the number of blades that are culled, the time used for the evaluation of the physical model, the time used for the visibility calculation and indirect rendering setup, the time used for rendering and the number of collision spheres that are considered in the force update. The time values are measured in milliseconds. The measurements are gathered under three different circumstances: all features are enabled, collision detection disabled, culling disabled. In order to guarantee a reasonable comparison, all measurements of a scene are taken from frames having the exact same input data from a fixed reference viewpoint as shown in the respective renderings (Figures 10,11). Animated renderings of these scenes can be found in the accompanying video.

SECTION #WBJRYY 7.1 Nature scene

EXCERPT #XCBRDM p. 6
  The nature scene consists of several 3D objects and resembles an outdoor scenario. A rendering of this scene is presented in Figure 10. The field of grass is generated on a terrain with smooth hills. It consists of 397,881 blades of grass. Each blade of grass has a moderate width, which leads to a high density. The scene contains a bunny model, which is represented by 1000 collision spheres in total. The effect of the physical model is shown by two rolling balls, which leave a trail behind. Additionally, several objects are added for a better visual representation. Table 1 presents the measurements of the nature scene.

EXCERPT #7MS4TF p. 6
  The evaluation proves the advantage of the culling methods based on each blade of grass. Almost three-fourths of all blades of grass of visible patches are culled by our algorithm. Nevertheless, the appearance of the meadow is still dense without any bare spaces. Table 2 shows the number of blades that are culled by the different tests. Note that the sum of culled blades is larger than the number of blades, since some blades fail multiple tests. The visibility test that culls the most blades is based on the view frustum. If all culling

EXCERPT #M4KUMB p. 7
  Figure 10: Two side-by-side images of a nature scene. The left image shows a grassy field with trees and a small blue and white bunny-like creature. The right image shows the same scene but with the bunny-like creature represented as a sphere, illustrating the sphere representation of the bunny model.

EXCERPT #KWX49B p. 7
  Figure 10: The left image shows the rendering of the nature scene as it is evaluated. The right image visualizes the sphere representation of the bunny model.

EXCERPT #32G2K3 p. 7
  Measurement All features Collision disabled Culling disabled FPS 123 129 78 Frame time 8.130 7.742 12.821 Blades drawn 43,128 43,128 168,333 Blades culled 125,205 125,205 0 Time physical model 0.547 0.041 0.519 Time visibility 1.401 1.392 2.375 Time rendering 2.057 2.082 3.872 Amount collision spheres 183 0 183

EXCERPT #FWXMCG p. 7
  Table 1: Evaluation of the nature scene. The most interesting measurements are highlighted.

EXCERPT #TWPXJL p. 7
  methods are disabled, an interesting phenomenon occurs. The required time for the visibility test increases, although no visibility tests are performed. This shows that more time is required to set up of the indirect buffer if more blades are visible. Thus, the less blades are culled the more time is required for both the update and the rendering pass.

EXCERPT #SGVUSS p. 7
  Visibility test Blades culled Orientation test 44,695 View-frustum test 79,533 Distance test 46,965 Occlusion test 6,025

EXCERPT #PURT9S p. 7
  Table 2: The amount of blades culled by each visibility test in the nature scene.

EXCERPT #FNJMBP p. 7
  Another important fact is shown in the time used for the evaluation of the physical model. Even though many collision spheres have to be checked for collision, the calculation is performed in less time than one millisecond. However, if the collision detection is disabled, the force update requires almost no time, which shows the high performance of the calculations, especially considering the fact that the physical model is evaluated not only for visible blades of grass.

SECTION #CXEEA6 7.2 Helicopter scene

EXCERPT #WHHZHQ p. 7
  The helicopter scene shows the impact of the wind effect together with the rendering of a field of grass of extreme density. Since the only other 3D model is a helicopter that flies above the ground, no blades can be culled due to occlusion, which resembles a worst-case scenario for our algorithm. The field of grass consists of 900,000 blades. The wind effect of the helicopter is simulated by a point-based wind with the helicopter being the wind source. Figure 11 shows a rendering of this scene and Table 3 presents the measurements.

EXCERPT #5K5892 p. 7
  Figure 11: A rendering of a helicopter scene. A helicopter is flying over a dense field of green grass under a blue sky with mountains in the background.

EXCERPT #RELEPZ p. 7
  Figure 11: This figure shows a rendering of the helicopter scene.

EXCERPT #QLLJ73 p. 7
  Measurement All features Collision disabled Culling disabled FPS 56 56 35 Frame time 17.860 17.692 28.624 Blades drawn 165,135 165,135 503,382 Blades culled 338,247 338,247 0 Time physical model 1.421 1.372 1.570 Time visibility 6.817 6.792 8.142 Time rendering 5.471 5.398 9.149 Amount collision spheres 0 0 0

EXCERPT #2XJKCC p. 7
  Table 3: This table shows the evaluation of the helicopter scene. The most interesting measurements are highlighted.

EXCERPT #Q2AAZB p. 7
  Since the helicopter scene does not contain any collision spheres, there is obviously no significant difference if the collision detection is disabled. Similar to the previous measurement, a huge amount of blades can be culled without a noticeable difference in the density of the field of grass. The high amount of blades makes the improvement of the performance even more significant if the culling methods are enabled. Note that distance and orientation culling can introduce some popping artifacts for moving cameras, depending on the number of levels used, as can also be seen in the accompanying video.

SECTION #5NC82H 7.3 Comparison to related work

EXCERPT #NAFMWC p. 7
  In contrast to many related grass rendering techniques, especially geometrical approaches, our technique is capable of processing fields of grass of arbitrary shape and spatial alignment. This enables a variety of different scenes that can not be modeled as a heightmap. In addition, grass that is able to grow on top of a 3D model can also simulate fur or hair. Figures 12 and ?? show grass growing on three models of different topologies, which cannot be represented as heightmaps.

EXCERPT #QFXDJZ p. 7
  A major contribution of our technique is the physical interaction. The work of Orthmann et al. [2009] as well as the work of Fan et al. [2015] focus on the interaction between grass and environmental colliders. Orthmann et al. use billboard for the grass representation that are able to react to the collision with complex objects. When a collision is detected, the vertices of the billboard are displaced and after a fixed time the billboard regains its original state. The algorithm of Fan et al. follows a similar procedure. However, the blades of grass are represented as 3D objects and the collision detection is limited to spheres. As reaction to the collision, the vertices of the corresponding blades are displaced and after a fixed time period the blade resets to its initial state.

EXCERPT #AZUEMQ p. 8
  Figure 12: Two 3D models, a green teapot and a pink, multi-limbed creature, are shown with grass growing on their surfaces. The grass is rendered with different color textures, appearing as small green tufts on the models' surfaces.

EXCERPT #FVDZDT p. 8
  Figure 12: This figure shows grass growing on two complex 3D models with different color textures.

EXCERPT #Z56J36 p. 8
  Figure 13: A 3D model of a Möbius strip is shown with green grass growing on its surface. The grass is rendered as small tufts following the curvature of the strip.

EXCERPT #85QNPL p. 8
  Figure 13: This figure shows grass growing on a model of a Möbius strip.

EXCERPT #8TWDU9 p. 8
  In contrast to these approaches, our technique is able to operate on each single blade and can react to collisions with both spheres and complex objects. In addition, each blade saves its individual animation state, which allows that the time until a blade regains its initial state can depend on the collision that occurred and no fixed time period has to be set. In comparison to the technique of Orthmann et al., we modeled a scene where a hand moves over a field of grass. As it is shown in Figure 14, the trails of the fingers are clearly visible where the blades were pushed down. The rendering of Orthmann et al. shows the drawbacks of using billboards, because the trails are also visible, but the textures of the billboards are heavily distorted due to the displacement. In comparison to Fan et al., we generated a scene where many balls being thrown over the field of grass, which is shown in Figure 15. Since the meadow is much denser in our rendering, the collision reaction is more visible. Table 4 summarizes the differences of our method to Fan et al.'s method.

EXCERPT #2SGBZP p. 8
  The work of Wang et al. [2005] represents realistic natural forces that are applied to each blade of grass. The technique is capable of producing special variants of wind influence that can simulate the effect of a landing helicopter or even a tornado. For the calculation of the wind influence, the authors assume the blade to be in its straight up position and compute the displacement that is caused by the wind effect. In comparison, our physical model has a persistent state over more than a single frame, which allows the implementation of natural forces and collisions with one physical model. Figure 16 represents two scenes with special wind effects that simulate a helicopter and a tornado.

EXCERPT #STDBTK p. 8
  Jahrman et al. [2013] use a similar rendering approach, which uses the tessellation pipeline to render smoothly shaped blades of grass. The shape of the blade is generated by an alpha texture and invis-

EXCERPT #MT3MZL p. 8
  Figure 14: Two side-by-side images showing a hand moving over a field of grass. The left image shows the result of the technique by Orthmann et al. [2009], where the grass is rendered as billboards, leading to visible trails and distortions. The right image shows the result of the proposed technique, where each blade is a geometric object, resulting in a more realistic and dense field of grass with visible trails of the hand's movement.

EXCERPT #Q6XJ6F p. 8
  Figure 14: This figure shows the comparison between the technique of Orthmann et al. [2009] (left) and our technique (right). Both scenes show a complex object moving through a meadow. This illustrates the advantage of drawing each blade as geometric object instead of using billboards.

EXCERPT #E5J7DJ p. 8
  Figure 15: Two side-by-side images showing a field of grass with hundreds of colorful balls (red, green, blue, and white) scattered across it. The left image shows the result of the technique by Fan et al. [2015], where the grass is less dense and the collision effect is less visible. The right image shows the result of the proposed technique, where the grass is much denser and the collision effect is more visible, with many balls appearing to be in motion.

EXCERPT #8AE254 p. 8
  Figure 15: This figure presents the comparison between the technique of Fan et al. [2015] (left) and our technique (right). Both scenes show a field of grass with hundreds of balls being thrown around. The collision effect is more visible in the right image, since the field of grass has more density.

EXCERPT #NMVPYZ p. 8
  ble fragments are discarded. This enables an easy way to generate different shapes. However, the resolution of the texture that is used is crucial for the visual appearance, since texture sampling artifacts can appear if the resolution is too low. The higher the resolution of the alpha, the higher is the memory footprint of the technique and the method becomes slower. In comparison, we generate the shape by modifying directly the geometry of a blade using analytic functions. This reduces the amount of fragments that has to be computed and the edges of the shape have the same smoothness regardless of the distance to the camera. Figure 17 shows a closer view of a blade of grass of both techniques.

DOCUMENT #PQ68ZH
Responsive Real-Time Grass Rendering for General 3D Scenes

SECTION #WCKSTG 8 Conclusion and Future Work

EXCERPT #EEZRRW p. 8
  In this paper, we have proposed a novel grass-rendering technique that is capable of rendering dense fields of grass in real time. In comparison to related work, the field of grass can have any shape or spatial alignment. In addition, our approach renders each blade as geometric object that can react to its environment. This reaction to its environment is performed by evaluating a physically based model for each blade separately. This model includes the influence of gravity, wind, and collisions with both simple and complex objects. We use a sphere-packing approach to represent complex objects during the collision detection. In order to achieve real-time performance, we introduce culling methods that are able to cull single blades based on occlusion and their orientation and distance towards the camera. The culling methods are able to cull up to 75% of all blades of grass in a standard frame without decreasing the density of the field of grass significantly. However, the rendering of each blade of grass is still the bottleneck for the performance. Different level-of-detail representations like in the work of Boulanger et al. [Boulanger et al. 2009] can be introduced as future work to

EXCERPT #JV7RUE p. 9
  Feature Proposed method Fan et al. grass field arbitrary geometry height field only blade geometry three control points with dynamically tessellated quads fixed number of quads LOD dynamic tessellation, culling based on orientation and distance distance culling only effects wind, gravity, collisions wind, collisions physical model integrated model separate models for wind and collision colliders complex objects using sphere packing single spheres only collision recovery recovery time depends on original displacement fixed recovery time

EXCERPT #ECVLJK p. 9
  Table 4: This table shows the most important differences between the method of Fan et al. [2015] and ours.

EXCERPT #T4TNCF p. 9
  Figure 16: Comparison of grass rendering techniques. The figure consists of four panels. The top-left panel shows a helicopter flying over a grassy field with a tree in the background. The top-right panel shows a close-up of a helicopter's rotor blades. The bottom-left panel shows a close-up of grass blades with a white texture sampling artifact. The bottom-right panel shows a close-up of grass blades with smooth edges.

EXCERPT #GSK9FY p. 9
  Figure 16: This figure presents the comparison between the technique of Wang et al. [2005] (left) and our technique (right). Both techniques are capable of creating special wind effects that are more complex than calculating the influence by trigonometric functions.

EXCERPT #9FWQZN p. 9
  further reduce the rendering time.

### 51. Assistant tool calls

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format scholarly cover art for a computer graphics paper on real-time GPU tree generation. A single majestic deciduous tree transitions from luminous procedural branch splines and tiny GPU work-graph nodes on the left into richly tessellated bark, leaves, blossoms, fruit, and touches of snow on the right; distant copies fade through continuous geometric levels of detail across a wide digital landscape. Deep forest green, copper, and electric cyan palette, crisp cinematic lighting, elegant technical visualization fused with natural realism, sophisticated and uncluttered composition, no words, no logos, no border."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format premium cover art for a technical presentation on procedural grass in a samurai-era island landscape. Ground-level view through thousands of individually generated grass blades bending in layered wind waves; a misty river valley, dark pines, distant torii-like wooden gate, and mountains beyond. Subtle compute-grid tiles and cubic Bezier control curves appear as faint luminous overlays among selected blades, suggesting GPU placement, culling, and blade generation. Painterly cinematic realism with Japanese ink-wash atmosphere, emerald, gold, charcoal, and mist-white palette, no people, no words, no logos."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format scholarly cover art for a foundational computer graphics paper about modeling and rendering plant ecosystems. An intricate mountain meadow and stream shown as a layered systems diagram made beautiful: terrain contours below, ecological plant distributions as colored point fields, procedural flowers and trees emerging above, and repeated vegetation instances dissolving into billions of tiny primitives toward the horizon. Late-1990s scientific visualization sensibility refined with modern editorial polish, botanical greens, wildflower reds and whites, warm sunlight, precise yet lush, no words, no logos."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format high-end academic cover art for a paper on hashed alpha testing. A receding row of delicate fern fronds, pine needles, leaves, and hair-thin silhouettes remains visibly stable into the distance; one side breaks apart under a rigid alpha threshold while the other resolves through elegant blue-gold quasi-random hashed sampling dots anchored to geometry. Macro-to-horizon composition, dark graphite background, luminous emerald foliage, amber and cyan sampling patterns, precise scientific aesthetic, strong depth, no text, no equations, no logos."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format cinematic technical cover art about the vegetation rendering pipeline of a vast post-apocalyptic open-world landscape. A richly vegetated valley at golden hour with tall grasses, ferns, shrubs, and layered trees moving in a visible wind field; subtle translucent overlays reveal three levels of tree motion, grass LOD meshes, custom mip chains, G-buffer colors, and cascading sun-shadow regions. Balance artistry and engineering, warm gold against deep teal and forest green, monumental scale, realistic game-environment quality, no characters, no recognizable franchise symbols, no words, no logos."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format scholarly cover art for real-time realistic forest rendering and lighting. View from a detailed foreground tree through a vast forest to the aerial horizon, with the representation transitioning seamlessly from individual illuminated trees into z-field layers and a terrain shader-map. Sun and sky lighting, canopy self-shadowing, ground shadows, atmospheric depth, and a subtle opposition hotspot are all visually legible. Photorealistic forest fused with refined scientific visualization, moss green, cool blue haze, shafts of warm sunlight, no text, no logos."
}
```

#### Tool call: `generate_image`

```json
{
  "prompt": "Portrait-format premium academic cover art for responsive real-time grass rendering on general 3D scenes. Thousands of individually modeled grass blades flow over rolling terrain and continue impossibly across a curved Möbius-like stone form, each blade bending under wind, gravity, and collisions from a smooth sphere leaving a trail. Selected blades reveal tessellated geometric control points and culling halos, while the field stays dense and natural. Fresh green and turquoise palette with coral accents, clean cinematic studio landscape, technically precise, no words, no logos."
}
```

### 52. Tool result: generate_image

GENERATED IMAGE #BWNJYL
URL: /images/BWNJYL
Model: gpt-image-2
Prompt: Portrait-format scholarly cover art for a computer graphics paper on real-time GPU tree generation. A single majestic deciduous tree transitions from luminous procedural branch splines and tiny GPU work-graph nodes on the left into richly tessellated bark, leaves, blossoms, fruit, and touches of snow on the right; distant copies fade through continuous geometric levels of detail across a wide digital landscape. Deep forest green, copper, and electric cyan palette, crisp cinematic lighting, elegant technical visualization fused with natural realism, sophisticated and uncluttered composition, no words, no logos, no border.

### 53. Tool result: generate_image

GENERATED IMAGE #9PUTQ6
URL: /images/9PUTQ6
Model: gpt-image-2
Prompt: Portrait-format premium cover art for a technical presentation on procedural grass in a samurai-era island landscape. Ground-level view through thousands of individually generated grass blades bending in layered wind waves; a misty river valley, dark pines, distant torii-like wooden gate, and mountains beyond. Subtle compute-grid tiles and cubic Bezier control curves appear as faint luminous overlays among selected blades, suggesting GPU placement, culling, and blade generation. Painterly cinematic realism with Japanese ink-wash atmosphere, emerald, gold, charcoal, and mist-white palette, no people, no words, no logos.

### 54. Tool result: generate_image

GENERATED IMAGE #H7LWZA
URL: /images/H7LWZA
Model: gpt-image-2
Prompt: Portrait-format scholarly cover art for a foundational computer graphics paper about modeling and rendering plant ecosystems. An intricate mountain meadow and stream shown as a layered systems diagram made beautiful: terrain contours below, ecological plant distributions as colored point fields, procedural flowers and trees emerging above, and repeated vegetation instances dissolving into billions of tiny primitives toward the horizon. Late-1990s scientific visualization sensibility refined with modern editorial polish, botanical greens, wildflower reds and whites, warm sunlight, precise yet lush, no words, no logos.

### 55. Tool result: generate_image

GENERATED IMAGE #Y7NN3U
URL: /images/Y7NN3U
Model: gpt-image-2
Prompt: Portrait-format high-end academic cover art for a paper on hashed alpha testing. A receding row of delicate fern fronds, pine needles, leaves, and hair-thin silhouettes remains visibly stable into the distance; one side breaks apart under a rigid alpha threshold while the other resolves through elegant blue-gold quasi-random hashed sampling dots anchored to geometry. Macro-to-horizon composition, dark graphite background, luminous emerald foliage, amber and cyan sampling patterns, precise scientific aesthetic, strong depth, no text, no equations, no logos.

### 56. Tool result: generate_image

GENERATED IMAGE #HK3X7F
URL: /images/HK3X7F
Model: gpt-image-2
Prompt: Portrait-format cinematic technical cover art about the vegetation rendering pipeline of a vast post-apocalyptic open-world landscape. A richly vegetated valley at golden hour with tall grasses, ferns, shrubs, and layered trees moving in a visible wind field; subtle translucent overlays reveal three levels of tree motion, grass LOD meshes, custom mip chains, G-buffer colors, and cascading sun-shadow regions. Balance artistry and engineering, warm gold against deep teal and forest green, monumental scale, realistic game-environment quality, no characters, no recognizable franchise symbols, no words, no logos.

### 57. Tool result: generate_image

GENERATED IMAGE #S5W4RS
URL: /images/S5W4RS
Model: gpt-image-2
Prompt: Portrait-format scholarly cover art for real-time realistic forest rendering and lighting. View from a detailed foreground tree through a vast forest to the aerial horizon, with the representation transitioning seamlessly from individual illuminated trees into z-field layers and a terrain shader-map. Sun and sky lighting, canopy self-shadowing, ground shadows, atmospheric depth, and a subtle opposition hotspot are all visually legible. Photorealistic forest fused with refined scientific visualization, moss green, cool blue haze, shafts of warm sunlight, no text, no logos.

### 58. Tool result: generate_image

GENERATED IMAGE #V3NMLZ
URL: /images/V3NMLZ
Model: gpt-image-2
Prompt: Portrait-format premium academic cover art for responsive real-time grass rendering on general 3D scenes. Thousands of individually modeled grass blades flow over rolling terrain and continue impossibly across a curved Möbius-like stone form, each blade bending under wind, gravity, and collisions from a smooth sphere leaving a trail. Selected blades reveal tessellated geometric control points and culling halos, while the field stays dense and natural. Fresh green and turquoise palette with coral accents, clean cinematic studio landscape, technically precise, no words, no logos.

### 59. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "BWNJYL",
  "document_id": "EDURTK",
  "micro_abstract": "Introduces a GPU work-graph pipeline that generates, animates, edits, and continuously LODs detailed seasonal trees every frame, replacing gigabytes of baked geometry with kilobytes of parameters."
}
```

### 60. Tool result: update_document_metadata

Updated metadata for #EDURTK: cover_image_id, micro_abstract

### 61. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "9PUTQ6",
  "document_id": "66Q3W3",
  "micro_abstract": "Explains Ghost of Tsushima’s compute-driven grass pipeline, from tiled placement and culling to indirect drawing, cubic Bézier blade geometry, variable LOD, wind animation, and material shading."
}
```

### 62. Tool result: update_document_metadata

Updated metadata for #66Q3W3: cover_image_id, micro_abstract

### 63. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "H7LWZA",
  "document_id": "GBXEP3",
  "micro_abstract": "Presents a foundational pipeline for authoring plant ecosystems through terrain design, ecological simulation, procedural plant models, approximate instancing, and efficient rendering of billion-primitive scenes."
}
```

### 64. Tool result: update_document_metadata

Updated metadata for #GBXEP3: cover_image_id, micro_abstract

### 65. Tool result: update_document_metadata

Updated metadata for #QHMFH2: cover_image_id, micro_abstract

### 66. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "HK3X7F",
  "document_id": "ABD2B8",
  "micro_abstract": "A production breakdown of Horizon Zero Dawn’s vegetation pipeline, covering global wind simulation, layered foliage motion, coverage-preserving alpha mipmaps, shading, asset LODs, placement, and cascaded shadows."
}
```

### 67. Tool result: update_document_metadata

Updated metadata for #ABD2B8: cover_image_id, micro_abstract

### 68. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "S5W4RS",
  "document_id": "BDBBL6",
  "micro_abstract": "Combines detailed z-field trees with terrain shader-maps to render immense forests in real time, preserving sun, sky, canopy, and ground-lighting effects through seamless, scale-consistent transitions."
}
```

### 69. Tool result: update_document_metadata

Updated metadata for #BDBBL6: cover_image_id, micro_abstract

### 70. Assistant tool calls

#### Tool call: `update_document_metadata`

```json
{
  "cover_image_id": "V3NMLZ",
  "document_id": "PQ68ZH",
  "micro_abstract": "Renders every grass blade as responsive tessellated geometry on arbitrary 3D surfaces, with per-blade wind, gravity, and collision physics plus aggressive culling that retains dense fields in real time."
}
```

### 71. Tool result: update_document_metadata

Updated metadata for #PQ68ZH: cover_image_id, micro_abstract

### 72. Assistant

Read all seven documents and added tailored microabstracts and original cover art:

- #EDURTK — cover #BWNJYL
- #66Q3W3 — cover #9PUTQ6
- #GBXEP3 — cover #H7LWZA
- #QHMFH2 — cover #Y7NN3U
- #ABD2B8 — cover #HK3X7F
- #BDBBL6 — cover #S5W4RS
- #PQ68ZH — cover #V3NMLZ

Each cover reflects the document’s specific technical contribution—GPU work graphs, procedural blade generation, ecosystem simulation, hashed sampling, production vegetation pipelines, multiscale forest lighting, or responsive grass physics.
