File size: 1,105 Bytes
67f71c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
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
"""Data models for the shader environment."""

from openenv.core.env_server.types import Action, Observation
from pydantic import Field


class ShaderAction(Action):
    """Agent submits Shadertoy-dialect GLSL fragment shader source."""

    code: str = Field(..., description="Shadertoy-dialect GLSL fragment shader source")


class ShaderObservation(Observation):
    """Observation returned after reset or step."""

    # Task context
    task: str = Field(default="")
    remaining: int = Field(default=0)

    # Reference (non-empty on reset only)
    reference_png: str = Field(
        default="",
        description="Base64-encoded PNG of the reference render. Non-empty on reset only.",
    )

    # Render result
    compiled: bool = Field(default=False)
    rendered: bool = Field(default=False)
    errors: list[str] = Field(default_factory=list)
    agent_png: str = Field(
        default="",
        description="Base64-encoded PNG of the agent's render. Empty if compile failed.",
    )

    # Reward signal
    ssim: float = Field(default=0.0, description="SSIM vs reference in [0, 1]")