# Render Referansı - Işınlar

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/render_beams
- **Çeviri tarihi:** 2025-09-08

## Render Kütüphanesi Referansları

Bu sayfa, [Render Kütüphanesini](https://gmod.tr/wiki/render) belgelemeye adanmış bir dizi sayfa olan Render Referansının bir parçasıdır.

Diğer Render Referansları sayfaları şunları içerir:

- **Işınlar (Beams)**
- [Küçültme ve Büyütme Doku Filtreleri](https://gmod.tr/wiki/render_min_mag_filters)
- [Render Hedefleri (Render Targets)](https://gmod.tr/wiki/render_rendertargets)

  - [Şablonlar (Stencils)](https://gmod.tr/wiki/render_stencils)

## Işınlar (Beams) Nedir?

Işın fonksiyonları, birden çok bağlı Işın Parçasından (Beam Segments) 3D uzayda sürekli çizgiler çizmeyi kolaylaştırır.
Işın Parçaları, düzlüklerini gizlemek için her zaman kameraya bakmaya çalışan (Billboards) dokulu dörtgenlerden (quads) çizilir. İticilerdeki alev, halatlar, şimşek efektleri ve daha fazlası gibi şeyler için kullanılırlar.

Işınları çizmek için iki yaklaşım vardır:

- Yalnızca tek bir Işın Parçası gerektiren düz hatlı Işınlar, şunlar kullanılarak kolayca çizilebilir:

  - [render.DrawBeam()](https://gmod.tr/wiki/render.DrawBeam)
- Bükülen, kıvrılan veya başka bir şekilde birden fazla Işın Parçası gerektiren sürekli Işınlar, şunlar kullanılarak çizilebilir:

  - [render.StartBeam()](https://gmod.tr/wiki/render.StartBeam)
  - [render.AddBeam()](https://gmod.tr/wiki/render.AddBeam)
  - [render.EndBeam()](https://gmod.tr/wiki/render.EndBeam)

## Örnekler

### Örnek: Çok Parçalı (Multi-Segment)

Birden çok Işın Parçasından oluşan sürekli bir Işın kullanarak bir yıldız çizimi.

Bu örneği kendiniz çalıştırmak isterseniz, `garrysmod/addons` içinde "RenderBeamExample" adında yeni bir klasör oluşturun ve aşağıdaki örnek kodu `garrysmod/addons/RenderBeamExample/lua/autorun/client/` içindeki bir `.lua` dosyasına yerleştirin.

Beklenmedik davranışları önlemek için diğer tüm örnek kodların kaldırıldığından veya değiştirildiğinden emin olun!

```lua
-- Yapılandırma değişkenleri
local beamWidth = 10
local starRadius = 100
local starCenter = Vector( 0, 0, 0 )

-- Yıldızın noktalarını hesapla
-- Bu açılar, iyi görünene kadar tahmin edilip kontrol edilerek belirlendi
local starTopLeft =     starCenter + Vector( 0, math.sin( math.rad(      -60 ) ), math.cos( math.rad(      -60 ) ) ) * starRadius
local starTopRight =    starCenter + Vector( 0, math.sin( math.rad(       60 ) ), math.cos( math.rad(       60 ) ) ) * starRadius
local starTopCenter =   starCenter + Vector( 0, math.sin( math.rad(        0 ) ), math.cos( math.rad(        0 ) ) ) * starRadius
local starBottomLeft =  starCenter + Vector( 0, math.sin( math.rad( 180 + 35 ) ), math.cos( math.rad( 180 + 35 ) ) ) * starRadius
local starBottomRight = starCenter + Vector( 0, math.sin( math.rad( 180 - 35 ) ), math.cos( math.rad( 180 - 35 ) ) ) * starRadius

hook.Add( "PostDrawOpaqueRenderables", "RenderBeamMultiSegmentExample", function()
    -- Işının rengine tepki veren bir materyal kullan
    render.SetColorMaterial()

    -- Işın Parçalarının tel kafes görünümünü görmek için aşağıdaki satırın yorumunu kaldırın
    -- render.SetMaterial( Material( "models/wireframe" ) )

    -- Her render.AddBeam() çağrısı, Işının yolu boyunca başka bir "durak" ekler.
    -- Aralarında bir Işın Parçası çizilebilmesi için en az iki "durak" olmalıdır.
    render.StartBeam( 6 )
        render.AddBeam( starBottomLeft,  beamWidth, 0, Color( 162, 224,  46 ) )
        render.AddBeam( starTopCenter,   beamWidth, 0, Color(  27, 189, 189 ) )
        render.AddBeam( starBottomRight, beamWidth, 0, Color( 190,  38, 165 ) )
        render.AddBeam( starTopLeft,     beamWidth, 0, Color( 224, 132,  46 ) )
        render.AddBeam( starTopRight,    beamWidth, 0, Color( 207,  30,  30 ) )
        render.AddBeam( starBottomLeft,  beamWidth, 0, Color( 162, 224,  46 ) )
    render.EndBeam()
end )
```

[render.AddBeam](https://gmod.tr/wiki/render.AddBeam) çağrılarında belirtilen genişlikte olan Işının başladığı ve bittiği yere (yıldızın sol alt köşesi) dikkat edin. Yıldızın diğer köşelerinde, Işının ucu bir sonraki Işın Parçasının yönünü karşılamak için döndürüldüğünden Işın daha ince görünür. Bu, aşağıdaki ikinci ekran görüntüsünde görülen tel kafes görünümünde daha kolay fark edilir.

![MultiSegmentBeamStarColor.png](https://gmod.tr/api/uploads/wiki/d4cbdb9464717b1c9601.png)

![MultiSegmentBeamStarWireframe.png](https://gmod.tr/api/uploads/wiki/e62f3c70739c9ec4160a.png)

### Örnek: Tek Parçalı (Single-Segment)

Tek Işın Parçalarından oluşan birkaç Işın kullanarak bir yıldız çizimi.

Bu örneği kendiniz çalıştırmak isterseniz, `garrysmod/addons` içinde "RenderBeamExample" adında yeni bir klasör oluşturun ve aşağıdaki örnek kodu `garrysmod/addons/RenderBeamExample/lua/autorun/client/` içindeki bir `.lua` dosyasına yerleştirin.

Beklenmedik davranışları önlemek için diğer tüm örnek kodların kaldırıldığından veya değiştirildiğinden emin olun!

```lua
-- Yapılandırma değişkenleri
local beamWidth = 10
local starRadius = 100
local starCenter = Vector( 0, 0, 0 )

-- Yıldızın noktalarını hesapla
-- Bu açılar, iyi görünene kadar tahmin edilip kontrol edilerek belirlendi
local starTopLeft =     starCenter + Vector( 0, math.sin( math.rad(      -60 ) ), math.cos( math.rad(      -60 ) ) ) * starRadius
local starTopRight =    starCenter + Vector( 0, math.sin( math.rad(       60 ) ), math.cos( math.rad(       60 ) ) ) * starRadius
local starTopCenter =   starCenter + Vector( 0, math.sin( math.rad(        0 ) ), math.cos( math.rad(        0 ) ) ) * starRadius
local starBottomLeft =  starCenter + Vector( 0, math.sin( math.rad( 180 + 35 ) ), math.cos( math.rad( 180 + 35 ) ) ) * starRadius
local starBottomRight = starCenter + Vector( 0, math.sin( math.rad( 180 - 35 ) ), math.cos( math.rad( 180 - 35 ) ) ) * starRadius

hook.Add( "PostDrawOpaqueRenderables", "RenderBeamSingleSegmentExample", function()
    -- Işının rengine tepki veren bir materyal kullan
    render.SetColorMaterial()

    -- Işınların tel kafes görünümünü görmek için bu satırın yorumunu kaldırın
    -- render.SetMaterial( Material( "models/wireframe" ) )

    -- Hesaplanan noktalar arasına yıldızın çizgilerini çiz
    render.DrawBeam( starBottomLeft,  starTopCenter,   beamWidth, 0, 1, Color( 162, 224,  46 ) )
    render.DrawBeam( starTopCenter,   starBottomRight, beamWidth, 0, 1, Color(  27, 189, 189 ) )
    render.DrawBeam( starBottomRight, starTopLeft,     beamWidth, 0, 1, Color( 190,  38, 165 ) )
    render.DrawBeam( starTopLeft,     starTopRight,    beamWidth, 0, 1, Color( 224, 132,  46 ) )
    render.DrawBeam( starTopRight,    starBottomLeft,  beamWidth, 0, 1, Color( 207,  30,  30 ) )
end )
```

![SingleSegmentBeamStarColor.png](https://gmod.tr/api/uploads/wiki/91c5db2e6615b09d9de3.png)

![SingleSegmentBeamStarWireframe.png](https://gmod.tr/api/uploads/wiki/677fe3f07aebcc036b18.png)

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/render_beams
