spec.md 3.2 KB

ADDED Requirements

Requirement: Support configurable 3D rectangle dimensions

The system SHALL provide a 3D rectangle component with configurable length, width, and height, where height defines the raised wall height from the base rectangle.

Scenario: Render with explicit dimensions

  • WHEN a developer sets length, width, and height
  • THEN the component MUST render four raised walls and a matching bottom perimeter path using those dimensions

Scenario: Render with default dimensions

  • WHEN the component is rendered without dimension props
  • THEN the component MUST render with default non-zero length, width, and height

Requirement: Render wall color gradient from bottom to top

The four walls MUST render a vertical gradient from bottom to top and support opacity interpolation across that same direction.

Scenario: Apply custom wall gradient colors

  • WHEN a developer sets wall bottom and top colors
  • THEN each wall MUST show a continuous bottom-to-top gradient using those colors

Scenario: Keep gradient direction stable

  • WHEN the component dimensions change
  • THEN the gradient direction MUST remain bottom-dark to top-light on all four walls

Scenario: Apply opacity fade on walls

  • WHEN a developer sets wall bottom opacity and wall top opacity
  • THEN each wall MUST interpolate transparency from bottom to top while keeping the configured color gradient

Scenario: Configure gradient progress percentage

  • WHEN a developer sets wall gradient progress between 0 and 100
  • THEN the wall color and opacity transition MUST complete within the configured percentage of wall height

Requirement: Provide perimeter animated Line2 effect on base rectangle

The base rectangle perimeter MUST support animated Line2 flowing segments.

Scenario: Configure Line2 width and color

  • WHEN a developer sets lineWidth and lineColor
  • THEN the perimeter running line MUST render with the configured width and color in canvas

Scenario: Configure running speed

  • WHEN a developer sets lineSpeed
  • THEN the line flow movement MUST update at the configured speed

Scenario: Configure gradient length and segment count

  • WHEN a developer sets gradientLength and segmentCount
  • THEN the running line MUST reflect configured fade length and number of flowing line segments

Requirement: Keep implementation in three.js canvas pipeline

The implementation MUST be based on tresjs/three rendering in canvas and MUST NOT rely on CSS animation for core visual behavior.

Scenario: Validate rendering path

  • WHEN the component is used in project preview
  • THEN all visual effects (walls gradient and perimeter line flow) MUST be produced by three.js materials/geometry in canvas

Requirement: Store shader source as component-scoped files

Shader source code MUST be stored under src/shader/<component-name>/ and separated into vertex and fragment files.

Scenario: Organize shader files

  • WHEN the rectangle shimmer component introduces wall shaders
  • THEN the shader source MUST be read from component-scoped vertex and fragment files instead of inline strings in the Vue component