# 微分可能レイキャスター 2D

この例は、微分可能性を実現するためにソフトサンプリングを使用した、シンプルな微分可能レイキャスターを示しています。

## 概念

- **シーン**: 強度値を表す2Dグリッド `[N, N]`。
- **カメラ**: 中心に配置され、全方向にレイを放射。
- **ソフトサンプリング**: 勾配の伝播を可能にするため、ハードインデックスの代わりにガウシアン重み付きサンプリングを使用。
- **レンダリング**: 各レイに沿ってサンプルを蓄積し、1D画像を生成。

## 実装の詳細

- **ガウシアン重み**: 各サンプル位置 `(px, py)` に対して、`exp(-dist^2 / sigma^2)` を使用して全グリッドセルの重みを計算。
- **重み付きサンプル**: `sum(weights * scene) / (sum(weights) + epsilon)`。
- **最適化**: レンダリング画像と目標画像間のMSEを最小化する勾配降下法。

## 使用方法

```bash
tl run examples/tasks/tensor_logic/raycast/raycast.tl
```

## 注意事項

- 現在の実装では、より高速な反復のために小さなグリッド (8x8) と限られたレイを使用しています。
- ソフトサンプリングを通じた勾配フローにより、レンダリング画像からのシーン再構築が可能になります。
