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]")
|