diff --git a/celestia.cfg.in b/celestia.cfg.in
index 61c2ad552f4..627f41c0083 100644
--- a/celestia.cfg.in
+++ b/celestia.cfg.in
@@ -248,11 +248,12 @@ StarTextures
#------------------------------------------------------------------------
-# FaintestVisibleMagnitude defines the lowest magnitude at which a star
-# will be displayed in Celestia. This setting may be adjusted real-time
-# via the '[' and ']' keys in Celestia. The default value is 6.0.
+# Exposure defines the time of light accumulation. It affects the
+# brightness and the number of visible point sources (e.g. stars).
+# This setting may be adjusted real-time via the '[' and ']' keys.
+# The default value is 1.0.
#------------------------------------------------------------------------
- FaintestVisibleMagnitude 6.0
+ Exposure 1.0
#------------------------------------------------------------------------
diff --git a/controls.txt b/controls.txt
index ce1d2dcae89..32415da2fa3 100644
--- a/controls.txt
+++ b/controls.txt
@@ -98,13 +98,8 @@ N ...................................... Spacecraft
} ....................................... Increase Ambient Light
( ....................................... Decrease Galaxy Light Gain
) ....................................... Increase Galaxy Light Gain
- [ ....................................... Decrease Magnitude Limit :
- - If AutoMag OFF: Decrease limiting magnitude (fewer stars)
- - If AutoMag ON : Decrease limiting magnitude at 45 deg FOV
- ] ....................................... Increase Magnitude :
- - If AutoMag OFF: Increase limiting magnitude (more stars)
- - If AutoMag ON : Increase limiting magnitude at 45 deg FOV
- Ctrl+Y ............................... Toggle Auto Magnitude (auto adaptation of star visibility to FOV
+ [ ....................................... Decrease Exposure Time
+ ] ....................................... Increase Exposure Time
, ....................................... Narrow Field Of View [Shift+Left Drag]
. ....................................... Widen Field Of View [Shift+Left Drag]
Ctrl+X ............................... Toggle Antialias lines
@@ -113,7 +108,6 @@ N ...................................... Spacecraft
Ctrl+V ............................... Cycle among supported OpenGL render paths
+ ...................................... Toggle Planet Texture type (Artistic / Limit of Knowledge)
% ..................................... Star color table toggle
- Ctrl+S ............................... Cycle the Star Style (points / fuzzy discs / scaled discs)
V ...................................... Cycle the Info text verbosity (None / Terse / Verbose)
Ctrl+W .............................. Toggle Wireframe mode
diff --git a/help/CelestiaGuide.html b/help/CelestiaGuide.html
index a9575569329..8338a5f2499 100644
--- a/help/CelestiaGuide.html
+++ b/help/CelestiaGuide.html
@@ -1431,11 +1431,7 @@
V
@@ -2477,7 +2453,7 @@ Answer:
reduce the screen refresh rate
reduce the size of the window
reduce the size of objects drawn in the window so fewer stars and galaxies are obscured
- reduce the number of stars and galaxies being obscured by turning down the limiting magnitude (type a [ several times) or by disabling them entirely
+ reduce the number of stars and galaxies being obscured by decreasing exposure (type a [ several times) or by disabling them entirely
reduce the number of objects being drawn by loading fewer addons.
diff --git a/locale/controls_be.txt b/locale/controls_be.txt
index 75834a55027..4486bb5dfd3 100644
--- a/locale/controls_be.txt
+++ b/locale/controls_be.txt
@@ -98,13 +98,8 @@ N ..................... Караблі
} .................... Павялічыць расьсеянае сьвятло
( .................... Зьменшыць узмацненьне сьвятла ґаляктык
) .................... Павялічыць узмацненьне сьвятла ґаляктык
- [ .................... Зьменшыць гранічную яркасьць:
- - АўтаЯрк-ць ВЫКЛ: зьменшыць гр-ю ярк-ць (меней зорак)
- - АўтаЯрк-ць УКЛ: зьменшыць гр-ю ярк-ць пры ПЗ 45°
- ] .................... Павялічыць гранічную яркасьць:
- - АўтаЯрк-ць ВЫКЛ: павялічыць гр-ю ярк-ць (болей зорак)
- - АўтаЯрк-ць УКЛ: павялічыць гр-ю ярк-ць пры ПЗ 45°
- Ctrl+Y ............... Укл./Выкл. аўтаяркасьць (адаптацыю бачнасьці зорак да ПЗ)
+ [ .................... Паменшыць час экспазіцыі
+ ] .................... Павялічыць час экспазіцыі
, .................... Зьменшыць поле зроку [Shift+Перацягваньне правай]
. .................... Пашырыць поле зроку [Shift+Перацягваньне левай]
Ctrl+X ............... Укл./Выкл. згладжваньне ліній
@@ -113,7 +108,6 @@ N ..................... Караблі
Ctrl+V ............... Зьмяніць тып будаўніка OpenGL
+ .................... Паказваць тэкстуру плянэт: мастацкую ці з абмежаваньнем ведаў
% .................... Зьмяніць колер зорак
- Ctrl+S ............... Зьмяніць стыль зорак (кропкі/размытыя/дыскі)
V .................... Зьмяніць тып зьвестак (няма/сьціслы/падрабязны)
Ctrl+W ............... Укл./Выкл. каркасны рэжым
diff --git a/locale/controls_bg.txt b/locale/controls_bg.txt
index 0a1c9727d4d..118b67463f6 100644
--- a/locale/controls_bg.txt
+++ b/locale/controls_bg.txt
@@ -98,13 +98,8 @@ N ...................................... Космически апарати
} ....................................... Увеличаване на фонова светлина
( ....................................... Намаляване на галактическата осветеност
) ....................................... Увеличаване на галактическата осветеност
- [ ....................................... Намаляване на лимита на звездната величина :
- - Ако автоматичната е изключена: Намалява лимита (по-малко видими звезди)
- - Ако автоматичната е включена : Намалява лимита с 45 градусово FOV
- ] ....................................... Увеличаване на лимита на звездната величина :
- - Ако автоматичната е изключена: Увеличава лимита (повече видими звезди)
- - Ако автоматичната е включена : Увеличава лимита с 45 градусово FOV
- Ctrl+Y ............................... Включване на автоматичната звездна величина (автоматична адаптация към FOV)
+ [ ....................................... Намаляване на времето за експозиция
+ ] ....................................... Увеличаване на времето за експониране
, ....................................... Тясно зрително поле [Shift+Влачене наляво]
. ....................................... Широко зрително поле [Shift+Влачене наляво]
Ctrl+X ............................... Включване на изглаждане на линии
@@ -113,7 +108,6 @@ N ...................................... Космически апарати
Ctrl+V ............................... Превъртане на поддържаното OpenGL рендериране
+ ...................................... Превключване на планетните текстури (Артистични / Ограничени)
% ..................................... Включване на списъка с цвета на звездите
- Ctrl+S ............................... Превъртане на стила на звездите (точки / неясни дискове / мащабирани дискове)
V ...................................... Превъртане на обема на информационния текст (Нищо / Сбито / Подробно)
Ctrl+W .............................. Включване на режим wireframe
diff --git a/locale/controls_de.txt b/locale/controls_de.txt
index 07fc00a7b9e..e1c7048866d 100644
--- a/locale/controls_de.txt
+++ b/locale/controls_de.txt
@@ -171,16 +171,8 @@ AltGr+{ ............. Streulichtanteil verringern
AltGr+} ............. Streulichtanteil erhöhen
Umschalt+( ...... Galaxienhelligkeit verringern (unabhängig von Sternhelligkeit)
Umschalt+) ...... Galaxienhelligkeit erhöhen (unabhängig von Sternhelligkeit)
-AltGr+[ ............. Grenzmagnitude verringern:
- - Wenn autoMag AUS: Magnitude verringern (weniger Sterne
- sichtbar)
- - Wenn autoMag EIN: Magnitude verringern bei 45° Blickfeld
-AltGr+] ............. Grenzmagnitude erhöhen:
- - Wenn autoMag AUS: Magnitude vergrößern (mehr Sterne
- sichtbar)
- - Wenn autoMag EIN: Magnitude vergrößern bei 45° Blickfeld
-Strg+Y ............. autoMag ein-/ausschalten (autoMag = Automatische Anpassung
- der Sternensichtbarkeit an das Blickfeld)
+AltGr+[ ............. Belichtungszeit verringern
+AltGr+] ............. Belichtungszeit erhöhen
, ....................... Blickfeld verkleinern (oder Umschalt+Linke Maustaste (ziehen))
. ....................... Blickfeld vergrößern (oder Umschalt+Linke Maustaste (ziehen))
Strg+X ............. Kantenglättung (Antialiasing) ein-/ausschalten (z. B. für die
@@ -192,8 +184,6 @@ Strg+V .............. Unterstützte OpenGL-Methoden durchschalten
+ ....................... Zwischen 'Limit Of Knowledge'-Texturen und interpretierenden
Texturen umschalten
% ....................... Farben für die Sterndarstellung umschalten
-Strg+S .............. Aussehen der Sterne ändern (verschwommene Punkte, Punkte,
- skalierte Scheiben)
V ....................... Umfang des Informationstextes verändern (knapp/ ausführlich/
kein Text)
Strg+W ............. Drahtgitter-Modus ein-/ausschalten
diff --git a/locale/controls_es.txt b/locale/controls_es.txt
index 39cdc31508e..3d2bd274c54 100644
--- a/locale/controls_es.txt
+++ b/locale/controls_es.txt
@@ -69,10 +69,8 @@ O : Mostrar órbitas
^ : Mostrar nebulosas
% : Saturación de colores de las estrellas
; : Mostrar una esfera de coordenadas ecuatoriales terrestres
-[ : Si autoMag OFF: Reducir la magnitud límite (menos estrellas visibles)
- Si autoMag ON : Reducir la magnitud límite a 45 grados de campo visual
-] : Si autoMag OFF: Aumentar la magnitud límite (más estrellas visibles)
- Si autoMag ON : Aumentar la magnitud límite a 45 grados de campo visual
+[ : Disminuir el tiempo de exposición
+] : Aumentar el tiempo de exposición
{ : Reducir la luz ambiente
} : Increase ambient illumination
( : Reducir el brillo de las galaxias independientemente del de las estrellas
@@ -86,12 +84,10 @@ Ctrl+E : Mostrar sombras de eclipses
Ctrl+K : Mostrar marcadores
Ctrl+L : Mostrar el lado nocturno de los planetas (contaminación lumínica)
Ctrl+P : Marcar el objeto seleccionado
-Ctrl+S : Cambiar el estilo de las estrellas entre discos difusos, puntos y discos a escala
Ctrl+T : Mostrar colas de cometas
Ctrl+V : Cambiar entre los procesos OpenGL soportados
Ctrl+W : Cambiar a modo alambres
Ctrl+X : Cambiar a suavizado de líneas
-Ctrl+Y : Cambiar autoMag = adaptación automática de la visibilidad estelar al
campo visual
+ : Cambiar entre representación artística y límite del conocimiento en las
texturas planetarias
diff --git a/locale/controls_fr.txt b/locale/controls_fr.txt
index c5a5c5956d1..beb0b0e0694 100644
--- a/locale/controls_fr.txt
+++ b/locale/controls_fr.txt
@@ -142,26 +142,19 @@ F1 ou S................... Arrête le mouvement
{ ........................... Diminue la lumière ambiante
} ........................... Augmente la lumière ambiante
Ctrl + X ................. Anticrénelage. Lisse les lignes affichées ( ex : orbites)
- Ctrl + Y ................. Auto Magnitude (on/off). Adaptation automatique de la
- visibilité des étoiles en fonction du CdV. Parfait avec l'addon
- contenant une base de données de 2 millions d'étoiles.
Alt + Entrée .......... Bascule Plein écran / mode fenêtré
, (virgule) .............. Diminue le champ de vision (CdV). (aussi avec Maj + drag).
. (point) ................. Augmente le CdV. (également possible avec Maj + drag)
( ............................ Diminue l'éclat des galaxies - indépendant des étoiles
) ............................ Augmente l'éclat des galaxies - indépendant des étoiles
- [ ............................ Diminue la magnitude limite d'affichage des étoiles.
- - Si AutoMag=Off : Il s'agit de la magnitude apparente réelle
- - Sinon il s'agit de la magnitude pour un CdV de 45 degrés.
- ] ........................... Augmente la magnitude limite (on voit plus d'étoiles)
+ [ ............................ Diminuer le temps d'exposition
+ ] ........................... Augmenter le temps d'exposition
- Même fonctionnement que ci-dessus
Ctrl + P ................. Marque l'objet sélectionné. L'option d'activation des
marqueurs doit être active (Ctrl + K)
Ctrl + V ................ Cycle parmi les différents modes de rendu disponibles.
+ .......................... Bascule entre les textures de surface normales/ connues
% ......................... Bascule entre les différentes tables de couleur des étoiles
- Ctrl + S ................. Cycle entre les styles d'étoiles :
- points flous, points et échelle de disques.
V .......................... Contrôle du texte d'information (aucun, concis, complet).
Ctr + W ................. Affichage "fil de fer"
diff --git a/locale/controls_gl.txt b/locale/controls_gl.txt
index d447606b68f..0275348759d 100644
--- a/locale/controls_gl.txt
+++ b/locale/controls_gl.txt
@@ -97,13 +97,8 @@ N ....................................... Sondas Espaciais
} ....................................... Incrementa-la Luz Ambiental
( ....................................... Reduci-la Luz das Galaxias (non a das súas estrelas)
) ....................................... Incrementa-la Luz das Galaxias (non a das súas estrelas)
- [ ....................................... Reduci-lo Límite de Magnitude :
- - Se a AutoMag está OFF: Reduci-lo límite de magnitude (menos estrelas)
- - Se a AutoMag está ON : Reducir limitando a magnitude ós 45 graos do campo visual
- ] ....................................... Incrementa-la Magnitude :
- - Se a AutoMag está OFF: Incrementa-lo límite de magnitude (máis estrelas)
- - Se a AutoMag está ON : Incrementa-lo límite de magnitude ós 45 graos do campo visual
- Ctrl+Y .................................. Cambia-lo Auto Magnitude (adaptación automática da visibilidade estelar ó campo visual
+ [ ....................................... Diminuír o tempo de exposición
+ ] ....................................... Aumenta o tempo de exposición
, ....................................... Estreita-lo campo visual [Maiús.+Bt. esquerdo e arrastrar]
. ....................................... Expandi-lo campo visual [Maiús.+Bt. esquerdo e arrastrar]
Ctrl+X .................................. Cambia-lo suavizado de liñas
@@ -112,7 +107,6 @@ N ....................................... Sondas Espaciais
Ctrl+V .................................. Cambiar entre as rutas dos motores de procesación de OpenGL
+ ....................................... Cambiar entre presentación artística e o límite no coñecemento das texturas planetarias
% ....................................... Cambia-las táboas de cores das estrelas
- Ctrl+S .................................. Cambia-los estilos das estrelas entre puntos, discos difusos e discos a escala
V ....................................... Cambia-la información do texto entre ningunha, estilo seco e estilo amigable
Ctrl+W .................................. Cambiar a modo Wireframe
diff --git a/locale/controls_it.txt b/locale/controls_it.txt
index 3e265ebc5a0..d3047fde9ce 100644
--- a/locale/controls_it.txt
+++ b/locale/controls_it.txt
@@ -112,19 +112,8 @@
indipendentemente dalla luminosità delle stelle
) ............ aumenta la luminosità delle galassie,
indipendentemente dalla luminosità delle stelle
- [ ............ diminuisce il limite di magnitudine:
- - se autoMag OFF: diminuisce il limite di
- magnitudine (meno stelle visibili)
- - se autoMag ON: diminuisce il limite di
- magnitudine per un campo visivo di 45°
- ] ............ aumenta il limite di magnitudine:
- - se autoMag OFF : Aumenta il limite di
- magnitudine (più stelle visibili)
- - se autoMag ON : Aumenta il limite di
- magnitudine per un campo visivo di 45°
- Ctrl+Y ....... attiva/disattiva AutoMagnitudine = adattamento
- automatico della visibilità delle stelle al
- campo visivo (FOV)
+ [ ............ Riduzione del tempo di esposizione
+ ] ............ Aumentare il tempo di esposizione
, .......... restringe il campo visivo
. .......... allarga il campo visivo
Ctrl+X ...... attiva/disattiva l'antialias delle linee
@@ -135,8 +124,6 @@
+ .......... scambia la texture dei pianeti fra artistica
ed ai limiti delle conoscenze
% ........... mostra/nasconde le tabelle dei colori delle stelle
- Ctrl+S ...... seleziona ciclicamente lo stile delle stelle tra
- dischi sfocati, punti o dischi in scala
V ........... cambia il livello di dettaglio delle informazioni
Ctrl+W ...... mostra/nasconde la modalità Wireframe
diff --git a/locale/controls_ja.txt b/locale/controls_ja.txt
index 69da63ab971..1462cf95028 100644
--- a/locale/controls_ja.txt
+++ b/locale/controls_ja.txt
@@ -98,13 +98,8 @@ Celestia マウス・キーボードコントロール
} ....................................... 周辺光を増加
( ....................................... 銀河の光度利得を減少
) ....................................... 銀河の光度利得を増加
- [ ....................................... 限界等級を下げる:
- - 自動限界等級調整 OFF: 見える恒星を少なくする
- - 自動限界等級調整 OFF : 視野45°の時の限界等級を低くする
- ] ....................................... 限界等級を上げる:
- - 自動限界等級調整 ON: 見える恒星を多くする
- - 自動限界等級調整 OFF : 視野45°の時の限界等級を高くする
- Ctrl+Y ............................... 自動限界等級調整切替 (視野に応じて見える恒星の数を自動調整)
+ [ ....................................... 露光時間の短縮
+ ] ....................................... 露光時間を増やす
, ....................................... 視野を広く [Shift+右ドラッグ]
. ....................................... 視野を狭く [Shift+左ドラッグ]
Ctrl+X ............................... 線表示のアンチエイリアシング切替
@@ -113,7 +108,6 @@ Celestia マウス・キーボードコントロール
Ctrl+V ............................... サポートされたOpenGLレンダパスの切替
+ ...................................... 惑星のテクスチャの切替(通常/Limit of Knowledge)
% ..................................... 恒星色テーブル切替
- Ctrl+S ............................ 恒星表示方法の切替(点/ぼやけた点/等級に応じた円)
V ...................................... 天体情報詳細度切替(無し/通常/多い)
Ctrl+W .............................. ワイヤフレームモード切替
diff --git a/locale/controls_ko.txt b/locale/controls_ko.txt
index 7648ad3f228..b2864d5a946 100644
--- a/locale/controls_ko.txt
+++ b/locale/controls_ko.txt
@@ -130,24 +130,18 @@ O ................ 궤도
{ ........... 주변빛 (감소)
} ........... 주변빛 (증가)
Ctrl+X ...... 부드러운 궤도선
-Ctrl+Y ...... 자동 등급 조정
Alt+Enter.... 전체화면 전환
, ........... 시야(FOV)를 좁게 (마우스 : 쉬프트+왼쪽 버튼 드래그)
. ........... 시야(FOV)를 넓게 (마우스 : 쉬프트+왼쪽 버튼 드래그)
( ........... 은하 밝기 조정 (어둡게 : 광도 이득 감소)
) ........... 은하 밝기 조정 (밝게 : 광도 이득 증가)
-[ ........... 등급 제한 (감소):
- - If AutoMag OFF: Decrease limiting magnitude (fewer stars)
- - If AutoMag ON : Decrease limiting magnitude at 45 deg FOV
-] ........... 등급 제한 (증가):
- - If AutoMag OFF: Increase limiting magnitude (more stars)
- - If AutoMag ON : Increase limiting magnitude at 45 deg FOV
+[ ........... 노출 시간 줄이기
+] ........... 노출 시간 늘리기
Ctrl+P ...... Mark selected object (Marker display must be active--Ctrl+K)
Ctrl+V ...... OpenGl Render Paths--Cycle through the paths supported on
your graphics card
+ ........... Planet Texture Type toggle (Artistic / Limit of Knowledge)
% ........... Star color table toggle
-Ctrl+S ...... 항성 모양 전환 : 희미한 점, 점, 등급에 따른 원
V ........... 천체 정보 표시 전환(없음 / 보통 / 많이)
Ctrl+W ...... 와이어 프레임 모드 전환
diff --git a/locale/controls_nb.txt b/locale/controls_nb.txt
index d507188fee8..6cab1a47dcd 100644
--- a/locale/controls_nb.txt
+++ b/locale/controls_nb.txt
@@ -98,14 +98,8 @@ N ...................................... Romfartøy
} ....................................... Øk omgivende lys
( ....................................... Reduser galakse-lyshet
) ....................................... Øk galakse-lyshet
- [ ....................................... Reduser Magnitude-grense:
- - Hvis AutoMag AV: Reduser magnitude (færre stjerner)
- - Hvis AutoMag PÅ: Reduser magnitude ved 45 gr. synsfelt
- ] ....................................... Øk Magnitude :
- - Hvis AutoMag AV: Øk magnitude (flere stjerner)
- - Hvis AutoMag PÅ: Øk magnitude ved 45 gr. synsfelt
- Ctrl+Y ............................... Auto-Magnitude av/på (automatisk tilpassing av
- stjerne-synlighet til synsfeltet
+ [ ....................................... Reduser eksponeringstiden
+ ] ....................................... Øk eksponeringstiden
, ....................................... Smalne synsfelt [Shift+Venstre-klikk (dra)]
. ....................................... Utvid synsfelt [Shift+Venstre-klikk (dra)]
Ctrl+X ............................... Kantutjevning av linjer (f.eks. for omløpsbanen)
@@ -114,7 +108,6 @@ N ...................................... Romfartøy
Ctrl+V ............................... Skift mellom støttede OpenGL-metoder
+ ...................................... Veksle mellom planet-teksturtyper (Artistisk / Limit of Knowledge)
% ...................................... Veksle mellom farger for stjerne-fremstilling
- Ctrl+S ............................... Endre stjernestil (punkter / uklare skiver / skalerte skiver)
V ...................................... Endre omfang til info-tekst (ingen / knapp / utførlig)
Ctrl+W .............................. Trådramme-modus av/på
diff --git a/locale/controls_nl.txt b/locale/controls_nl.txt
index 0f8e65ad5a6..50c42c28a00 100644
--- a/locale/controls_nl.txt
+++ b/locale/controls_nl.txt
@@ -67,10 +67,8 @@ O : Planeetomloopbanen weergave (de)activeren
^ : Nevellen weergave (de)activeren
% : Sterrenkleur tabellen (de)activeren
; : Een Aarde-gebaseerd equatoriaal coordinaten bol weergeven (de)activeren
-[ : Als autoMag UIT is: Verminder schijnbare helderheid limiet (minder sterren zichtbaar)
- Als autoMag AAN is: Verminder schijnbare helderheid limiet bij 45 graden zichtsveld
-] : Als autoMag UIT is: Vergroot schijnbare helderheid limiet (meer sterren zichtbaar)
- Als autoMag AAN is: Vergroot schijnbare helderheid limiet bij 45 graden zichtsveld
+[ : Belichtingstijd verminderen
+] : Belichtingstijd verhogen
{ : Verminder omgevingslicht
} : Vergroot omgevingslicht
( : Verminder sterrenstelsel helderheid onafhankelijk van helderheid van sterren
@@ -84,12 +82,10 @@ Ctrl+E : Eclips schaduw weergave (de)activeren
Ctrl+K : Markers weergave (de)activeren
Ctrl+L : Nachtzijde (lichtvervuiling) van planeetkaarten weergave (de)activeren
Ctrl+P : Markeer geselecteerd object
-Ctrl+S : Verander de sterrenstijl tussen vage punten, punten en geschaalde schijven
Ctrl+T : weergave van komeetstaarten (de)activeren
Ctrl+V : Verander ondersteunde OpenGL weergave methoden
Ctrl+W : Draadmodel modus (de)activeren
Ctrl+X : Antialias lijnen (de)activeren
-Ctrl+Y : autoMag (de)activeren = auto adaptatie van ster zichtbaarheid aan zichtsveld
+ : Verander tussen artistieke en limiet van kennis planeet texturen
MeerdereVensters:
diff --git a/locale/controls_no.txt b/locale/controls_no.txt
index d507188fee8..6cab1a47dcd 100644
--- a/locale/controls_no.txt
+++ b/locale/controls_no.txt
@@ -98,14 +98,8 @@ N ...................................... Romfartøy
} ....................................... Øk omgivende lys
( ....................................... Reduser galakse-lyshet
) ....................................... Øk galakse-lyshet
- [ ....................................... Reduser Magnitude-grense:
- - Hvis AutoMag AV: Reduser magnitude (færre stjerner)
- - Hvis AutoMag PÅ: Reduser magnitude ved 45 gr. synsfelt
- ] ....................................... Øk Magnitude :
- - Hvis AutoMag AV: Øk magnitude (flere stjerner)
- - Hvis AutoMag PÅ: Øk magnitude ved 45 gr. synsfelt
- Ctrl+Y ............................... Auto-Magnitude av/på (automatisk tilpassing av
- stjerne-synlighet til synsfeltet
+ [ ....................................... Reduser eksponeringstiden
+ ] ....................................... Øk eksponeringstiden
, ....................................... Smalne synsfelt [Shift+Venstre-klikk (dra)]
. ....................................... Utvid synsfelt [Shift+Venstre-klikk (dra)]
Ctrl+X ............................... Kantutjevning av linjer (f.eks. for omløpsbanen)
@@ -114,7 +108,6 @@ N ...................................... Romfartøy
Ctrl+V ............................... Skift mellom støttede OpenGL-metoder
+ ...................................... Veksle mellom planet-teksturtyper (Artistisk / Limit of Knowledge)
% ...................................... Veksle mellom farger for stjerne-fremstilling
- Ctrl+S ............................... Endre stjernestil (punkter / uklare skiver / skalerte skiver)
V ...................................... Endre omfang til info-tekst (ingen / knapp / utførlig)
Ctrl+W .............................. Trådramme-modus av/på
diff --git a/locale/controls_pl.txt b/locale/controls_pl.txt
index 604cf117f14..279e0203bc6 100644
--- a/locale/controls_pl.txt
+++ b/locale/controls_pl.txt
@@ -146,14 +146,8 @@ O ................. Orbity planet (wyświetl WSZYSTKIE wybrane orbity)
} .................. Zwiększ oświetlenie otoczenia
( .................. Zmniejsz jasność galaktyki (niezależnie od jasności gwiazd)
) .................. Zwiększ jasność galaktyki (niezależnie od jasności gwiazd)
-[ .................. Zmniejsz wielkość:
- AutoMag OFF: Zmniejsz ograniczenie wielkości (mniej widocznych gwiazd)
- AutoMag ON: Zmniejsz ograniczenie wielkości o 45 stopni pola widzenia
-] .................. Zwiększ wielkość:
- AutoMag OFF: Zwiększ ograniczenie wielkości (więcej widocznych gwiazd)
- AutoMag ON: Zwiększ ograniczenie wielkości o 45 stopni pola widzenia
-Ctrl+Y .......... Włącz/wyłącz autoMag
- (autoMag = automatyczne dostosowanie widoczności gwiazd do pola widzenia)
+[ .................. Skrócenie czasu ekspozycji
+] .................. Wydłużenie czasu ekspozycji
, .................. Zmniejsz pole widzenia (Shift+Lewy przycisk myszy (przeciągnięcie))
. .................. Zwiększ pole widzenia (Shift+Lewy przycisk myszy (przeciągnięcie))
Ctrl+X .......... Włącz/wyłącz Antialiasing (np. dla orbit)
@@ -162,7 +156,6 @@ Ctrl+P .......... Zaznacz wybrany obiekt (markery muszą być widoczne -- Ctrl+K
Ctrl+V .......... Przełącz między wspieranymi metodami OpenGL
+ .................. Przełącz tryb tekstury planety (artystyczny/ograniczony wiedzą)
% ................. Przełącz kolory dla wyświetlania gwiazd
-Ctrl+S .......... Przełącz wygląd gwiazd (niewyraźne dyski/punkty/skalowane tarcze)
V ................. Zmień szczegółowość tekstu informacji (krótkie/szczegółowe/brak tekstu)
Ctrl+W ........ Włącz/wyłącz tryb obrazu szkieletowego
diff --git a/locale/controls_pt.txt b/locale/controls_pt.txt
index 0540122e113..9736e51b295 100644
--- a/locale/controls_pt.txt
+++ b/locale/controls_pt.txt
@@ -63,10 +63,8 @@ O : Ligar/Desligar órbitas dos planetas
^ : Ligar/Desligar renderização de nebulosas
% : Ligar/Desligar tabelas de cores estelares
; : Mostrar um esfera equatorial de coordenadas baseada na Terra
-[ : Se a magnitude automática estiver OFF: Diminuir a magnitude limite (menos estrelas visíveis)
- Se a magnitude automática estiver ON : Diminuir a magnitude limite num campo de visão de 45 graus
-] : Se a magnitude automática estiver OFF: Aumentar a magnitude limite (mais estrelas visíveis)
- : Se a magnitude automática estiver ON : Aumentar a magnitude limite num campo de visão de 45 graus
+[ : Diminuir o tempo de exposição
+] : Aumentar o tempo de exposição
{ : Diminuir a iluminação ambiente
} : Aumentar a iluminação ambiente
( : Dimunuir o brilho das galáxias independentemente do brilho das estrelas
@@ -80,12 +78,10 @@ Ctrl+E : Ligar/Desligar a renderização de sombras de eclipses
Ctrl+K : Ligar/Desligar os marcadores
Ctrl+L : Ligar/Desligar os mapas dos lados nocturnos dos planetas (poluição luminosa)
Ctrl+P : Marcar o objecto seleccionado
-Ctrl+S : Alternar o estilo de estrelas entre pontos indistintos, pontos e discos à escala.
Ctrl+T : Ligar/Desligar a renderização de caudas de cometas
Ctrl+V : Alternar entre os caminhos de renderização OpenGL suportados
Ctrl+W : Ligar/Desligar modo wireframe
Ctrl+X : Ligar/Desligar linhas anti-serrilhadas
-Ctrl+Y : Ligar/Desligar magnitude automática, ou seja, a adaptação automática da visibilidade estelar ao campo de visão
+ : Alternar entre as texturas artísticas e as do limite do conhecimento nos planetas
Multipanorama:
diff --git a/locale/controls_pt_BR.txt b/locale/controls_pt_BR.txt
index 5607c492b2a..24e560b5c5f 100644
--- a/locale/controls_pt_BR.txt
+++ b/locale/controls_pt_BR.txt
@@ -63,10 +63,8 @@ O : Ligar/Desligar órbitas dos planetas
^ : Ligar/Desligar renderização de nebulosas
% : Ligar/Desligar tabelas de cores estelares
; : Mostrar um esfera equatorial de coordenadas baseada na Terra
-[ : Se a magnitude automática estiver OFF: Diminuir a magnitude limite (menos estrelas visíveis)
- Se a magnitude automática estiver ON : Diminuir a magnitude limite num campo de visão de 45 graus
-] : Se a magnitude automática estiver OFF: Aumentar a magnitude limite (mais estrelas visíveis)
- : Se a magnitude automática estiver ON : Aumentar a magnitude limite num campo de visão de 45 graus
+[ : Diminuir o tempo de exposição
+] : Aumentar o tempo de exposição
{ : Diminuir a iluminação ambiente
} : Aumentar a iluminação ambiente
( : Dimunuir o brilho das galáxias independentemente do brilho das estrelas
@@ -80,12 +78,10 @@ Ctrl+E : Ligar/Desligar a renderização de sombras de eclipses
Ctrl+K : Ligar/Desligar os marcadores
Ctrl+L : Ligar/Desligar os mapas dos lados noturnos dos planetas (poluição luminosa)
Ctrl+P : Marcar o objecto selecionado
-Ctrl+S : Alternar o estilo de estrelas entre pontos indistintos, pontos e discos em escala.
Ctrl+T : Ligar/Desligar a renderização de caudas de cometas
Ctrl+V : Alternar entre os caminhos de renderização OpenGL suportados
Ctrl+W : Ligar/Desligar modo wireframe
Ctrl+X : Ligar/Desligar linhas anti-serrilhadas
-Ctrl+Y : Ligar/Desligar magnitude automática, ou seja, a adaptação automática da visibilidade estelar ao campo de visão
+ : Alternar entre as texturas artísticas e as do limite do conhecimento nos planetas
Multivisão:
diff --git a/locale/controls_ru.txt b/locale/controls_ru.txt
index 1558ae071bc..368263080b5 100644
--- a/locale/controls_ru.txt
+++ b/locale/controls_ru.txt
@@ -121,13 +121,8 @@
Shift+ } ......... Увеличение величины рассеянного света
Shift+ ( ......... Уменьшение яркости галактик
Shift+ ) ......... Увеличение яркости галактик
- [ ................... Уменьшение звёздной величины :
- - Если AutoMag ОТКЛ: Уменьшение количества видимых звёзд
- - Если AutoMag ВКЛ : Уменьшение в зависимости от поля зрения до 45°
- ] ................... Увеличение звёздной величины :
- - Если AutoMag ОТКЛ: Увеличение количества видимых звёзд
- - Если AutoMag ВКЛ : Увеличение в зависимости от поля зрения до 45°
- Ctrl+Y ........... Вкл./Откл. автонастройку (AutoMag) звёздной величины и поля зрения
+ [ ................... Уменьшение времени экспозиции
+ ] ................... Увеличение времени экспозиции
, ................... Увеличение поля зрения [Shift+ЛК+перемещение мышки вверх]
. ................... Уменьшение поля зрения [Shift+ЛК+перемещение мышки вниз]
Ctrl+X ........... Вкл./Откл. режима сглаживания
@@ -138,10 +133,6 @@
Shift+{+} ....... Переключение между художественными и ограниченными текстурами
Shift+% ......... Вкл./Откл. отображение звёзд согласно их спектральной
классификации (цветовой температуре)
- Ctrl+S ........... Переключение вида звёзд :
- - как точки
- - как расплывчатые точки
- - как диски
Ctrl+W .......... Вкл./Откл. каркасный режим отображения моделей
diff --git a/locale/controls_sk.txt b/locale/controls_sk.txt
index c876019f4ad..f0aaf8c4efa 100644
--- a/locale/controls_sk.txt
+++ b/locale/controls_sk.txt
@@ -99,13 +99,8 @@
} ....................................... Zvýšiť rozptýlené svetlo
( ....................................... Znížiť zosilnenie svetla galaxií
) ....................................... Zvýšiť zosilnenie svetla galaxií
- [ ....................................... Znížiť medznú hviezdnu jasnosť :
- - Ak je automatická magnitúda vypnutá: Zníži medznú jasnosť (menej hviezd)
- - Ak je automatická magnitúda zapnutá: Zníži medznú jasnosť pri zor.poli 45 stupňov
- ] ....................................... Zvýšiť medznú hviezdnu jasnosť :
- - Ak je automatická magnitúda vypnutá: Zvýši medznú jasnosť (viac hviezd)
- - Ak je automatická magnitúda zapnutá: Zvýši medznú jasnosť pri zor.poli 45 stupňov
- Ctrl+Y ............................... Prepnúť automatickú magnitúdu (automatické prispôsobenie viditeľnosti hviezd podľa zor.poľa)
+ [ ....................................... Zníženie času expozície
+ ] ....................................... Zvýšenie času expozície
, ....................................... Zúžiť zorné pole [Shift+ťahanie ľavým tlačidlom myši]
. ....................................... Rozšíriť zorné pole [Shift+ťahanie ľavým tlačidlom myši]
Ctrl+X ............................... Prepnúť vyhladzovanie čiar
@@ -114,7 +109,6 @@
Ctrl+V ............................... Prepínať podporované spôsoby vykresľovania cez OpenGL
+ ...................................... Prepnúť typ textúr planét (Umelecké / Hranica poznania)
% ..................................... Prepnúť farbu hviezd
- Ctrl+S ............................... Prepínať tvar hviezd (body / neostré body / kotúče v mierke)
V ...................................... Prepínať podrobnosť informačných textov (Žiadne / Stručné / Podrobné)
Ctrl+W .............................. Prepnúť obrysový režim
diff --git a/locale/controls_sv.txt b/locale/controls_sv.txt
index f60cea7208e..caa747d3aa6 100644
--- a/locale/controls_sv.txt
+++ b/locale/controls_sv.txt
@@ -66,10 +66,8 @@ O : Växla planeternas omloppsbanor
^ : Växla visning av nebulosor
% : Växla färgtabeller för stjärnor
; : Visa en jordbaserad ekvatorial koordinatsfär
-[ : Om autoMag är AV : Minska magnitud (färre antal stjärnor synliga)
- Om autoMag är PÅ : Minska magnitud vid ett synfält om 45 grader
-] : Om autoMag är AV : Öka magnitud (fler antal stjärnor synliga)
- Om autoMag är PÅ : Öka magnitud vid ett synfält om 45 grader
+[ : Minska exponeringstiden
+] : Öka exponeringstiden
{ : Minska omgivande ljus
} : Öka omgivande ljus
( : Minska galaxers ljusstyrka oberoende av stjärnors ljusstyrka
@@ -83,13 +81,10 @@ Ctrl+E : Vaxla förmörkelseskuggor
Ctrl+K : Vaxla visning av markeringar
Ctrl+L : Vaxla nattljus
Ctrl+P : Markera valt objekt
-Ctrl+S : Växla stjärnor som punkter, skivor eller suddiga punkter
Ctrl+T : Vaxla visning av kometsvansar
Ctrl+V : Växla mellan olika OpenGL-metoder som stöds
Ctrl+W : Vaxla trådmodellsläge
Ctrl+X : Vaxla kantutjämning
-Ctrl+Y : Vaxla autoMag = automatisk anpassning av mängden synliga stjärnor
- i synfältet
+ : Växla mellan artistiska eller kunskapsbegränsade planettexturer
Multivy:
diff --git a/locale/controls_uk.txt b/locale/controls_uk.txt
index 6da27aa80ec..4f7bbd1d1fb 100644
--- a/locale/controls_uk.txt
+++ b/locale/controls_uk.txt
@@ -71,14 +71,8 @@ O :Відобразити/сховати орбіти планет
^ :Відобразити/сховати відображення туманностей
% :Відобразити/сховати таблиці кольорів зірок
; :Показувати екваторіальну координатну сферу
-[ :Якщо autoMag вимкнено: зменшити проміжок видимих зоряних величин
- (зменшити кількість видимих зірок)
- Якщо autoMag увімкнено: зменшити проміжок видимих зоряних величин
- у полі зору у 45°
-] :Якщо autoMag вимкнено: збільшити проміжок видимих зоряних величин
- (збільшити кількість видимих зірок)
- Якщо autoMag увімкнено: збільшити проміжок видимих зоряних величин
- у полі зору у 45°
+[ :Зменшити час експозиції
+] :Збільшити час експозиції
{ :Зменшити підсвічування розсіяним світлом
} :Збільшити підсвічування розсіяним світлом
( :Зменшити світність галактики незалежно від світності зірок
@@ -92,13 +86,10 @@ Ctrl+E :Відобразити/сховати тіні від затемнен
Ctrl+K :Відобразити/сховати позначки
Ctrl+L :Відобразити/сховати світіння об’єктів на нічному боці
Ctrl+P :Позначити вибраний об’єкт
-Ctrl+S :Cycle the star style between fuzzy discs, points, and scaled discs
Ctrl+T :Відобразити/сховатиToggle rendering of comet tails
Ctrl+V :Cycle between supported OpenGL render paths
Ctrl+W :Увімкнути/вимкнути каркасний режим
Ctrl+X :Відобразити/сховати лінії згладжування кольорів
-Ctrl+Y :Увімкнути/вимкнути Toggle autoMag = автоматичне налаштування
- видимості зірок до поля зору
+ :Перемикач між припустимим і відомим виглядом планет
Мультиперегляд
diff --git a/locale/controls_zh_CN.txt b/locale/controls_zh_CN.txt
index 79e8cc7ef10..49802d25e14 100644
--- a/locale/controls_zh_CN.txt
+++ b/locale/controls_zh_CN.txt
@@ -99,13 +99,8 @@ N ...................................................... 航天器
} ....................................................... 增加环境光
( ....................................................... 减少星系光
) ....................................................... 增加星系光
- [ ....................................................... 减小星等极限 :
- - 如果关闭了星等自动调节: 减小星等极限 (更少的恒星)
- - 如果开启了星等自动调节: 在 45 度视野中减小星等极限
- ] ....................................................... 增大星等极限 :
- - 如果关闭了星等自动调节: 增大星等极限 (更多的恒星)
- - 如果开启了星等自动调节: 在 45 度视野中增大星等极限
- Ctrl 键+Y ......................................... 切换星等自动调节 (自动调节可视的恒星)
+ [ ....................................................... 减少曝光时间
+ ] ....................................................... 增加曝光时间
, ....................................................... 缩小视野 [Shift 键+左键拖动]
. ....................................................... 扩大视野 [Shift 键+左键拖动]
Ctrl 键+X ......................................... 切换反锯齿
@@ -114,7 +109,6 @@ N ...................................................... 航天器
Ctrl 键+V ......................................... 切换 OpenGL 渲染路径
+ ...................................................... 切换行星纹理样式 (艺术风格 / 有限知识)
% ..................................................... 切换恒星色表
- Ctrl 键+S ......................................... 切换恒星样式 (点 / 模糊点 / 缩放点)
V ...................................................... 切换信息显示 (无 / 简单 / 详细)
Ctrl 键+W ........................................ 切换线框模式
diff --git a/locale/controls_zh_TW.txt b/locale/controls_zh_TW.txt
index 80c1ec8f8c9..e66efc823df 100644
--- a/locale/controls_zh_TW.txt
+++ b/locale/controls_zh_TW.txt
@@ -97,13 +97,8 @@ N ...................................... 太空船
} ....................................... 減少環境/背景光
( ....................................... 提高星系的光
) ....................................... 減少星系的光
- [ ....................................... 降低星等極限
- - 如果關閉 AutoMag : 降低極限星等 (看到比少的星星)
- - 如果開啟 AutoMag : 降低極限星等, 在 45 度視野
- ] ....................................... 增加光度 :
- - 如果關閉 AutoMag: 增加極限星等 (看到比較多的星星)
- -如果開啟AutoMag: 增加極限星等, 在 45 度視野
- Ctrl+Y ............................... 定住自動星等 (自動調整視野內星星的可見度
+ [ ....................................... 减少曝光时间
+ ] ....................................... 增加曝光时间
, ....................................... 縮小視野 (拉近距離) [或 Shift+ 滑鼠左鍵向上拖曳]
. ....................................... 增加視野 (拉遠) [或 Shift+ 滑鼠左鍵向下拖曳]
Ctrl+X ............................... 定住反鋸齒線
@@ -112,7 +107,6 @@ N ...................................... 太空船
Ctrl+V ............................... 切換所支援 OpenGL 的呈現路徑
+ ...................................... 固定行星所用的佈景 (藝術風格 / 有限的知識)
% ..................................... 恆星色表固定
- Ctrl+S ............................... 切換星的呈現方式 (點狀 (最常見)/ 模糊的圓面 / 鱗狀圓面)
V ...................................... 切換螢幕上顯示的文字 (不顯示 / 簡易 / 全部顯示)
Ctrl+W .............................. 定住框線圖模式
diff --git a/locale/start_be.cel b/locale/start_be.cel
index 70ec4a0828f..c510abf8c77 100644
--- a/locale/start_be.cel
+++ b/locale/start_be.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_bg.cel b/locale/start_bg.cel
index aca3bc1d915..bf24fa025fd 100644
--- a/locale/start_bg.cel
+++ b/locale/start_bg.cel
@@ -185,20 +185,15 @@
# 0.0 to 0.5 е добър спектър
# set {name "AmbientLightLevel" value 0.1}
-# Звездна величина на най-слабата видима звезда (яркост)
-# (разкоментирайте/модифицирайте според желанието Ви)
-# Celestia UI: 0.8 to 15.2, по подразбиране 6.0
+# Exposure time (brightness)...
+# по подразбиране 1.0
+# (разкоментирайте/модифицирайте според желанието Ви)
#
-# setvisibilitylimit {magnitude 6.0}
-
-# Най-слаба автоматична звездна яркост при 45 градуса, по подразбиране е 8.5
-# (разкоментирайте/модифицирайте според желанието Ви)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Обекти, които ще бъдат показани (рендерирани):
# НЕ рендерира следните обекти (разкоментирайте/модифицирайте според желанието Ви)
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -210,7 +205,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -218,7 +212,6 @@
# Обекти, които ще бъдат показани (рендерирани):
# Рендерира следните обекти (разкоментирайте/модифицирайте според желанието Ви)
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -230,7 +223,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_de.cel b/locale/start_de.cel
index 927da1122cf..2544b25631b 100644
--- a/locale/start_de.cel
+++ b/locale/start_de.cel
@@ -212,23 +212,19 @@
# set {name "AmbientLightLevel" value 0.1}
-# Schwächste sichtbare Stern-Magnitude (Helligkeit)
-# (Aktivieren und anpassen nach Belieben)
-# Celestia UI: 0.8 bis 15.2, Voreinstellung ist 6.0
-#
-# setvisibilitylimit {magnitude 6.0}
-# Schwächste Helligkeit bei Auto-Magnitude, bei 45°
-# Voreinstellung ist 8.5 ...
-# (Aktivieren und anpassen nach Belieben)
-# setfaintestautomag45deg {magnitude 8.5}
+
+# Exposure time (brightness)...
+# Voreinstellung ist 1.0
+# (UNcomment / modify to meet your needs)
+#
+# setexposure {exposure 1.0}
# Objekte die angezeigt werden sollen:
# ZEIGE folgende Objekte NICHT AN (zum Aktivieren "#" entfernen)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -240,7 +236,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -249,7 +244,6 @@
# Objekte die angezeigt werden sollen:
# ZEIGE folgende Objekte AN (zum Aktivieren "#" entfernen)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -261,7 +255,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_es.cel b/locale/start_es.cel
index f3add9fc6ea..0b3a625840d 100644
--- a/locale/start_es.cel
+++ b/locale/start_es.cel
@@ -189,22 +189,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Magnitud (brillo) estelar más débil visible...
+# Exposure time (brightness)...
+# Default is 1.0
# (DEScomentar / modificar a voluntad)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Automag: brillo más débil visible a 45 grados de campo visual, default es 8.5...
-# (DEScomentar / modificar a voluntad)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items a ser representados (rendered):
# NO representar los siguientes objetos (DEScomentar a voluntad)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -216,7 +210,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -225,7 +218,6 @@
# Items a ser representados (rendered):
# SÍ representar los siguientes objetos (DEScomentar a voluntad)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -237,7 +229,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_fr.cel b/locale/start_fr.cel
index f40b0fdbe30..f0e02380d05 100644
--- a/locale/start_fr.cel
+++ b/locale/start_fr.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_gl.cel b/locale/start_gl.cel
index 7154e396446..468c323d1e7 100644
--- a/locale/start_gl.cel
+++ b/locale/start_gl.cel
@@ -197,22 +197,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Magnitude (brillo) estelar máis feble visible...
+# Exposure time (brightness)...
+# Por defecto é 6.0
# (DEScomente / modifique segundo as súas necesidades)
-# Celestia UI: 0.8 a 15.2, por defecto é 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Brillo máis feble visible a 45 graos, por defecto é 8.5...
-# (DEScomente / modifique segundo as súas necesidades)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Elementos para ser representados (renderizados):
# Non renderiza-los seguintes obxectos (DEScomente / modifique segundo as súas necesidades)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -224,7 +218,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -233,7 +226,6 @@
# Elementos para ser representados (renderizados):
# Renderiza-los seguintes obxectos (DEScomente / modifique segundo as súas necesidades)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -245,7 +237,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_hu.cel b/locale/start_hu.cel
index 12d41379920..e2950fdc005 100644
--- a/locale/start_hu.cel
+++ b/locale/start_hu.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_it.cel b/locale/start_it.cel
index 096c182bb5e..8c382c06784 100644
--- a/locale/start_it.cel
+++ b/locale/start_it.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_ja.cel b/locale/start_ja.cel
index 7076a1c42da..c122d9919dd 100644
--- a/locale/start_ja.cel
+++ b/locale/start_ja.cel
@@ -167,35 +167,27 @@
# set {name "AmbientLightLevel" value 0.1}
-# 限界等級 (明るさ)
+# Exposure time (brightness)...
+# デフォルトは1.0です。
# (必要に応じてコメントを外して修正してください)
-# 0.8から15.2の間で変化します。デフォルトは6.0です。
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# 自動限界等級調整で45°での限界等級です。デフォルトは8.5です。
-# (必要に応じてコメントを外して修正してください)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# 表示の調整:
# 表示しない場合 (必要に応じてコメントを外してください)
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
# renderflags {clear "constellations"}
# renderflags {clear "eclipseshadows"}
# renderflags {clear "galaxies"}
-# renderflags {clear "nebulae"}
# renderflags {clear "grid"}
# renderflags {clear "markers"}
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -204,20 +196,17 @@
# 表示の調整:
# 表示する場合 (必要に応じてコメントを外してください)
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
# renderflags {set "constellations"}
# renderflags {set "eclipseshadows"}
# renderflags {set "galaxies"}
-# renderflags {set "nebulae"}
# renderflags {set "grid"}
# renderflags {set "markers"}
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_ko.cel b/locale/start_ko.cel
index d1ef907a86e..fc98844764f 100644
--- a/locale/start_ko.cel
+++ b/locale/start_ko.cel
@@ -185,35 +185,27 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
# renderflags {clear "constellations"}
# renderflags {clear "eclipseshadows"}
# renderflags {clear "galaxies"}
-# renderflags {clear "nebulae"}
# renderflags {clear "grid"}
# renderflags {clear "markers"}
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -222,20 +214,17 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
# renderflags {set "constellations"}
# renderflags {set "eclipseshadows"}
# renderflags {set "galaxies"}
-# renderflags {set "nebulae"}
# renderflags {set "grid"}
# renderflags {set "markers"}
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_lt.cel b/locale/start_lt.cel
index 1324380d489..c0260ba0249 100644
--- a/locale/start_lt.cel
+++ b/locale/start_lt.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_lv.cel b/locale/start_lv.cel
index bcfb1fc3bc6..1b2d308b14d 100644
--- a/locale/start_lv.cel
+++ b/locale/start_lv.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_nb.cel b/locale/start_nb.cel
index 45f777ba50c..ec53eb64656 100644
--- a/locale/start_nb.cel
+++ b/locale/start_nb.cel
@@ -180,22 +180,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -207,7 +201,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -216,7 +209,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -228,7 +220,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_nl.cel b/locale/start_nl.cel
index a2ca69e51c5..c80fe0155a0 100644
--- a/locale/start_nl.cel
+++ b/locale/start_nl.cel
@@ -220,24 +220,17 @@
# set {name "AmbientLightLevel" value 0.1}
-# Helderheid limiet van sterren ...
-# Verwijder het "#" karakter en pas de 'magnitude' waarde aan je eigen wensen aan ...
-# Celestia Gebruikers Interface: 0.8 tot 15.2, standaard is 6.0
+# Exposure time (brightness)...
+# Default is 1.0
+# (UNcomment / modify to meet your needs)
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Automatische helderheid limiet van sterren bij 45 graden, standaard is 8.5 ...
-# Verwijder het "#" karakter en pas de 'magnitude' waarde aan je eigen wensen aan ...
-#
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Weergeven van items (renderen):
# Geef de volgende objecten NIET weer (Verwijder het "#" karakter naar eigen wensen) ...
#
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -249,7 +242,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -259,7 +251,6 @@
# Geef de volgende objecten WEL weer (Verwijder het "#" karakter naar eigen wensen) ...
#
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -271,7 +262,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_pl.cel b/locale/start_pl.cel
index 22c8ac99dbd..14e011e5242 100644
--- a/locale/start_pl.cel
+++ b/locale/start_pl.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_pt.cel b/locale/start_pt.cel
index 4adccf9b4a4..4cb3c27ceed 100644
--- a/locale/start_pt.cel
+++ b/locale/start_pt.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_pt_BR.cel b/locale/start_pt_BR.cel
index 4adccf9b4a4..4cb3c27ceed 100644
--- a/locale/start_pt_BR.cel
+++ b/locale/start_pt_BR.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_ru.cel b/locale/start_ru.cel
index 7ee07192a7f..d896f9c6ffa 100644
--- a/locale/start_ru.cel
+++ b/locale/start_ru.cel
@@ -226,24 +226,17 @@
# set {name "AmbientLightLevel" value 0.1}
-# Управление видимой величиной звёзд...
-# Диапазон звёздных величин лежит в пределах от 0.8 до 15.2.
-# По умолчанию используется 6.0.
+# Время экспозиции (яркость)...
+# Значение по умолчанию 1.0
# Для включения команды удалите символ "#".
-# setvisibilitylimit {magnitude 6.0}
+#
+# setexposure {exposure 1.0}
-# Автонастройка количества звёзд в зависимости от заданной видимой величины
-# и изменении поля зрения до 45 градусов. По умолчанию равно 8.5...
-# Для включения команды удалите символ "#".
-# setfaintestautomag45deg {magnitude 8.5}
-
-
-# Отображение элементов небесной сферы (визуализация):
+# Отображение элементов небесной сферы (рендер):
# ОТКЛЮЧИТЬ отображение следующих элементов...
# Для включения команды удалите символ "#".
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -255,17 +248,15 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
-# Отображение элементов небесной сферы (визуализация):
+# Отображение элементов небесной сферы (рендер):
# ВКЛЮЧИТЬ отображение следующих элементов...
# Для включения команды удалите символ "#".
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -277,7 +268,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_sk.cel b/locale/start_sk.cel
index d99d5607240..ae0137e920c 100644
--- a/locale/start_sk.cel
+++ b/locale/start_sk.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_sv.cel b/locale/start_sv.cel
index d1bbe4c1ff4..d87c8794b83 100644
--- a/locale/start_sv.cel
+++ b/locale/start_sv.cel
@@ -192,22 +192,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -219,7 +213,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -228,7 +221,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -240,7 +232,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_uk.cel b/locale/start_uk.cel
index 47bba457283..29af589f14b 100644
--- a/locale/start_uk.cel
+++ b/locale/start_uk.cel
@@ -188,22 +188,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# Faintest visible star magnitude (brightness)...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# Celestia UI: 0.8 to 15.2, default is 6.0
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +209,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +217,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +228,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_zh_CN.cel b/locale/start_zh_CN.cel
index b73da0a1c28..6de576c7229 100644
--- a/locale/start_zh_CN.cel
+++ b/locale/start_zh_CN.cel
@@ -191,19 +191,18 @@
# Faintest visible star magnitude (brightness)...
# (UNcomment / modify to meet your needs)
# Celestia UI: 0.8 to 15.2, default is 6.0
-#
-# setvisibilitylimit {magnitude 6.0}
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
+# Exposure time (brightness)...
+# Default is 1.0
# (UNcomment / modify to meet your needs)
-# setfaintestautomag45deg {magnitude 8.5}
+#
+# setexposure {exposure 1.0}
# Items to be displayed (rendered):
# Do NOT render the following objects (UNcomment to suit your needs)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -215,7 +214,6 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
@@ -224,7 +222,6 @@
# Items to be displayed (rendered):
# DO render the following objects (UNcomment to suit your needs)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -236,7 +233,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/locale/start_zh_TW.cel b/locale/start_zh_TW.cel
index b9861859eba..59d9faf6ab9 100644
--- a/locale/start_zh_TW.cel
+++ b/locale/start_zh_TW.cel
@@ -171,22 +171,16 @@
# set {name "AmbientLightLevel" value 0.1}
-# 設定可見星的亮度...
-# (移除指令前的井字號/修改參數以符合您所需)
-# 可設定範圍: 0.8 to 15.2, 預設值是 6.0
+# Exposure time (brightness)...
+# Default is 1.0
+# (UNcomment / modify to meet your needs)
#
-# setvisibilitylimit {magnitude 6.0}
-
-
-# Faintest auto-magnitude brightness, at 45 degrees, Default is 8.5...
-# (移除指令前的井字號/修改參數以符合您所需)
-# setfaintestautomag45deg {magnitude 8.5}
+# setexposure {exposure 1.0}
# 要顯示/呈現的項目:
# 請勿呈現下方的項目 (移除指令前的井字號以符合您所需)...
# renderflags {clear "atmospheres"}
-# renderflags {clear "automag"}
# renderflags {clear "boundaries"}
# renderflags {clear "cloudmaps"}
# renderflags {clear "comettails"}
@@ -198,16 +192,14 @@
# renderflags {clear "nightmaps"}
# renderflags {clear "orbits"}
# renderflags {clear "planets"}
-# renderflags {clear "pointstars"}
# renderflags {clear "ringshadows"}
# renderflags {clear "stars"}
# renderflags {clear "partialtrajectories"}
-# 要顯示/呈現的項目::
-# 一定會呈現的項目 (移除指令前的井字號以符合您所需)...
+# 要顯示/呈現的項目:
+# 請勿呈現下方的項目 (移除指令前的井字號以符合您所需)...
# renderflags {set "atmospheres"}
-# renderflags {set "automag"}
# renderflags {set "boundaries"}
# renderflags {set "cloudmaps"}
# renderflags {set "comettails"}
@@ -219,7 +211,6 @@
# renderflags {set "nightmaps"}
# renderflags {set "orbits"}
# renderflags {set "planets"}
-# renderflags {set "pointstars"}
# renderflags {set "ringshadows"}
# renderflags {set "stars"}
# renderflags {set "partialtrajectories"}
diff --git a/shaders/star_frag.glsl b/shaders/star_frag.glsl
index 6f7fe49b082..68e7b05e36d 100644
--- a/shaders/star_frag.glsl
+++ b/shaders/star_frag.glsl
@@ -1,7 +1,48 @@
-uniform sampler2D starTex;
-varying vec4 color;
+// star_frag.glsl
+//
+// Copyright (C) 2023-present, the Celestia Development Team
+// Original rendering algorithm by Askaniy Anpilogov
+// Original shader implementation by Hleb Valoshka <375gnu@gmail.com>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+
+const float degree_per_px = 0.01; // higher value causes blinking due to optimizations in the psf_glow()
+const float inv_max_offset = 2.0 / (3.0 * sqrt(2.0) * degree_per_px); // 1/px
+
+varying vec3 v_color;
+varying float max_theta;
+varying float pointSize;
+
+float psf_core(float offset)
+{
+ // Human eye's point source function from the research by Greg Spencer et al. (1995)
+ // Optimized for the central part of the PSF (3x3 pixels square).
+ return 1.0 - offset * inv_max_offset;
+}
+
+float psf_glow(float offset)
+{
+ // Human eye's point source function from the research by Greg Spencer et al. (1995)
+ // Optimized for the outer part of the PSF. Designed with bounds by arctangent in mind.
+ // Causes star blinking with degree_per_px > 0.01, large grid misses the center peak of brightness.
+ float theta = offset * degree_per_px;
+ if (theta == 0)
+ return 100.0; // the center is always overexposed (zero division error)
+ if (theta < max_theta)
+ {
+ float brackets = max_theta / theta - 1.0;
+ return 0.0016 * brackets * brackets; // empirical
+ }
+ return 0.0; // after max_theta function starts to grow again
+}
void main(void)
{
- gl_FragColor = texture2D(starTex, gl_PointCoord) * color;
+ // in fragment shader all points have virtual dimension 1x1, so gl_PointCoord has a value from [0; 1]
+ float offset = length((gl_PointCoord.xy - vec2(0.5)) * pointSize);
+ float point = (max_theta == -1.0) ? psf_core(offset) : psf_glow(offset);
+ gl_FragColor = vec4(v_color * point, 1.0); // + vec4(0.1, 0.0, 0.0, 0.0); // red square for debugging
}
diff --git a/shaders/star_vert.glsl b/shaders/star_vert.glsl
index 6202ed58f3f..803ee169215 100644
--- a/shaders/star_vert.glsl
+++ b/shaders/star_vert.glsl
@@ -1,11 +1,65 @@
-attribute vec3 in_Position;
-attribute vec4 in_Color;
+// star_vert.glsl
+//
+// Copyright (C) 2023-present, the Celestia Development Team
+// Original rendering algorithm by Askaniy Anpilogov
+// Original shader implementation by Hleb Valoshka <375gnu@gmail.com>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+
+const float degree_per_px = 0.01; // higher value causes blinking due to optimizations in the psf_glow()
+const float max_square_size = 512.0; // px
+const float glow_scale = 0.123; // empirical constant, deg (not to change)
+const float max_irradiation = pow((degree_per_px * max_square_size / glow_scale), 2.0) / (2.0 * 3.141592653);
+
+varying vec3 v_color;
+varying float max_theta;
+varying float pointSize;
+
+attribute vec4 in_Position;
+attribute vec3 in_Color;
attribute float in_PointSize;
-varying vec4 color;
+
+const float color_saturation_limit = 0.1; // the ratio of the minimum color component to the maximum
+
+// Normalizes the color by its green value and corrects extreme saturation
+vec3 green_normalization(vec3 color)
+{
+ // color /= max(color.r, max(color.g, color.b)); // we do this in XYZRGBConverter::convertUnnormalized()
+ float delta = color_saturation_limit - min(color.r, min(color.g, color.b));
+
+ if (delta > 0)
+ {
+ vec3 diff = vec3(1.0) - color;
+ color += diff * diff * delta; // desaturating to the saturation limit
+ }
+ return color / color.g;
+}
void main(void)
{
- gl_PointSize = in_PointSize;
- color = in_Color;
- set_vp(vec4(in_Position, 1.0));
+ vec3 color = green_normalization(in_Color);
+ vec3 scaled_color = color * in_PointSize;
+
+ if (all(lessThan(scaled_color, vec3(1.0))))
+ {
+ // Dim light source (9 pixels mode)
+ max_theta = -1.0; // mode indicator
+ pointSize = 3.0;
+ v_color = scaled_color;
+ }
+ else
+ {
+ // Bright light source (glow mode)
+ float irradiation = atan(in_PointSize / max_irradiation) * max_irradiation; // dimming
+ max_theta = glow_scale * sqrt(irradiation);
+ float half_sq = max_theta / degree_per_px;
+ pointSize = 2.0 * half_sq - 1.0;
+ v_color = color;
+ }
+
+ gl_PointSize = pointSize;
+ set_vp(in_Position);
}
diff --git a/src/celastro/astro.cpp b/src/celastro/astro.cpp
index 62a421b6575..5c669fa9975 100644
--- a/src/celastro/astro.cpp
+++ b/src/celastro/astro.cpp
@@ -1,6 +1,6 @@
// astro.cpp
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -54,20 +54,51 @@ negateIf(double& d, bool condition)
} // end unnamed namespace
+
+// Computes the luminosity of a perfectly reflective disc.
+// It is also used as an upper bound for the irradiance of an object when culling invisible objects.
+// The function translates luminosity into luminosity of the same units
+// (distanceFromSun and objRadius must also be in the same units).
+float reflectedLuminosity(float sunLuminosity,
+ float distanceFromSun,
+ float objRadius)
+{
+ float lengthRatio = objRadius / distanceFromSun;
+ return sunLuminosity * 0.25 * lengthRatio * lengthRatio;
+}
+
+
+// The following notation rules apply in the functions below and in the code in general:
+// - Luminosity is implied in solar units (in SI, flux is measured in W)
+// - Irradiance is implied in vegan units (in SI, it is measured in W/m^2)
+
+// Absolute magnitude is the logarithmic inverse of luminosity.
+// Apparent magnitude is the logarithmic inverse of irradiance.
+
+
+// Luminosity conversions:
+
float
lumToAbsMag(float lum)
{
return SOLAR_ABSMAG - std::log(lum) * LN_MAG;
}
-// Return the apparent magnitude of a star with lum times solar
-// luminosity viewed at lyrs light years
float
lumToAppMag(float lum, float lyrs)
{
return absToAppMag(lumToAbsMag(lum), lyrs);
}
+float
+lumToIrradiance(float lum, float km)
+{
+ return lum * SOLAR_POWER / (math::sphereArea(km * 1000) * VEGAN_IRRADIANCE);
+}
+
+
+// Magnitude conversions:
+
float
absMagToLum(float mag)
{
@@ -80,6 +111,51 @@ appMagToLum(float mag, float lyrs)
return absMagToLum(appToAbsMag(mag, lyrs));
}
+float
+absMagToIrradiance(float mag, float km)
+{
+ return lumToIrradiance(absMagToLum(mag), km);
+}
+
+
+// Logarithmic magnitude system <-> linear irradiance system in Vega units:
+
+float
+magToIrradiance(float mag)
+{
+ return std::exp(- mag / LN_MAG);
+ // slower solution:
+ // return std::pow(10.0f, -0.4f * mag);
+}
+
+float
+irradianceToMag(float irradiance)
+{
+ return - std::log(irradiance) * LN_MAG;
+ // equivalent solution:
+ // return -2.5f * std::log10(irradiance);
+}
+
+
+// Faintest star magnitude system <-> exposure time:
+
+float
+faintestMagToExposure(float faintestMag)
+{
+ return std::exp(faintestMag / LN_MAG) * LOWEST_IRRADIATION;
+ // slower solution:
+ // return std::pow(10.0f, 0.4f * faintestMag) * LOWEST_IRRADIATION;
+}
+
+float
+exposureToFaintestMag(float exposure)
+{
+ return std::log(exposure / LOWEST_IRRADIATION) * LN_MAG;
+ // equivalent solution:
+ // return 2.5f * std::log10(exposure / LOWEST_IRRADIATION);
+}
+
+
void
decimalToDegMinSec(double angle, int& degrees, int& minutes, double& seconds)
{
@@ -108,8 +184,7 @@ decimalToHourMinSec(double angle, int& hours, int& minutes, double& seconds)
seconds = (B - (double) minutes) * 60.0;
}
-// Convert equatorial coordinates to Cartesian celestial (or ecliptical)
-// coordinates.
+// Convert equatorial coordinates to Cartesian celestial (or ecliptical) coordinates.
Eigen::Vector3f
equatorialToCelestialCart(float ra, float dec, float distance)
{
@@ -129,8 +204,7 @@ equatorialToCelestialCart(float ra, float dec, float distance)
return EQUATORIAL_TO_ECLIPTIC_MATRIX_F * Eigen::Vector3f(x, y, z);
}
-// Convert equatorial coordinates to Cartesian celestial (or ecliptical)
-// coordinates.
+// Convert equatorial coordinates to Cartesian celestial (or ecliptical) coordinates.
Eigen::Vector3d
equatorialToCelestialCart(double ra, double dec, double distance)
{
diff --git a/src/celastro/astro.h b/src/celastro/astro.h
index 7531ddc92ee..2861ffc14a7 100644
--- a/src/celastro/astro.h
+++ b/src/celastro/astro.h
@@ -1,6 +1,6 @@
// astro.h
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -25,8 +25,36 @@
namespace celestia::astro
{
-constexpr inline float SOLAR_ABSMAG = 4.83f;
-constexpr inline float LN_MAG = 1.0857362f; // 5/ln(100)
+// Angle between J2000 mean equator and the ecliptic plane: 23 deg 26' 21".448
+// Seidelmann, Explanatory Supplement to the Astronomical Almanac (1992), eqn 3.222-1
+constexpr inline double J2000Obliquity = 23.4392911_deg;
+
+// CODATA 2022
+constexpr inline double speedOfLight = 299792.458; // km/s
+constexpr inline double G = 6.67430e-11; // N m^2 / kg^2
+
+// IAU 2015 Resolution B3 + CODATA 2022
+constexpr inline double SolarMass = 1.3271244e20 / G; // kg
+constexpr inline double EarthMass = 3.986004e14 / G; // kg
+constexpr inline double LunarMass = 7.346e22; // kg
+constexpr inline double JupiterMass = 1.2668653e17 / G; // kg
+
+// https://mips.as.arizona.edu/~cnaw/sun.html for Johnson V filter
+constexpr inline float SOLAR_ABSMAG = 4.81f;
+
+// IAU 2015 Resolution B3
+constexpr inline float SOLAR_IRRADIANCE = 1361.0f; // W / m^2
+constexpr inline float SOLAR_POWER = 3.828e26f; // W
+
+// Bessel (1979) for Johnson V filter
+constexpr inline float VEGAN_IRRADIANCE = 3.640e-11f; // W / m^2
+
+// Auxiliary magnitude conversion factor
+constexpr inline float LN_MAG = 1.0857362f; // 5/ln(100)
+
+// Lowest screen brightness of a point to render
+constexpr inline float LOWEST_IRRADIATION = 1.0f / 255.0f;
+// = 1.0f / (255.0f * 12.92f); after implementing gamma correction
namespace detail
{
@@ -60,19 +88,27 @@ constexpr inline double SECONDS_PER_DEG = 3600.0;
constexpr inline double DEG_PER_HRA = 15.0;
template
-constexpr inline auto EARTH_RADIUS = detail::enable_if_fp(6378.14L);
+constexpr inline auto EARTH_RADIUS = detail::enable_if_fp(6378.1L); // IAU 2015 Resolution B3
template
-constexpr inline auto JUPITER_RADIUS = detail::enable_if_fp(71492.0L);
+constexpr inline auto JUPITER_RADIUS = detail::enable_if_fp(71492.0L); // IAU 2015 Resolution B3
template
-constexpr inline auto SOLAR_RADIUS = detail::enable_if_fp(696000.0L);
+constexpr inline auto SOLAR_RADIUS = detail::enable_if_fp(695700.0L); // IAU 2015 Resolution B3
+
+float reflectedLuminosity(float sunLuminosity, float distanceFromSun, float objRadius);
// Magnitude conversions
float lumToAbsMag(float lum);
float lumToAppMag(float lum, float lyrs);
+float lumToIrradiance(float lum, float km);
float absMagToLum(float mag);
float appMagToLum(float mag, float lyrs);
+float absMagToIrradiance(float mag, float lyrs);
+float magToIrradiance(float mag);
+float irradianceToMag(float irradiance);
+float faintestMagToExposure(float faintestMag);
+float exposureToFaintestMag(float exposure);
template
CELESTIA_CMATH_CONSTEXPR T
@@ -167,20 +203,6 @@ void anomaly(double meanAnomaly, double eccentricity,
double& trueAnomaly, double& eccentricAnomaly);
double meanEclipticObliquity(double jd);
-constexpr inline double speedOfLight = 299792.458; // km/s
-constexpr inline double G = 6.672e-11; // N m^2 / kg^2; gravitational constant
-constexpr inline double SolarMass = 1.989e30;
-constexpr inline double EarthMass = 5.972e24;
-constexpr inline double LunarMass = 7.346e22;
-constexpr inline double JupiterMass = 1.898e27;
-
-// Angle between J2000 mean equator and the ecliptic plane.
-// 23 deg 26' 21".448 (Seidelmann, _Explanatory Supplement to the
-// Astronomical Almanac_ (1992), eqn 3.222-1.
-constexpr inline double J2000Obliquity = 23.4392911_deg;
-
-constexpr inline double SOLAR_IRRADIANCE = 1367.6; // Watts / m^2
-constexpr inline double SOLAR_POWER = 3.8462e26; // in Watts
namespace literals
{
diff --git a/src/celengine/CMakeLists.txt b/src/celengine/CMakeLists.txt
index a2a9cbceabf..8d6cd457eed 100644
--- a/src/celengine/CMakeLists.txt
+++ b/src/celengine/CMakeLists.txt
@@ -88,10 +88,6 @@ set(CELENGINE_SOURCES
perspectiveprojectionmode.h
planetgrid.cpp
planetgrid.h
- pointstarrenderer.cpp
- pointstarrenderer.h
- pointstarvertexbuffer.cpp
- pointstarvertexbuffer.h
projectionmode.cpp
projectionmode.h
rectangle.h
@@ -132,6 +128,10 @@ set(CELENGINE_SOURCES
starname.h
staroctree.cpp
staroctree.h
+ starrenderer.cpp
+ starrenderer.h
+ starvertexbuffer.cpp
+ starvertexbuffer.h
stellarclass.cpp
stellarclass.h
surface.h
diff --git a/src/celengine/body.cpp b/src/celengine/body.cpp
index e425be1b617..62dbfc6447c 100644
--- a/src/celengine/body.cpp
+++ b/src/celengine/body.cpp
@@ -1,6 +1,7 @@
// body.cpp
//
-// Copyright (C) 2001-2006 Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -818,30 +819,21 @@ float Body::getLuminosity(const Star& sun,
}
+/*! Computes the luminosity of a perfectly reflective disc.
+ * The function translates luminosity into luminosity of the same units
+ * (distanceFromSun and objRadius must also be in the same units).
+ */
float Body::getLuminosity(float sunLuminosity,
float distanceFromSun) const
{
- // Compute the total power of the star in Watts
- double power = astro::SOLAR_POWER * sunLuminosity;
-
- // Compute the irradiance at a distance of 1au from the star in W/m^2
- // double irradiance = power / sphereArea(astro::AUtoKilometers(1.0) * 1000);
-
- // Compute the irradiance at the body's distance from the star
- double satIrradiance = power / math::sphereArea(distanceFromSun * 1000);
-
- // Compute the total energy hitting the planet
- double incidentEnergy = satIrradiance * math::circleArea(radius * 1000);
-
- double reflectedEnergy = incidentEnergy * getReflectivity();
-
- // Compute the luminosity (i.e. power relative to solar power)
- return (float) (reflectedEnergy / astro::SOLAR_POWER);
+ return getReflectivity() * astro::reflectedLuminosity(sunLuminosity,
+ distanceFromSun,
+ radius);
}
/*! Get the apparent magnitude of the body, neglecting the phase (as if
- * the body was at opposition.
+ * the body was at opposition).
*/
float Body::getApparentMagnitude(const Star& sun,
float distanceFromSun,
@@ -853,7 +845,7 @@ float Body::getApparentMagnitude(const Star& sun,
/*! Get the apparent magnitude of the body, neglecting the phase (as if
- * the body was at opposition.
+ * the body was at opposition).
*/
float Body::getApparentMagnitude(float sunLuminosity,
float distanceFromSun,
@@ -863,7 +855,8 @@ float Body::getApparentMagnitude(float sunLuminosity,
astro::kilometersToLightYears(distanceFromViewer));
}
-/*! Get the apparent magnitude of the body, corrected for its phase.
+
+/*! Get the apparent magnitude of the body, corrected for its phase
*/
float Body::getApparentMagnitude(const Star& sun,
const Vector3d& sunPosition,
@@ -875,17 +868,70 @@ float Body::getApparentMagnitude(const Star& sun,
}
-/*! Get the apparent magnitude of the body, corrected for its phase.
+/*! Get the apparent magnitude of the body, corrected for its phase
*/
float Body::getApparentMagnitude(float sunLuminosity,
const Vector3d& sunPosition,
const Vector3d& viewerPosition) const
{
+ double distanceToSun = sunPosition.norm();
double distanceToViewer = viewerPosition.norm();
+ float illuminatedFraction = (float) (1.0 + (viewerPosition / distanceToViewer).dot(sunPosition / distanceToSun)) / 2.0f;
+
+ return astro::lumToAppMag(getLuminosity(sunLuminosity, (float) distanceToSun) * illuminatedFraction,
+ (float) astro::kilometersToLightYears(distanceToViewer));
+}
+
+
+/*! Get the irradiance of the body in Vega units, neglecting the phase
+ * (as if the body was at opposition).
+ */
+float Body::getIrradiance(const Star& sun,
+ float distanceFromSun,
+ float distanceFromViewer) const
+{
+ return getIrradiance(sun.getLuminosity(), distanceFromSun, distanceFromViewer);
+}
+
+/*! Get the irradiance of the body in Vega units, neglecting the phase
+ * (as if the body was at opposition).
+ */
+float Body::getIrradiance(float sunLuminosity,
+ float distanceFromSun,
+ float distanceFromViewer) const
+{
+ // Compute the reflected flux (luminosity) in SI units
+ float reflectedFlux = astro::SOLAR_POWER * getLuminosity(sunLuminosity,
+ distanceFromSun);
+
+ // Compute the irradiance at the observer's distance from the planet
+ float obsIrradiance = reflectedFlux / math::sphereArea(distanceFromViewer * 1000); // km to m
+
+ // Compute the irradiance in Vega units
+ return obsIrradiance / astro::VEGAN_IRRADIANCE;
+}
+
+
+/*! Get the irradiance of the body in Vega units, corrected for its phase
+ */
+float Body::getIrradiance(const Star& sun,
+ const Vector3d& sunPosition,
+ const Vector3d& viewerPosition) const
+{
+ return getIrradiance(sun.getLuminosity(), sunPosition, viewerPosition);
+}
+
+/*! Get the irradiance of the body in Vega units, corrected for its phase
+ */
+float Body::getIrradiance(float sunLuminosity,
+ const Vector3d& sunPosition,
+ const Vector3d& viewerPosition) const
+{
double distanceToSun = sunPosition.norm();
+ double distanceToViewer = viewerPosition.norm();
float illuminatedFraction = (float) (1.0 + (viewerPosition / distanceToViewer).dot(sunPosition / distanceToSun)) / 2.0f;
- return astro::lumToAppMag(getLuminosity(sunLuminosity, (float) distanceToSun) * illuminatedFraction, (float) astro::kilometersToLightYears(distanceToViewer));
+ return getIrradiance(sunLuminosity, (float) distanceToSun, (float) distanceToViewer) * illuminatedFraction;
}
diff --git a/src/celengine/body.h b/src/celengine/body.h
index 7a88416b21a..e3aae0837f5 100644
--- a/src/celengine/body.h
+++ b/src/celengine/body.h
@@ -1,6 +1,7 @@
// body.h
//
-// Copyright (C) 2001-2006 Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -281,6 +282,19 @@ class Body //NOSONAR
const Eigen::Vector3d& sunPosition,
const Eigen::Vector3d& viewerPosition) const;
+ float getIrradiance(const Star& sun,
+ float distanceFromSun,
+ float distanceFromViewer) const;
+ float getIrradiance(float sunLuminosity,
+ float distanceFromSun,
+ float distanceFromViewer) const;
+ float getIrradiance(const Star& sun,
+ const Eigen::Vector3d& sunPosition,
+ const Eigen::Vector3d& viewerPosition) const;
+ float getIrradiance(float sunLuminosity,
+ const Eigen::Vector3d& sunPosition,
+ const Eigen::Vector3d& viewerPosition) const;
+
UniversalCoord getPosition(double tdb) const;
Eigen::Quaterniond getOrientation(double tdb) const;
Eigen::Vector3d getVelocity(double tdb) const;
diff --git a/src/celengine/dsooctree.cpp b/src/celengine/dsooctree.cpp
index 123791745a5..bdecbb5497f 100644
--- a/src/celengine/dsooctree.cpp
+++ b/src/celengine/dsooctree.cpp
@@ -1,8 +1,6 @@
// dsooctree.cpp
//
-// Description:
-//
-// Copyright (C) 2005-2009, Celestia Development Team
+// Copyright (C) 2005-present, the Celestia Development Team
// Original version by Toti
//
// This program is free software; you can redistribute it and/or
diff --git a/src/celengine/dsooctree.h b/src/celengine/dsooctree.h
index b7ef947e1bf..31a5214f507 100644
--- a/src/celengine/dsooctree.h
+++ b/src/celengine/dsooctree.h
@@ -1,8 +1,6 @@
// staroctree.cpp
//
-// Description:
-//
-// Copyright (C) 2005-2009, Celestia Development Team
+// Copyright (C) 2005-present, the Celestia Development Team
// Original version by Toti
//
// This program is free software; you can redistribute it and/or
diff --git a/src/celengine/dsorenderer.cpp b/src/celengine/dsorenderer.cpp
index 692c881b425..aa559c1b6d1 100644
--- a/src/celengine/dsorenderer.cpp
+++ b/src/celengine/dsorenderer.cpp
@@ -1,6 +1,6 @@
// dsorenderer.cpp
//
-// Copyright (C) 2001-2020, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -63,6 +63,10 @@ void DSORenderer::process(const std::unique_ptr& dso, //NOSONAR
double distanceToDSO,
float absMag)
{
+ // TODO: to transfer DSO renderer from the magnitude system to the irradiation system.
+ // This workaround should be a temporary measure.
+ float faintestMag = astro::exposureToFaintestMag(exposure);
+
if (distanceToDSO > distanceLimit || !dso->isVisible())
return;
@@ -104,7 +108,10 @@ void DSORenderer::process(const std::unique_ptr& dso, //NOSONAR
}
}
- float b = 2.3f * (faintestMag - 4.75f) / renderer->getFaintestAM45deg(); // brightnesCorr
+ // Original function of brightnessCorr:
+ // float b = 2.3f * (faintestMag - 4.75f) / renderer->getFaintestAM45deg();
+ float b = 2.3f - 10.925f / faintestMag;
+
switch (dso->getObjType())
{
case DeepSkyObjectType::Galaxy:
@@ -133,7 +140,6 @@ void DSORenderer::process(const std::unique_ptr& dso, //NOSONAR
// Only render those labels that are in front of the camera:
// Place labels for DSOs brighter than the specified label threshold brightness
- //
unsigned int labelMask = dso->getLabelMask();
if ((labelMask & labelMode) != 0)
@@ -180,10 +186,10 @@ void DSORenderer::process(const std::unique_ptr& dso, //NOSONAR
break;
}
- if (appMagEff < labelThresholdMag)
+ float irradiationEff = astro::magToIrradiance(appMagEff) * exposure;
+ if (irradiationEff > labelLowestIrradiation)
{
- // introduce distance dependent label transparency.
- float distr = std::min(1.0f, step * (labelThresholdMag - appMagEff) / labelThresholdMag);
+ float distr = 1.0f - irradiationEff / labelLowestIrradiation;
labelColor.alpha(distr * labelColor.alpha());
renderer->addBackgroundAnnotation(rep,
diff --git a/src/celengine/objectrenderer.h b/src/celengine/objectrenderer.h
index 420c9c28efb..1a0370d5707 100644
--- a/src/celengine/objectrenderer.h
+++ b/src/celengine/objectrenderer.h
@@ -1,6 +1,6 @@
// objectrenderer.h
//
-// Copyright (C) 2001-2019, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -21,18 +21,18 @@ template
class ObjectRenderer : public OctreeProcessor
{
public:
- const Observer* observer { nullptr };
- Renderer* renderer { nullptr };
+ const Observer* observer { nullptr };
+ Renderer* renderer { nullptr };
- float pixelSize { 0.0f };
- float faintestMag { 0.0f };
- float distanceLimit { 0.0f };
+ float pixelSize { 0.0f };
+ float exposure { 0.0f };
+ float distanceLimit { 0.0f };
- // Objects brighter than labelThresholdMag will be labeled
- float labelThresholdMag { 0.0f };
+ // Objects with screen brightness higher than labelLowestIrradiation will be labeled
+ float labelLowestIrradiation { 0.0f };
- std::uint64_t renderFlags { 0 };
- int labelMode { 0 };
+ std::uint64_t renderFlags { 0 };
+ int labelMode { 0 };
protected:
explicit ObjectRenderer(PREC _distanceLimit) :
diff --git a/src/celengine/render.cpp b/src/celengine/render.cpp
index 6c73d993f67..9b1da4949ff 100644
--- a/src/celengine/render.cpp
+++ b/src/celengine/render.cpp
@@ -1,6 +1,6 @@
// render.cpp
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -41,8 +41,8 @@
#include "rectangle.h"
#include "framebuffer.h"
#include "planetgrid.h"
-#include "pointstarvertexbuffer.h"
-#include "pointstarrenderer.h"
+#include "starvertexbuffer.h"
+#include "starrenderer.h"
#include "orbitsampler.h"
#include "rendcontext.h"
#include "textlayout.h"
@@ -60,7 +60,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -81,6 +80,7 @@
#include
#include
#include
+#include
#ifdef _MSC_VER
#include
#ifndef alloca
@@ -95,8 +95,6 @@ using namespace celestia::engine;
using namespace celestia::render;
using celestia::util::GetLogger;
-static const int REF_DISTANCE_TO_SCREEN = 400; //[mm]
-
// Contribution from planetshine beyond this distance (in units of object radius)
// is considered insignificant.
static const float PLANETSHINE_DISTANCE_LIMIT_FACTOR = 100.0f;
@@ -229,19 +227,12 @@ Renderer::Renderer() :
windowHeight(0),
fov(standardFOV),
screenDpi(96),
- corrFac(1.12f),
- faintestAutoMag45deg(8.0f), //def. 7.0f
#ifndef GL_ES
renderMode(GL_FILL),
#endif
labelMode(NoLabels),
renderFlags(DefaultRenderFlags),
- brightnessBias(0.0f),
- saturationMagNight(1.0f),
- saturationMag(1.0f),
- starStyle(FuzzyPointStars),
- pointStarVertexBuffer(nullptr),
- glareVertexBuffer(nullptr),
+ starVertexBuffer(nullptr),
textureResolution(medres),
frameCount(0),
lastOrbitCacheFlush(0),
@@ -256,15 +247,13 @@ Renderer::Renderer() :
m_eclipticLineRenderer(std::make_unique(*this)),
m_galaxyRenderer(std::make_unique(*this)),
m_globularRenderer(std::make_unique(*this)),
- m_largeStarRenderer(std::make_unique(*this)),
m_hollowMarkerRenderer(std::make_unique(*this, 1.0f, LineRenderer::PrimType::Lines, LineRenderer::StorageType::Static)),
m_nebulaRenderer(std::make_unique(*this)),
m_openClusterRenderer(std::make_unique(*this)),
m_ringRenderer(std::make_unique(*this)),
m_skyGridRenderer(std::make_unique(*this))
{
- pointStarVertexBuffer = new PointStarVertexBuffer(*this, 2048);
- glareVertexBuffer = new PointStarVertexBuffer(*this, 2048);
+ starVertexBuffer = new StarVertexBuffer(*this, 2048);
for (int i = 0; i < (int) FontCount; i++)
{
@@ -276,8 +265,7 @@ Renderer::Renderer() :
Renderer::~Renderer()
{
- delete pointStarVertexBuffer;
- delete glareVertexBuffer;
+ delete starVertexBuffer;
delete shaderManager;
m_atmosphereRenderer->deinitGL();
@@ -313,7 +301,7 @@ Renderer::DetailOptions::DetailOptions() :
static void RectToSphericalMapEval(float x, float y, float z,
unsigned char* pixel)
{
- // Compute spherical coodinates (r is always 1)
+ // Compute spherical coordinates (r is always 1)
double phi = asin(y);
double theta = atan2(z, -x);
@@ -443,8 +431,8 @@ static Texture* BuildGaussianGlareTexture(unsigned int log2size)
{
/*
// Optional gaussian glare
- float fwhm = (float) pow(2.0f, (float) (log2size - mipLevel)) * 0.15f;
- float power = (float) pow(2.0f, (float) (log2size - mipLevel)) * 0.15f;
+ float fwhm = (float) std::pow(2.0f, (float) (log2size - mipLevel)) * 0.15f;
+ float power = (float) std::pow(2.0f, (float) (log2size - mipLevel)) * 0.15f;
BuildGaussianDiscMipLevel(img->getMipLevel(mipLevel),
log2size - mipLevel,
fwhm,
@@ -452,12 +440,12 @@ static Texture* BuildGaussianGlareTexture(unsigned int log2size)
*/
BuildGlareMipLevel(img->getMipLevel(mipLevel),
log2size - mipLevel,
- 25.0f / (float) pow(2.0f, (float) (log2size - mipLevel)),
+ 25.0f / (float) std::pow(2.0f, (float) (log2size - mipLevel)),
0.66f);
/*
BuildGlareMipLevel2(img->getMipLevel(mipLevel),
log2size - mipLevel,
- 1.0f / (float) pow(2.0f, (float) (log2size - mipLevel)));
+ 1.0f / (float) std::pow(2.0f, (float) (log2size - mipLevel)));
*/
}
@@ -575,7 +563,6 @@ void Renderer::resize(int width, int height)
void Renderer::setFieldOfView(float _fov)
{
fov = _fov;
- corrFac = (0.12f * fov / standardFOV * fov / standardFOV + 1.0f);
}
int Renderer::getScreenDpi() const
@@ -614,17 +601,6 @@ float Renderer::getPointHeight() const
return 2.0f / windowHeight * getScaleFactor();
}
-void Renderer::setFaintestAM45deg(float _faintestAutoMag45deg)
-{
- faintestAutoMag45deg = _faintestAutoMag45deg;
- markSettingsChanged();
-}
-
-float Renderer::getFaintestAM45deg() const
-{
- return faintestAutoMag45deg;
-}
-
unsigned int Renderer::getResolution() const
{
return textureResolution;
@@ -1187,7 +1163,7 @@ void Renderer::renderOrbit(const OrbitPathListEntry& orbitPath,
// Remove samples at the end of the time window
cachedOrbit->removeSamplesAfter(newWindowEnd);
- // Trim the first sample (because it will be duplicated when we sample the orbit.)
+ // Trim the first sample (because it will be duplicated when we sample the orbit).
cachedOrbit->removeSamplesBefore(cachedOrbit->startTime() * (1.0 + 1.0e-15));
// Add the new samples
@@ -1203,7 +1179,7 @@ void Renderer::renderOrbit(const OrbitPathListEntry& orbitPath,
// Remove samples at the beginning of the time window
cachedOrbit->removeSamplesBefore(newWindowStart);
- // Trim the last sample (because it will be duplicated when we sample the orbit.)
+ // Trim the last sample (because it will be duplicated when we sample the orbit).
cachedOrbit->removeSamplesAfter(cachedOrbit->endTime() * (1.0 - 1.0e-15));
// Add the new samples
@@ -1312,14 +1288,6 @@ static Vector3d astrocentricPosition(const UniversalCoord& pos,
}
-void Renderer::autoMag(float& faintestMag, float zoom)
-{
- float fieldCorr = getProjectionMode()->getFieldCorrection(zoom);
- faintestMag = faintestAutoMag45deg * std::sqrt(fieldCorr);
- saturationMag = saturationMagNight * (1.0f + fieldCorr * fieldCorr);
-}
-
-
static Color legacyTintColor(float temp)
{
// If the star is sufficiently cool, change the light color
@@ -1390,8 +1358,8 @@ setupLightSources(const vector& nearStars,
ls.luminosity *= fadeFactor;
// Use a variant of the blackbody colors with the whitepoint
- // set to Sol being white, to ensure consistency of the Solar
- // System textures.
+ // set to Sol being white, to ensure consistency of the solar
+ // system textures.
ls.color = tintColors->lookupTintColor(temp, tintSaturation, fadeFactor);
}
@@ -1401,8 +1369,7 @@ setupLightSources(const vector& nearStars,
}
-// Set up the potential secondary light sources for rendering solar system
-// bodies.
+// Set up the potential secondary light sources for rendering solar system bodies.
static void
setupSecondaryLightSources(vector& secondaryIlluminators,
const vector& primaryIlluminators)
@@ -1436,7 +1403,7 @@ void Renderer::renderItem(const RenderListEntry& rle,
renderStar(*rle.star,
rle.position,
rle.distance,
- rle.appMag,
+ rle.irradiation,
observer,
nearPlaneDistance, farPlaneDistance,
m);
@@ -1446,7 +1413,7 @@ void Renderer::renderItem(const RenderListEntry& rle,
renderPlanet(*rle.body,
rle.position,
rle.distance,
- rle.appMag,
+ rle.irradiation,
observer,
nearPlaneDistance, farPlaneDistance,
m);
@@ -1478,7 +1445,7 @@ void Renderer::renderItem(const RenderListEntry& rle,
void Renderer::render(const Observer& observer,
const Universe& universe,
- float faintestMagNight,
+ float exposure,
const Selection& sel)
{
// Get the observer's time
@@ -1513,7 +1480,7 @@ void Renderer::render(const Observer& observer,
xfrustum.transform(getCameraOrientationf().conjugate().toRotationMatrix());
// Set up the projection and modelview matrices.
- // We'll usethem for positioning star and planet labels.
+ // We'll use them for positioning star and planet labels.
auto [nearZ, farZ] = projectionMode->getDefaultDepthRange();
buildProjectionMatrix(m_projMatrix, nearZ, farZ, observer.getZoom());
m_modelMatrix = Affine3f(getCameraOrientationf()).matrix();
@@ -1524,27 +1491,15 @@ void Renderer::render(const Observer& observer,
backgroundAnnotations.clear();
objectAnnotations.clear();
- // Put all solar system bodies into the render list. Stars close and
- // large enough to have discernible surface detail are also placed in
- // renderList.
+ // Put all solar system bodies into the render list.
+ // Stars close and large enough to have discernible surface detail
+ // are also placed in renderList.
renderList.clear();
orbitPathList.clear();
lightSourceList.clear();
secondaryIlluminators.clear();
nearStars.clear();
- // See if we want to use AutoMag.
- if ((renderFlags & ShowAutoMag) != 0)
- {
- autoMag(faintestMag, zoom);
- }
- else
- {
- faintestMag = faintestMagNight;
- saturationMag = saturationMagNight;
- }
-
- faintestPlanetMag = faintestMag;
if ((renderFlags & (ShowSolarSystemObjects | ShowOrbits)) != 0)
{
buildNearSystemsLists(universe, observer, xfrustum, now);
@@ -1552,34 +1507,14 @@ void Renderer::render(const Observer& observer,
setupSecondaryLightSources(secondaryIlluminators, lightSourceList);
- // Scan through the render list to see if we're inside a planetary
- // atmosphere. If so, we need to adjust the sky color as well as the
- // limiting magnitude of stars (so stars aren't visible in the daytime
- // on planets with thick atmospheres.)
+ // Scan through the render list to see if we're inside a planetary atmosphere.
+ // If so, we need to adjust the sky color as well as the limiting magnitude of stars
+ // (so stars aren't visible in the daytime on planets with thick atmospheres).
if ((renderFlags & ShowAtmospheres) != 0)
{
- adjustMagnitudeInsideAtmosphere(faintestMag, saturationMag, now);
+ adjustExposureInsideAtmosphere(exposure, now);
}
- // Now we need to determine how to scale the brightness of stars. The
- // brightness will be proportional to the apparent magnitude, i.e.
- // a logarithmic function of the stars apparent brightness. This mimics
- // the response of the human eye. We sort of fudge things here and
- // maintain a minimum range of six magnitudes between faintest visible
- // and saturation; this keeps stars from popping in or out as the sun
- // sets or rises.
- if (faintestMag - saturationMag >= 6.0f)
- brightnessScale = 1.0f / (faintestMag - saturationMag);
- else
- brightnessScale = 0.1667f;
-
- brightnessScale *= corrFac;
- if (starStyle == ScaledDiscStars)
- brightnessScale *= 2.0f;
-
- // Calculate saturation magnitude
- satPoint = faintestMag - (1.0f - brightnessBias) / brightnessScale;
-
ambientColor = Color(ambientLightLevel, ambientLightLevel, ambientLightLevel);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
@@ -1591,13 +1526,13 @@ void Renderer::render(const Observer& observer,
// Render deep sky objects
if ((renderFlags & ShowDeepSpaceObjects) != 0 && universe.getDSOCatalog() != nullptr)
{
- renderDeepSkyObjects(universe, observer, faintestMag);
+ renderDeepSkyObjects(universe, observer, exposure);
}
// Render stars
if ((renderFlags & ShowStars) != 0 && universe.getStarCatalog() != nullptr)
{
- renderPointStars(*universe.getStarCatalog(), faintestMag, observer);
+ renderStars(*universe.getStarCatalog(), exposure, observer);
}
// Translate the camera before rendering the asterisms and boundaries
@@ -1636,8 +1571,8 @@ void Renderer::render(const Observer& observer,
selectionVisible = selectionToAnnotation(sel, observer, xfrustum, now);
}
- // Render background markers; rendering of other markers is deferred until
- // solar system objects are rendered.
+ // Render background markers
+ // Rendering of other markers is deferred until solar system objects are rendered.
renderBackgroundAnnotations(FontNormal);
removeInvisibleItems(frustum);
@@ -1682,124 +1617,6 @@ calculateQuadCenter(const Eigen::Quaternionf &cameraOrientation,
return position + direction * (radius / (m * Vector3f::UnitZ()).dot(direction));
}
-void
-Renderer::calculatePointSize(float appMag,
- float size,
- float &discSize,
- float &alpha,
- float &glareSize,
- float &glareAlpha) const
-{
- alpha = std::max(0.0f, (faintestMag - appMag) * brightnessScale + brightnessBias);
-
- discSize = size;
- if (starStyle == ScaledDiscStars)
- {
- if (alpha > 1.0f)
- {
- float discScale = std::min(MaxScaledDiscStarSize, pow(2.0f, 0.3f * (satPoint - appMag)));
- discSize *= std::max(1.0f, discScale);
-
- glareAlpha = std::min(0.5f, discScale / 4.0f);
- glareSize = discSize * 3.0f;
-
- alpha = 1.0f;
- }
- else
- {
- glareSize = glareAlpha = 0.0f;
- }
- }
- else
- {
- if (alpha > 1.0f)
- {
- float discScale = std::min(100.0f, satPoint - appMag + 2.0f);
- glareAlpha = std::min(GlareOpacity, (discScale - 2.0f) / 4.0f);
- glareSize = 2.0f * discScale * size;
- alpha = 1.0f;
- }
- else
- {
- glareSize = glareAlpha = 0.0f;
- }
- }
-}
-
-// If the an object occupies a pixel or less of screen space, we don't
-// render its mesh at all and just display a starlike point instead.
-// Switching between the particle and mesh renderings of an object is
-// jarring, however . . . so we'll blend in the particle view of the
-// object to smooth things out, making it dimmer as the disc size exceeds the
-// max disc size.
-void Renderer::renderObjectAsPoint(const Vector3f& position,
- float radius,
- float appMag,
- float discSizeInPixels,
- const Color &color,
- bool useHalos,
- bool emissive,
- const Matrices &mvp)
-{
- const bool useScaledDiscs = starStyle == ScaledDiscStars;
- float maxDiscSize = useScaledDiscs ? MaxScaledDiscStarSize : 1.0f;
- float maxBlendDiscSize = maxDiscSize + 3.0f;
-
- if (discSizeInPixels < maxBlendDiscSize || useHalos)
- {
- float fade = 1.0f;
- if (discSizeInPixels > maxDiscSize)
- {
- fade = std::min(1.0f, (maxBlendDiscSize - discSizeInPixels) /
- (maxBlendDiscSize - maxDiscSize));
- }
-
- float scale = static_cast(screenDpi) / 96.0f;
- float pointSize, alpha, glareSize, glareAlpha;
- calculatePointSize(appMag, BaseStarDiscSize * scale, pointSize, alpha, glareSize, glareAlpha);
-
- if (useScaledDiscs && discSizeInPixels > MaxScaledDiscStarSize)
- glareAlpha = std::min(glareAlpha, (MaxScaledDiscStarSize - discSizeInPixels) / MaxScaledDiscStarSize + 1.0f);
-
- alpha *= fade;
- if (!emissive)
- glareAlpha *= fade;
-
- if (glareSize != 0.0f)
- glareSize = std::max(glareSize, pointSize * discSizeInPixels / scale * 3.0f);
-
- Renderer::PipelineState ps;
- ps.blending = true;
- ps.blendFunc = {GL_SRC_ALPHA, GL_ONE};
- ps.depthTest = true;
- setPipelineState(ps);
-
- if (starStyle != PointStars)
- gaussianDiscTex->bind();
-
- if (pointSize > gl::maxPointSize)
- m_largeStarRenderer->render(position, {color, alpha}, pointSize, mvp);
- else
- pointStarVertexBuffer->addStar(position, {color, alpha}, pointSize);
-
- // If the object is brighter than magnitude 1, add a halo around it to
- // make it appear more brilliant. This is a hack to compensate for the
- // limited dynamic range of monitors.
- //
- // TODO: Stars look fine but planets look unrealistically bright
- // with halos.
- if (useHalos && glareAlpha > 0.0f)
- {
- Eigen::Vector3f center = calculateQuadCenter(getCameraOrientationf(), position, radius);
- gaussianGlareTex->bind();
- if (glareSize > gl::maxPointSize)
- m_largeStarRenderer->render(center, {color, glareAlpha}, glareSize, mvp);
- else
- glareVertexBuffer->addStar(center, {color, glareAlpha}, glareSize);
- }
- }
-}
-
static void renderSphereUnlit(const RenderInfo& ri,
const math::Frustum& frustum,
@@ -1827,6 +1644,8 @@ static void renderSphereUnlit(const RenderInfo& ri,
shadprop.texUsage |= TexUsage::OverlayTexture;
textures.push_back(ri.overlayTex);
}
+ if (ri.isStar)
+ shadprop.lightModel = LightingModel::StarModel;
// Get a shader for the current rendering configuration
auto* prog = r->getShaderManager().getShader(shadprop);
@@ -1838,6 +1657,8 @@ static void renderSphereUnlit(const RenderInfo& ri,
prog->textureOffset = 0.0f;
prog->ambientColor = ri.color.toVector3();
prog->opacity = 1.0f;
+ if (ri.isStar)
+ prog->eyePosition = ri.eyePos_obj;
Renderer::PipelineState ps;
ps.depthMask = true;
@@ -2123,8 +1944,9 @@ setupObjectLighting(const vector& suns,
}
}
- // Sort light sources by brightness. Light zero should always be the
- // brightest. Optimize common cases of one and two lights.
+ // Sort light sources by brightness.
+ // Light zero should always be the brightest.
+ // Optimize common cases of one and two lights.
if (nLights == 2)
{
if (ls.lights[0].irradiance < ls.lights[1].irradiance)
@@ -2141,8 +1963,8 @@ setupObjectLighting(const vector& suns,
for (i = 0; i < nLights; i++)
totalIrradiance += ls.lights[i].irradiance;
- // Compute a gamma factor to make dim light sources visible. This is
- // intended to approximate what we see with our eyes--for example,
+ // Compute a gamma factor to make dim light sources visible
+ // This is intended to approximate what we see with our eyes: for example,
// Earth-shine is visible on the night side of the Moon, even though
// the amount of reflected light from the Earth is 1/10000 of what
// the Moon receives directly from the Sun.
@@ -2156,13 +1978,13 @@ setupObjectLighting(const vector& suns,
Matrix3f m = objOrientation.toRotationMatrix();
- // Gamma scale and normalize the light sources; cull light sources that
- // aren't bright enough to contribute the final pixels rendered into the
- // frame buffer.
+ // Gamma scale and normalize the light sources
+ // Cull light sources that aren't bright enough to contribute
+ // the final pixels rendered into the frame buffer.
ls.nLights = 0;
for (i = 0; i < nLights && ls.lights[i].irradiance > minVisibleIrradiance; i++)
{
- ls.lights[i].irradiance = pow(ls.lights[i].irradiance / totalIrradiance, gamma);
+ ls.lights[i].irradiance = std::pow(ls.lights[i].irradiance / totalIrradiance, gamma);
// Compute the direction of the light in object space
ls.lights[i].direction_obj = m * ls.lights[i].direction_eye;
@@ -2179,7 +2001,7 @@ setupObjectLighting(const vector& suns,
// occurs with atmospheres, where the scale height of the atmosphere
// is very small relative to the planet radius. To address the problem,
// we'll clamp the eye distance to some maximum value. The effect of the
- // adjustment should be impercetible, since at large distances rays from
+ // adjustment should be imperceptible, since at large distances rays from
// the camera to object vertices are all nearly parallel to each other.
float eyeFromCenterDistance = ls.eyePos_obj.norm();
if (eyeFromCenterDistance > 100.0f && isNormalized)
@@ -2243,7 +2065,7 @@ void Renderer::renderObject(const Vector3f& pos,
// deviation from spherical isn't too large, the nonuniform scale factor
// shouldn't mess up the lighting calculations enough to be noticeable
// (and we turn on renormalization anyhow, which most graphics cards
- // support.)
+ // support).
float radius = obj.radius;
Vector3f scaleFactors;
float ringsScaleFactor;
@@ -2348,7 +2170,7 @@ void Renderer::renderObject(const Vector3f& pos,
// inverse model/view matrix. The frustum is scaled to a
// normalized coordinate system where the 1 unit = 1 planet
// radius (for an ellipsoidal planet, radius is taken to be
- // largest semiaxis.)
+ // largest semiaxis).
auto viewFrustum = projectionMode->getFrustum(nearPlaneDistance / radius, frustumFarPlane / radius, observer.getZoom());
viewFrustum.transform(invMV);
@@ -2388,6 +2210,7 @@ void Renderer::renderObject(const Vector3f& pos,
}
else
{
+ ri.isStar = obj.isStar;
renderSphereUnlit(ri, viewFrustum, planetMVP, this);
}
}
@@ -2462,7 +2285,7 @@ void Renderer::renderObject(const Vector3f& pos,
if (fade > 0 && (renderFlags & ShowAtmospheres) != 0 && atmosphere->height > 0.0f)
{
// Only use new atmosphere code in OpenGL 2.0 path when new style parameters are defined.
- // TODO: convert old style atmopshere parameters
+ // TODO: convert old style atmosphere parameters
if (atmosphere->mieScaleHeight > 0.0f)
{
float atmScale = 1.0f + atmosphere->height / radius;
@@ -2726,7 +2549,7 @@ void Renderer::renderPlanet(Body& body,
float discSizeInPixels = body.getRadius() /
(max(nearPlaneDistance, altitude) * pixelSize);
- float maxDiscSize = (starStyle == ScaledDiscStars) ? MaxScaledDiscStarSize : 1.0f;
+ float maxDiscSize = 1.0f;
if (discSizeInPixels >= maxDiscSize && body.hasVisibleGeometry())
{
auto bodyFeaturesManager = GetBodyFeaturesManager();
@@ -2880,7 +2703,7 @@ void Renderer::renderPlanet(Body& body,
// Light sources have a finite size, which causes some blurring of the texture. Simulate
// this effect by using a lower LOD (i.e. a smaller mipmap level, indicated somewhat
- // confusingly by a _higher_ LOD value.
+ // confusingly by a _higher_ LOD value).
float ringWidth = rings->outerRadius - rings->innerRadius;
float projectedRingSize = std::abs(lights.lights[li].direction_obj.dot(lights.ringPlaneNormal)) * ringWidth;
float projectedRingSizeInPixels = projectedRingSize / (max(nearPlaneDistance, altitude) * pixelSize);
@@ -2951,11 +2774,11 @@ void Renderer::renderPlanet(Body& body,
{
// Set up location markers for this body
using namespace celestia;
- mountainRep = MarkerRepresentation(MarkerRepresentation::Triangle, 8.0f, LocationLabelColor);
- craterRep = MarkerRepresentation(MarkerRepresentation::Circle, 8.0f, LocationLabelColor);
- observatoryRep = MarkerRepresentation(MarkerRepresentation::Plus, 8.0f, LocationLabelColor);
- cityRep = MarkerRepresentation(MarkerRepresentation::X, 3.0f, LocationLabelColor);
- genericLocationRep = MarkerRepresentation(MarkerRepresentation::Square, 8.0f, LocationLabelColor);
+ mountainRep = MarkerRepresentation(MarkerRepresentation::Triangle, 8.0f, LocationLabelColor);
+ craterRep = MarkerRepresentation(MarkerRepresentation::Circle, 8.0f, LocationLabelColor);
+ observatoryRep = MarkerRepresentation(MarkerRepresentation::Plus, 8.0f, LocationLabelColor);
+ cityRep = MarkerRepresentation(MarkerRepresentation::X, 3.0f, LocationLabelColor);
+ genericLocationRep = MarkerRepresentation(MarkerRepresentation::Square, 8.0f, LocationLabelColor);
// We need a double precision body-relative position of the
// observer, otherwise location labels will tend to jitter.
@@ -2968,12 +2791,14 @@ void Renderer::renderPlanet(Body& body,
{
if (float maxCoeff = body.getSurface().color.toVector3().maxCoeff(); maxCoeff > 0.0f) // ignore [ 0 0 0 ]; used by old addons to make objects not get rendered as point
{
+#if 0
renderObjectAsPoint(pos,
body.getRadius(),
appMag,
discSizeInPixels,
body.getSurface().color * (1.0f / maxCoeff), // normalize point color; 'darkness' is handled by size of point determined by GeomAlbedo.
false, false, m);
+#endif
}
}
}
@@ -2995,7 +2820,7 @@ void Renderer::renderStar(const Star& star,
float radius = star.getRadius();
float discSizeInPixels = radius / (distance * pixelSize);
- if (discSizeInPixels > 1)
+ if (discSizeInPixels > 1.0f)
{
Surface surface;
RenderProperties rp;
@@ -3014,30 +2839,13 @@ void Renderer::renderStar(const Star& star,
surface.appearanceFlags |= Surface::ApplyBaseTexture;
surface.appearanceFlags |= Surface::Emissive;
+ rp.isStar = true;
rp.surface = &surface;
rp.rings = nullptr;
rp.radius = star.getRadius();
rp.semiAxes = star.getEllipsoidSemiAxes();
rp.geometry = star.getGeometry();
-
- Atmosphere atmosphere;
-
- // Use atmosphere effect to give stars a fuzzy fringe
- if (star.hasCorona() && rp.geometry == InvalidResource)
- {
- Color atmColor(color.red() * 0.5f, color.green() * 0.5f, color.blue() * 0.5f);
- atmosphere.height = radius * CoronaHeight;
- atmosphere.lowerColor = atmColor;
- atmosphere.upperColor = atmColor;
- atmosphere.skyColor = atmColor;
-
- rp.atmosphere = &atmosphere;
- }
- else
- {
- rp.atmosphere = nullptr;
- }
-
+ rp.atmosphere = nullptr;
rp.orientation = star.getRotationModel()->orientationAtTime(observer.getTime()).cast();
renderObject(pos, distance, observer,
@@ -3045,6 +2853,7 @@ void Renderer::renderStar(const Star& star,
rp, LightingState(), m);
}
+#if 0
renderObjectAsPoint(pos,
star.getRadius(),
appMag,
@@ -3052,6 +2861,7 @@ void Renderer::renderStar(const Star& star,
color,
star.hasCorona(), true,
m);
+#endif
}
@@ -3160,29 +2970,6 @@ void Renderer::renderBoundaries(const Universe& universe, float dist, const Matr
}
-// Helper function to compute the luminosity of a perfectly
-// reflective disc with the specified radius. This is used as an upper
-// bound for the apparent brightness of an object when culling
-// invisible objects.
-static float luminosityAtOpposition(float sunLuminosity,
- float distanceFromSun,
- float objRadius)
-{
- // Compute the total power of the star in Watts
- double power = astro::SOLAR_POWER * sunLuminosity;
-
- // Compute the irradiance at the body's distance from the star
- double irradiance = power / math::sphereArea(distanceFromSun * 1000);
-
- // Compute the total energy hitting the planet; assume an albedo of 1.0, so
- // reflected energy = incident energy.
- double incidentEnergy = irradiance * math::circleArea(objRadius * 1000);
-
- // Compute the luminosity (i.e. power relative to solar power)
- return (float) (incidentEnergy / astro::SOLAR_POWER);
-}
-
-
static bool isBodyVisible(const Body* body, BodyClassification bodyVisibilityMask)
{
BodyClassification bodyClassification = body->getClassification();
@@ -3222,10 +3009,10 @@ void Renderer::addRenderListEntries(RenderListEntry& rle,
Body& body,
bool isLabeled)
{
- bool visibleAsPoint = rle.appMag < faintestPlanetMag && body.isVisibleAsPoint();
+ bool visibleAsPoint = rle.irradiation < faintestPlanetIrradiance && body.isVisibleAsPoint();
const BodyFeaturesManager* bodyFeaturesManager = GetBodyFeaturesManager();
- if (rle.discSizeInPixels > 1 || visibleAsPoint || isLabeled)
+ if (rle.discSizeInPixels > 1.0f || visibleAsPoint || isLabeled)
{
rle.renderableType = RenderListEntry::RenderableBody;
rle.body = &body;
@@ -3380,17 +3167,17 @@ void Renderer::buildRenderLists(const Vector3d& astrocentricObserverPos,
// Calculate the size of the planet/moon disc in pixels
float discSize = (body->getCullingRadius() / (float) dist_v) / pixelSize;
- // Compute the apparent magnitude; instead of summing the reflected
- // light from all nearby stars, we just consider the one with the
- // highest apparent brightness.
- float appMag = 100.0f;
+ // Compute the irradiance
+ // Instead of summing the reflected light from all nearby stars,
+ // we just consider the one with the highest irradiance.
+ float irradiance = std::numeric_limits::min();
for (const auto &lightSource : lightSourceList)
{
Eigen::Vector3d sunPos = pos_v - lightSource.position;
- appMag = std::min(appMag, body->getApparentMagnitude(lightSource.luminosity, sunPos, pos_v));
+ irradiance = std::max(irradiance, body->getIrradiance(lightSource.luminosity, sunPos, pos_v));
}
- bool visibleAsPoint = appMag < faintestPlanetMag && body->isVisibleAsPoint();
+ bool visibleAsPoint = irradiance > faintestPlanetIrradiance && body->isVisibleAsPoint();
bool isLabeled = util::is_set(body->getOrbitClassification(), labelClassMask);
if ((discSize > 1 || visibleAsPoint || isLabeled) && isBodyVisible(body, bodyVisibilityMask))
@@ -3400,13 +3187,13 @@ void Renderer::buildRenderLists(const Vector3d& astrocentricObserverPos,
rle.position = pos_v.cast();
rle.distance = (float) dist_v;
rle.centerZ = pos_v.cast().dot(viewMatZ);
- rle.appMag = appMag;
+ rle.irradiation = irradiance;
rle.discSizeInPixels = body->getRadius() / ((float) dist_v * pixelSize);
// TODO: Remove this. It's only used in two places: for calculating comet tail
// length, and for calculating sky brightness to adjust the limiting magnitude.
// In both cases, it's the wrong quantity to use (e.g. for objects with orbits
- // defined relative to the SSB.)
+ // defined relative to the SSB).
rle.sun = -pos_s.cast();
addRenderListEntries(rle, *body, isLabeled);
@@ -3443,21 +3230,21 @@ void Renderer::buildRenderLists(const Vector3d& astrocentricObserverPos,
for (const auto &lightSource : lightSourceList)
{
Eigen::Vector3d sunPos = pos_v - lightSource.position;
- lum += luminosityAtOpposition(lightSource.luminosity, (float) sunPos.norm(), (float) subtree->maxChildRadius());
+ lum += astro::reflectedLuminosity(lightSource.luminosity, (float) sunPos.norm(), (float) subtree->maxChildRadius());
}
- brightestPossible = astro::lumToAppMag(lum, astro::kilometersToLightYears(minPossibleDistance));
- largestPossible = (float) subtree->maxChildRadius() / minPossibleDistance / pixelSize;
+ brightestPossible = astro::lumToIrradiance(lum, minPossibleDistance);
+ largestPossible = (float) subtree->maxChildRadius() / (minPossibleDistance * pixelSize);
}
else
{
// Viewer is within the bounding sphere, so the object could be very close.
- // Assume that an object in the subree could be very bright or large,
+ // Assume that an object in the subtree could be very bright or large,
// so no culling will occur.
- brightestPossible = -100.0f;
+ brightestPossible = std::numeric_limits::max();
largestPossible = 100.0f;
}
- if (brightestPossible < faintestPlanetMag || largestPossible > 1.0f)
+ if (brightestPossible > faintestPlanetIrradiance || largestPossible < 1.0f)
{
// See if the object or any of its children are within the view frustum
if (viewFrustum.testSphere(pos_v.cast(), (float) subtree->boundingSphereRadius()) != math::FrustumAspect::Outside)
@@ -3794,20 +3581,13 @@ static float calcMaxFOV(float fovY_degrees, float aspectRatio)
}
-void Renderer::renderPointStars(const StarDatabase& starDB,
- float faintestMagNight,
- const Observer& observer)
+void Renderer::renderStars(const StarDatabase& starDB,
+ float exposure,
+ const Observer& observer)
{
-#ifndef GL_ES
- // Disable multisample rendering when drawing point stars
- bool toggleAA = (starStyle == Renderer::PointStars && isMSAAEnabled());
- if (toggleAA)
- disableMSAA();
-#endif
-
Vector3d obsPos = observer.getPosition().toLy();
- PointStarRenderer starRenderer;
+ StarRenderer starRenderer;
starRenderer.renderer = this;
starRenderer.starDB = &starDB;
@@ -3815,34 +3595,25 @@ void Renderer::renderPointStars(const StarDatabase& starDB,
starRenderer.obsPos = obsPos;
starRenderer.viewNormal = getCameraOrientationf().conjugate() * -Vector3f::UnitZ();
starRenderer.renderList = &renderList;
- starRenderer.starVertexBuffer = pointStarVertexBuffer;
- starRenderer.glareVertexBuffer = glareVertexBuffer;
+ starRenderer.starVertexBuffer = starVertexBuffer;
starRenderer.cosFOV = std::cos(math::degToRad(calcMaxFOV(fov, getAspectRatio())) / 2.0f);
starRenderer.pixelSize = pixelSize;
- starRenderer.faintestMag = faintestMag;
+ starRenderer.exposure = exposure;
starRenderer.distanceLimit = distanceLimit;
starRenderer.labelMode = labelMode;
starRenderer.SolarSystemMaxDistance = SolarSystemMaxDistance;
- // = 1.0 at startup
- float effDistanceToScreen = mmToInches((float) REF_DISTANCE_TO_SCREEN) * pixelSize * getScreenDpi();
- starRenderer.labelThresholdMag = 1.2f * max(1.0f, (faintestMag - 4.0f) * (1.0f - 0.5f * std::log10(effDistanceToScreen)));
+ starRenderer.labelLowestIrradiation = 1.0f;
starRenderer.colorTemp = &starColors;
gaussianDiscTex->bind();
starRenderer.starVertexBuffer->setTexture(gaussianDiscTex);
starRenderer.starVertexBuffer->setPointScale(screenDpi / 96.0f);
- starRenderer.glareVertexBuffer->setTexture(gaussianGlareTex);
- starRenderer.glareVertexBuffer->setPointScale(screenDpi / 96.0f);
- PointStarVertexBuffer::enable();
- starRenderer.glareVertexBuffer->startSprites();
- if (starStyle == PointStars)
- starRenderer.starVertexBuffer->startBasicPoints();
- else
- starRenderer.starVertexBuffer->startSprites();
+ StarVertexBuffer::enable();
+ starRenderer.starVertexBuffer->startSprites();
Renderer::PipelineState ps;
ps.blending = true;
@@ -3854,21 +3625,15 @@ void Renderer::renderPointStars(const StarDatabase& starDB,
getCameraOrientationf(),
math::degToRad(fov),
getAspectRatio(),
- faintestMagNight);
+ astro::exposureToFaintestMag(exposure));
starRenderer.starVertexBuffer->finish();
- starRenderer.glareVertexBuffer->finish();
- PointStarVertexBuffer::disable();
-
-#ifndef GL_ES
- if (toggleAA)
- enableMSAA();
-#endif
+ StarVertexBuffer::disable();
}
void Renderer::renderDeepSkyObjects(const Universe& universe,
const Observer& observer,
- const float faintestMagNight)
+ const float exposure)
{
DSORenderer dsoRenderer;
@@ -3898,16 +3663,14 @@ void Renderer::renderDeepSkyObjects(const Universe& universe,
// size/pixelSize =0.86 at 120deg, 1.43 at 45deg and 1.6 at 0deg.
dsoRenderer.pixelSize = pixelSize;
dsoRenderer.avgAbsMag = dsoDB->getAverageAbsoluteMagnitude();
- dsoRenderer.faintestMag = faintestMag;
+ dsoRenderer.exposure = exposure;
dsoRenderer.renderFlags = renderFlags;
dsoRenderer.labelMode = labelMode;
dsoRenderer.frustum = projectionMode->getInfiniteFrustum(MinNearPlaneDistance, observer.getZoom());
// Use pixelSize * screenDpi instead of FoV, to eliminate windowHeight dependence.
- // = 1.0 at startup
- float effDistanceToScreen = mmToInches((float) REF_DISTANCE_TO_SCREEN) * pixelSize * getScreenDpi();
- dsoRenderer.labelThresholdMag = 2.0f * max(1.0f, (faintestMag - 4.0f) * (1.0f - 0.5f * log10(effDistanceToScreen)));
+ dsoRenderer.labelLowestIrradiation = 1.0f;
using namespace celestia;
galaxyRep = MarkerRepresentation(MarkerRepresentation::Triangle, 8.0f, GalaxyLabelColor);
@@ -3920,7 +3683,7 @@ void Renderer::renderDeepSkyObjects(const Universe& universe,
cameraOrientation,
math::degToRad(fov),
getAspectRatio(),
- 2 * faintestMagNight);
+ 2 * astro::exposureToFaintestMag(exposure)); // dimensionality doesn't make sense... (TODO)
m_galaxyRenderer->render();
m_globularRenderer->render();
@@ -4307,19 +4070,6 @@ void Renderer::markersToAnnotations(const celestia::MarkerList& markers,
}
-void Renderer::setStarStyle(StarStyle style)
-{
- starStyle = style;
- markSettingsChanged();
-}
-
-
-Renderer::StarStyle Renderer::getStarStyle() const
-{
- return starStyle;
-}
-
-
void Renderer::loadTextures(Body* body)
{
Surface& surface = body->getSurface();
@@ -4977,9 +4727,8 @@ Renderer::selectionToAnnotation(const Selection &sel,
}
void
-Renderer::adjustMagnitudeInsideAtmosphere(float &faintestMag,
- float &saturationMag,
- double now)
+Renderer::adjustExposureInsideAtmosphere(float &exposure,
+ double now)
{
const BodyFeaturesManager* bodyFeaturesManager = GetBodyFeaturesManager();
for (const auto& ri : renderList)
@@ -4987,9 +4736,8 @@ Renderer::adjustMagnitudeInsideAtmosphere(float &faintestMag,
if (ri.renderableType != RenderListEntry::RenderableBody)
continue;
- // Compute the density of the atmosphere, and from that
- // the amount light scattering. It's complicated by the
- // possibility that the planet is oblate and a simple distance
+ // Compute the density of the atmosphere, and from that the amount light scattering.
+ // It's complicated by the possibility that the planet is oblate and a simple distance
// to sphere calculation will not suffice.
const Atmosphere* atmosphere = bodyFeaturesManager->getAtmosphere(ri.body);
if (atmosphere == nullptr || atmosphere->height <= 0.0f)
@@ -5005,10 +4753,9 @@ Renderer::adjustMagnitudeInsideAtmosphere(float &faintestMag,
Quaternionf q = ri.body->getEclipticToEquatorial(now).cast();
eyeVec = q * eyeVec;
- // ellipDist is not the true distance from the surface unless
- // the planet is spherical. The quantity that we do compute
- // is the distance to the surface along a line from the eye
- // position to the center of the ellipsoid.
+ // ellipDist is not the true distance from the surface unless the planet is spherical.
+ // The quantity that we do compute is the distance to the surface along a line from
+ // the eye position to the center of the ellipsoid.
float ellipDist = eyeVec.cwiseProduct(recipSemiAxes).norm() - 1.0f;
if (ellipDist >= atmosphere->height / radius)
continue;
@@ -5020,8 +4767,7 @@ Renderer::adjustMagnitudeInsideAtmosphere(float &faintestMag,
float illumination = std::clamp(sunDir.dot(normal) + 0.2f, 0.0f, 1.0f);
float lightness = illumination * density;
- faintestMag = faintestMag - 15.0f * lightness;
- saturationMag = saturationMag - 15.0f * lightness;
+ exposure = exposure * astro::magToIrradiance(15.0f * lightness);
}
}
@@ -5044,7 +4790,7 @@ Renderer::buildNearSystemsLists(const Universe &universe,
now,
lightSourceList,
tintSaturation,
- starColors.type() == ColorTableType::Enhanced ? nullptr : &tintColors);
+ &tintColors);
// Traverse the frame trees of each nearby solar system and
// build the list of objects to be rendered.
@@ -5174,7 +4920,7 @@ Renderer::buildDepthPartitions()
{
// Factor of 0.999 makes sure ensures that the near plane does not fall
// exactly at the marker's z coordinate (in which case the marker
- // would be susceptible to getting clipped.)
+ // would be susceptible to getting clipped).
if (-depthSortedAnnotations[0].position.z() > zNearest)
zNearest = -depthSortedAnnotations[0].position.z() * 0.999f;
}
@@ -5185,9 +4931,9 @@ Renderer::buildDepthPartitions()
#endif
// If the nearest distance wasn't set, nothing should appear
- // in the frontmost depth buffer interval (so we can set the near plane
+ // in the front most depth buffer interval (so we can set the near plane
// of the front interval to whatever we want as long as it's less than
- // the far plane distance.
+ // the far plane distance).
if (zNearest == prevNear)
zNearest = 0.0f;
@@ -5319,17 +5065,11 @@ Renderer::renderSolarSystemObjects(const Observer &observer,
ps.depthTest = true;
setPipelineState(ps);
- PointStarVertexBuffer::enable();
- glareVertexBuffer->startSprites();
- glareVertexBuffer->render();
- glareVertexBuffer->finish();
- if (starStyle == PointStars)
- pointStarVertexBuffer->startBasicPoints();
- else
- pointStarVertexBuffer->startSprites();
- pointStarVertexBuffer->render();
- pointStarVertexBuffer->finish();
- PointStarVertexBuffer::disable();
+ StarVertexBuffer::enable();
+ starVertexBuffer->startSprites();
+ starVertexBuffer->render();
+ starVertexBuffer->finish();
+ StarVertexBuffer::disable();
// Render annotations in this interval
annotation = renderSortedAnnotations(annotation,
diff --git a/src/celengine/render.h b/src/celengine/render.h
index e5b7e9dfe19..1bd426cd047 100644
--- a/src/celengine/render.h
+++ b/src/celengine/render.h
@@ -1,6 +1,6 @@
// render.h
//
-// Copyright (C) 2001-2008, Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Contact: Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@ class RendererWatcher;
class FrameTree;
class ReferenceMark;
class CurvePlot;
-class PointStarVertexBuffer;
+class StarVertexBuffer;
class Observer;
class Surface;
class TextureFont;
@@ -76,9 +76,9 @@ struct LightSource
struct SecondaryIlluminator
{
const Body* body;
- Eigen::Vector3d position_v; // viewer relative position
- float radius; // radius in km
- float reflectedIrradiance; // albedo times total irradiance from direct sources
+ Eigen::Vector3d position_v; // viewer relative position
+ float radius; // radius in km
+ float reflectedIrradiance; // albedo times total irradiance from direct sources
};
@@ -129,39 +129,36 @@ class Renderer
void resize(int, int);
float getAspectRatio() const;
- void setFaintestAM45deg(float);
- float getFaintestAM45deg() const;
void setRTL(bool);
bool isRTL() const;
void setRenderMode(RenderMode);
- void autoMag(float& faintestMag, float zoom);
void render(const Observer&,
const Universe&,
- float faintestVisible,
+ float exposure,
const Selection& sel);
bool getInfo(std::map& info) const;
enum
{
- NoLabels = 0x000,
- StarLabels = 0x001,
- PlanetLabels = 0x002,
- MoonLabels = 0x004,
- ConstellationLabels = 0x008,
- GalaxyLabels = 0x010,
- AsteroidLabels = 0x020,
- SpacecraftLabels = 0x040,
- LocationLabels = 0x080,
- CometLabels = 0x100,
- NebulaLabels = 0x200,
- OpenClusterLabels = 0x400,
+ NoLabels = 0x000,
+ StarLabels = 0x001,
+ PlanetLabels = 0x002,
+ MoonLabels = 0x004,
+ ConstellationLabels = 0x008,
+ GalaxyLabels = 0x010,
+ AsteroidLabels = 0x020,
+ SpacecraftLabels = 0x040,
+ LocationLabels = 0x080,
+ CometLabels = 0x100,
+ NebulaLabels = 0x200,
+ OpenClusterLabels = 0x400,
I18nConstellationLabels = 0x800,
- DwarfPlanetLabels = 0x1000,
- MinorMoonLabels = 0x2000,
- GlobularLabels = 0x4000,
- BodyLabelMask = (PlanetLabels | DwarfPlanetLabels | MoonLabels | MinorMoonLabels | AsteroidLabels | SpacecraftLabels | CometLabels),
+ DwarfPlanetLabels = 0x1000,
+ MinorMoonLabels = 0x2000,
+ GlobularLabels = 0x4000,
+ BodyLabelMask = (PlanetLabels | DwarfPlanetLabels | MoonLabels | MinorMoonLabels | AsteroidLabels | SpacecraftLabels | CometLabels),
};
enum RenderFlags : uint64_t
@@ -178,11 +175,10 @@ class Renderer
ShowAtmospheres = 0x0000000000000100,
ShowSmoothLines = 0x0000000000000200,
ShowEclipseShadows = 0x0000000000000400,
- // the next one is unused in 1.7, kept for compatibility with 1.6
- ShowStarsAsPoints = 0x0000000000000800,
+ // removed flag = 0x0000000000000800,
ShowRingShadows = 0x0000000000001000,
ShowBoundaries = 0x0000000000002000,
- ShowAutoMag = 0x0000000000004000,
+ // removed flag = 0x0000000000004000,
ShowCometTails = 0x0000000000008000,
ShowMarkers = 0x0000000000010000,
ShowPartialTrajectories = 0x0000000000020000,
@@ -226,20 +222,11 @@ class Renderer
ShowRingShadows |
ShowCloudShadows |
ShowCometTails |
- ShowAutoMag |
ShowPlanetRings |
ShowFadingOrbits |
ShowSmoothLines
};
- enum StarStyle
- {
- FuzzyPointStars = 0,
- PointStars = 1,
- ScaledDiscStars = 2,
- StarStyleCount = 3,
- };
-
uint64_t getRenderFlags() const;
void setRenderFlags(uint64_t);
int getLabelMode() const;
@@ -355,8 +342,6 @@ class Renderer
void buildProjectionMatrix(Eigen::Matrix4f &mat, float nearZ, float farZ, float zoom) const;
- void setStarStyle(StarStyle);
- StarStyle getStarStyle() const;
void setResolution(unsigned int resolution);
unsigned int getResolution() const;
void enableSelectionPointer();
@@ -472,12 +457,15 @@ class Renderer
Surface* surface{ nullptr };
const Atmosphere* atmosphere{ nullptr };
RingSystem* rings{ nullptr };
+ LightingState::EclipseShadowVector* eclipseShadows{ nullptr };
+
+ Eigen::Quaternionf orientation{ Eigen::Quaternionf::Identity() };
+ Eigen::Vector3f semiAxes{ Eigen::Vector3f::Ones() };
float radius{ 1.0f };
float geometryScale{ 1.0f };
- Eigen::Vector3f semiAxes{ Eigen::Vector3f::Ones() };
+
ResourceHandle geometry{ InvalidResource };
- Eigen::Quaternionf orientation{ Eigen::Quaternionf::Identity() };
- LightingState::EclipseShadowVector* eclipseShadows;
+ bool isStar{ false };
};
struct DepthBufferPartition
@@ -489,12 +477,12 @@ class Renderer
private:
void setFieldOfView(float);
- void renderPointStars(const StarDatabase& starDB,
- float faintestVisible,
- const Observer& observer);
+ void renderStars(const StarDatabase& starDB,
+ float exposure,
+ const Observer& observer);
void renderDeepSkyObjects(const Universe&,
const Observer&,
- float faintestMagNight);
+ float exposure);
void renderSkyGrids(const Observer& observer);
void renderSelectionPointer(const Observer& observer,
double now,
@@ -576,22 +564,6 @@ class Renderer
float discSizeInPixels,
const Matrices&);
- void calculatePointSize(float appMag,
- float size,
- float &discSize,
- float &alpha,
- float &glareSize,
- float &glareAlpha) const;
-
- void renderObjectAsPoint(const Eigen::Vector3f& center,
- float radius,
- float appMag,
- float discSizeInPixels,
- const Color& color,
- bool useHalos,
- bool emissive,
- const Matrices&);
-
void locationsToAnnotations(const Body& body,
const Eigen::Vector3d& bodyPosition,
const Eigen::Quaterniond& bodyOrientation);
@@ -656,9 +628,8 @@ class Renderer
const celestia::math::InfiniteFrustum &xfrustum,
double now);
- void adjustMagnitudeInsideAtmosphere(float &faintestMag,
- float &saturationMag,
- double now);
+ void adjustExposureInsideAtmosphere(float &faintestMag,
+ double now);
void renderOrbit(const OrbitPathListEntry&,
double now,
@@ -683,9 +654,7 @@ class Renderer
float fov;
double cosViewConeAngle{ 0.0 };
int screenDpi;
- float corrFac;
float pixelSize{ 1.0f };
- float faintestAutoMag45deg;
std::vector> fonts{FontCount, nullptr};
std::shared_ptr projectionMode{ nullptr };
@@ -698,22 +667,16 @@ class Renderer
BodyClassification orbitMask{ BodyClassification::Planet | BodyClassification::Moon | BodyClassification::Stellar };
float ambientLightLevel{ 0.1f };
float tintSaturation{ 0.5f };
- float brightnessBias;
- float brightnessScale{ 1.0f };
- float faintestMag{ 0.0f };
- float faintestPlanetMag{ 0.0f };
- float saturationMagNight;
- float saturationMag;
- StarStyle starStyle;
+ float exposure{ 1.0f };
+ float faintestPlanetIrradiance{ 1.0f }; // default faintestPlanetIrradiance was 0; maybe remove it at all?
Color ambientColor;
std::string displayedSurface;
Eigen::Quaterniond m_cameraOrientation;
Eigen::Matrix3d m_cameraTransform{ Eigen::Matrix3d::Identity() };
- PointStarVertexBuffer* pointStarVertexBuffer;
- PointStarVertexBuffer* glareVertexBuffer;
+ StarVertexBuffer* starVertexBuffer;
std::vector renderList;
std::vector secondaryIlluminators;
std::vector depthPartitions;
@@ -755,7 +718,7 @@ class Renderer
float minFeatureSize;
uint64_t locationFilter;
- ColorTemperatureTable starColors{ ColorTableType::Blackbody_D65 };
+ ColorTemperatureTable starColors{ ColorTableType::SunWhite };
ColorTemperatureTable tintColors{ ColorTableType::SunWhite };
Selection highlightObject;
@@ -790,7 +753,6 @@ class Renderer
std::unique_ptr m_eclipticLineRenderer;
std::unique_ptr m_galaxyRenderer;
std::unique_ptr m_globularRenderer;
- std::unique_ptr m_largeStarRenderer;
std::unique_ptr m_hollowMarkerRenderer;
std::unique_ptr m_nebulaRenderer;
std::unique_ptr m_openClusterRenderer;
@@ -854,7 +816,7 @@ class Renderer
static Color SelectionCursorColor;
- friend class PointStarRenderer;
+ friend class StarRenderer;
};
diff --git a/src/celengine/renderinfo.h b/src/celengine/renderinfo.h
index b45be8fb7b8..4c416d0e6f5 100644
--- a/src/celengine/renderinfo.h
+++ b/src/celengine/renderinfo.h
@@ -1,6 +1,7 @@
// renderinfo.h
//
-// Copyright (C) 2006, Chris Laurel
+// Copyright (C) 2006-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -21,12 +22,13 @@ class Texture;
struct RenderInfo
{
- Color color{ 1.0f, 1.0f, 1.0f };
+ Eigen::Quaternionf orientation{ Eigen::Quaternionf::Identity() };
Texture* baseTex{ nullptr };
Texture* bumpTex{ nullptr };
Texture* nightTex{ nullptr };
Texture* glossTex{ nullptr };
Texture* overlayTex{ nullptr };
+ Color color{ 1.0f, 1.0f, 1.0f };
Color specularColor{ 0.0f, 0.0f, 0.0f };
float specularPower{ 0.0f };
Eigen::Vector3f sunDir_eye{ Eigen::Vector3f::UnitZ() };
@@ -36,10 +38,9 @@ struct RenderInfo
Color sunColor{ 1.0f, 1.0f, 1.0f };
Color ambientColor{ 0.0f, 0.0f, 0.0f };
float lunarLambert{ 0.0f };
- Eigen::Quaternionf orientation{ Eigen::Quaternionf::Identity() };
float pixWidth{ 1.0f };
float pointScale{ 1.0f };
+ bool isStar{ false };
};
extern LODSphereMesh* g_lodSphere;
-
diff --git a/src/celengine/renderlistentry.h b/src/celengine/renderlistentry.h
index 336b6e505bb..49909230a2a 100644
--- a/src/celengine/renderlistentry.h
+++ b/src/celengine/renderlistentry.h
@@ -1,7 +1,7 @@
// renderlistentry.h
//
-// Copyright (C) 2001-2019, Celestia Development Team
-// Contact: Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -41,7 +41,7 @@ struct RenderListEntry
float nearZ;
float farZ;
float discSizeInPixels;
- float appMag;
+ float irradiation;
RenderableType renderableType;
bool isOpaque;
};
diff --git a/src/celengine/shadermanager.cpp b/src/celengine/shadermanager.cpp
index 870e1e44036..9da6d8c013b 100644
--- a/src/celengine/shadermanager.cpp
+++ b/src/celengine/shadermanager.cpp
@@ -2093,6 +2093,12 @@ ShaderManager::buildFragmentShader(const ShaderProperties& props)
source += "gl_FragColor.rgb = gl_FragColor.rgb * scatterEx + scatterColor;\n";
}
+ // Include the effect of limb darkening.
+ if (props.lightModel == LightingModel::StarModel)
+ {
+ source += "gl_FragColor.rgb = gl_FragColor.rgb - vec3(1.0 - NV) * vec3(0.56, 0.61, 0.72);\n";
+ }
+
source += "}\n";
DumpFSSource(source);
@@ -2311,7 +2317,6 @@ ShaderManager::buildAtmosphereFragmentShader(const ShaderProperties& props)
source += "vec3 nposition = normalize(position);\n";
source += "vec3 N = normalize(normal);\n";
source += "vec3 eyeDir = normalize(eyePosition - nposition);\n";
- source += "float NV = dot(N, eyeDir);\n";
source += DeclareLocal("NL", Shader_Float);
source += DeclareLocal("scatterEx", Shader_Vector3);
@@ -2319,14 +2324,13 @@ ShaderManager::buildAtmosphereFragmentShader(const ShaderProperties& props)
// Sum the contributions from each light source
source += "vec3 color = vec3(0.0);\n";
- source += "vec3 V = normalize(eyeDir);\n";
// Only do scattering calculations for the primary light source
// TODO: Eventually handle multiple light sources, and removed the 'min'
// from the line below.
for (unsigned i = 0; i < std::min(static_cast(props.nLights), 1u); i++)
{
- source += " float cosTheta = dot(V, " + LightProperty(i, "direction") + ");\n";
+ source += " float cosTheta = dot(eyeDir, " + LightProperty(i, "direction") + ");\n";
source += ScatteringPhaseFunctions(props);
// TODO: Consider premultiplying by invScatterCoeffSum
diff --git a/src/celengine/shadermanager.h b/src/celengine/shadermanager.h
index 2b9ecd9b930..dfdcca91e46 100644
--- a/src/celengine/shadermanager.h
+++ b/src/celengine/shadermanager.h
@@ -1,6 +1,7 @@
// shadermanager.h
//
-// Copyright (C) 2001-2004, Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -62,6 +63,7 @@ enum class LightingModel : std::uint16_t
EmissiveModel = 0x0100,
ParticleModel = 0x0200,
UnlitModel = 0x0400,
+ StarModel = 0x0800,
};
ENUM_CLASS_BITWISE_OPS(LightingModel);
diff --git a/src/celengine/simulation.cpp b/src/celengine/simulation.cpp
index 09e626d9261..46806b51890 100644
--- a/src/celengine/simulation.cpp
+++ b/src/celengine/simulation.cpp
@@ -1,6 +1,7 @@
// simulation.cpp
//
-// Copyright (C) 2001, Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// The core of Celestia--tracks an observer moving through a
// stars and their solar systems.
@@ -47,7 +48,7 @@ void Simulation::render(Renderer& renderer)
{
renderer.render(*activeObserver,
*universe,
- faintestVisible,
+ exposure,
selection);
}
@@ -56,7 +57,7 @@ void Simulation::render(Renderer& renderer, Observer& observer)
{
renderer.render(observer,
*universe,
- faintestVisible,
+ exposure,
selection);
}
@@ -150,7 +151,7 @@ Selection Simulation::pickObject(const Eigen::Vector3f& pickRay,
activeObserver->getOrientationf().conjugate() * pickRay,
activeObserver->getTime(),
renderFlags,
- faintestVisible,
+ exposure,
tolerance);
}
@@ -547,15 +548,15 @@ void Simulation::synchronizeTime()
}
-float Simulation::getFaintestVisible() const
+float Simulation::getExposure() const
{
- return faintestVisible;
+ return exposure;
}
-void Simulation::setFaintestVisible(float magnitude)
+void Simulation::setExposure(float _exposure)
{
- faintestVisible = magnitude;
+ exposure = _exposure;
}
diff --git a/src/celengine/simulation.h b/src/celengine/simulation.h
index d5b48843e39..f9f894c6649 100644
--- a/src/celengine/simulation.h
+++ b/src/celengine/simulation.h
@@ -1,6 +1,7 @@
// simulation.h
//
-// Copyright (C) 2001, Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -116,8 +117,8 @@ class Simulation
bool getPauseState() const;
void setPauseState(bool);
- float getFaintestVisible() const;
- void setFaintestVisible(float);
+ float getExposure() const;
+ void setExposure(float);
void setObserverMode(Observer::ObserverMode);
Observer::ObserverMode getObserverMode() const;
@@ -140,6 +141,6 @@ class Simulation
Observer* activeObserver;
std::vector observers;
- float faintestVisible{ 5.0f };
+ float exposure{ 1.0f };
bool pauseState{ false };
};
diff --git a/src/celengine/star.cpp b/src/celengine/star.cpp
index 9f81ddfb6e1..2737081eac3 100644
--- a/src/celengine/star.cpp
+++ b/src/celengine/star.cpp
@@ -1,6 +1,6 @@
// star.cpp
//
-// Copyright (C) 2001-2021, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -1215,6 +1215,19 @@ Star::getApparentMagnitude(float ly) const
return astro::absToAppMag(absMag, ly) + extinction * ly;
}
+float
+Star::getIrradiance(float km) const
+{
+ // The input is in kilometers! Use lightYearsToKilometers(ly) for other cases.
+ // The reason is to get rid of unnecessary conversions (e.g., astrocentricPosition returns kilometers).
+
+ // extinction seems to be in a strange units, mag/ly is not used in astronomy
+ // it can be optimized later, with astro::absMagToIrradiance() that duplicates it, but with no extinction
+
+ float irradianceInSuns = std::exp((astro::SOLAR_ABSMAG - absMag - extinction * astro::kilometersToLightYears(km)) / astro::LN_MAG);
+ return irradianceInSuns * astro::SOLAR_POWER / (math::sphereArea(km * 1000) * astro::VEGAN_IRRADIANCE);
+}
+
float
Star::getLuminosity() const
{
diff --git a/src/celengine/star.h b/src/celengine/star.h
index df88c006b61..aef64d26ac5 100644
--- a/src/celengine/star.h
+++ b/src/celengine/star.h
@@ -1,6 +1,6 @@
// star.h
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -275,6 +275,7 @@ class Star
void setExtinction(float);
float getApparentMagnitude(float) const;
+ float getIrradiance(float) const;
float getLuminosity() const;
float getBolometricLuminosity() const;
diff --git a/src/celengine/starcolors.cpp b/src/celengine/starcolors.cpp
index 5c263823aad..f91587d68f2 100644
--- a/src/celengine/starcolors.cpp
+++ b/src/celengine/starcolors.cpp
@@ -1,6 +1,7 @@
// starcolors.cpp
//
-// Copyright (C) 2004, Chris Laurel
+// Copyright (C) 2004-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// Tables of star colors, indexed by temperature.
//
@@ -37,53 +38,6 @@ const Eigen::Vector2d SRGB_G_xy(0.30, 0.60);
const Eigen::Vector2d SRGB_B_xy(0.15, 0.06);
-// Approximate colors used by older versions of Celestia
-constexpr std::array StarColors_Enhanced
-{
- Color(0.00f, 0.00f, 0.00f), // T = 0K
- Color(0.75f, 0.20f, 0.20f), // T = 1000K
- Color(1.00f, 0.40f, 0.40f), // T = 2000K
- Color(1.00f, 0.70f, 0.70f), // T = 3000K
- Color(1.00f, 0.90f, 0.70f), // T = 4000K
- Color(1.00f, 1.00f, 0.75f), // T = 5000K
- Color(1.00f, 1.00f, 0.88f), // T = 6000K
- Color(1.00f, 1.00f, 0.95f), // T = 7000K
- Color(1.00f, 1.00f, 1.00f), // T = 8000K
- Color(0.95f, 0.98f, 1.00f), // T = 9000K
- Color(0.90f, 0.95f, 1.00f), // T = 10000K
- Color(0.85f, 0.93f, 1.00f), // T = 11000K
- Color(0.80f, 0.90f, 1.00f), // T = 12000K
- Color(0.79f, 0.89f, 1.00f), // T = 13000K
- Color(0.78f, 0.88f, 1.00f), // T = 14000K
- Color(0.77f, 0.87f, 1.00f), // T = 15000K
- Color(0.76f, 0.86f, 1.00f), // T = 16000K
- Color(0.75f, 0.85f, 1.00f), // T = 17000K
- Color(0.74f, 0.84f, 1.00f), // T = 18000K
- Color(0.73f, 0.83f, 1.00f), // T = 19000K
- Color(0.72f, 0.82f, 1.00f), // T = 20000K
- Color(0.71f, 0.81f, 1.00f), // T = 21000K
- Color(0.70f, 0.80f, 1.00f), // T = 22000K
- Color(0.69f, 0.79f, 1.00f), // T = 23000K
- Color(0.68f, 0.78f, 1.00f), // T = 24000K
- Color(0.67f, 0.77f, 1.00f), // T = 25000K
- Color(0.66f, 0.76f, 1.00f), // T = 26000K
- Color(0.65f, 0.75f, 1.00f), // T = 27000K
- Color(0.65f, 0.75f, 1.00f), // T = 28000K
- Color(0.64f, 0.74f, 1.00f), // T = 29000K
- Color(0.64f, 0.74f, 1.00f), // T = 30000K
- Color(0.63f, 0.73f, 1.00f), // T = 31000K
- Color(0.63f, 0.73f, 1.00f), // T = 32000K
- Color(0.62f, 0.72f, 1.00f), // T = 33000K
- Color(0.62f, 0.72f, 1.00f), // T = 34000K
- Color(0.61f, 0.71f, 1.00f), // T = 35000K
- Color(0.61f, 0.71f, 1.00f), // T = 36000K
- Color(0.60f, 0.70f, 1.00f), // T = 37000K
- Color(0.60f, 0.70f, 1.00f), // T = 38000K
- Color(0.60f, 0.70f, 1.00f), // T = 39000K
- Color(0.60f, 0.70f, 1.00f), // T = 40000K
-};
-
-
struct CIEPoint
{
int wavelength;
@@ -695,7 +649,7 @@ createBlackbodyTable(const Eigen::Vector3d& whitepoint,
ColorTemperatureTable::ColorTemperatureTable(ColorTableType _type)
{
if (!setType(_type))
- setType(ColorTableType::Enhanced);
+ setType(ColorTableType::SunWhite);
}
@@ -705,13 +659,6 @@ ColorTemperatureTable::setType(ColorTableType _type)
tableType = _type;
switch (tableType)
{
- case ColorTableType::Enhanced:
- colors.clear();
- colors.reserve(StarColors_Enhanced.size());
- std::copy(StarColors_Enhanced.cbegin(), StarColors_Enhanced.cend(), std::back_inserter(colors));
- tempScale = static_cast(StarColors_Enhanced.size() - 1) / MaxTemperature;
- return true;
-
case ColorTableType::Blackbody_D65:
createBlackbodyTable(D65_XYZ, tempScale, colors);
return true;
diff --git a/src/celengine/starcolors.h b/src/celengine/starcolors.h
index a917679bd04..4ce3c73705e 100644
--- a/src/celengine/starcolors.h
+++ b/src/celengine/starcolors.h
@@ -1,6 +1,7 @@
// starcolors.cpp
//
-// Copyright (C) 2004, Chris Laurel
+// Copyright (C) 2004-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// Tables of star colors, indexed by temperature.
//
@@ -22,7 +23,6 @@
enum class ColorTableType
{
- Enhanced = 0,
Blackbody_D65 = 1,
SunWhite = 2,
VegaWhite = 3,
diff --git a/src/celengine/stardb.cpp b/src/celengine/stardb.cpp
index 71962ccbd1a..0e446fc1766 100644
--- a/src/celengine/stardb.cpp
+++ b/src/celengine/stardb.cpp
@@ -1,6 +1,6 @@
// stardb.cpp
//
-// Copyright (C) 2001-2024, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
diff --git a/src/celengine/stardb.h b/src/celengine/stardb.h
index 444f0983d99..daef8a022e4 100644
--- a/src/celengine/stardb.h
+++ b/src/celengine/stardb.h
@@ -1,6 +1,6 @@
// stardb.h
//
-// Copyright (C) 2001-2024, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
diff --git a/src/celengine/pointstarrenderer.cpp b/src/celengine/starrenderer.cpp
similarity index 67%
rename from src/celengine/pointstarrenderer.cpp
rename to src/celengine/starrenderer.cpp
index fa64e23b28c..1669e25467b 100644
--- a/src/celengine/pointstarrenderer.cpp
+++ b/src/celengine/starrenderer.cpp
@@ -1,6 +1,6 @@
-// pointstarrenderer.cpp
+// starrenderer.cpp
//
-// Copyright (C) 2001-2019, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -8,14 +8,14 @@
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
-#include "pointstarrenderer.h"
+#include "starrenderer.h"
#include
#include
#include
#include "observer.h"
-#include "pointstarvertexbuffer.h"
#include "render.h"
+#include "starvertexbuffer.h"
using namespace std;
using namespace Eigen;
@@ -31,12 +31,12 @@ static Vector3d astrocentricPosition(const UniversalCoord& pos,
return pos.offsetFromKm(star.getPosition(t));
}
-PointStarRenderer::PointStarRenderer() :
+StarRenderer::StarRenderer() :
ObjectRenderer(StarDistanceLimit)
{
}
-void PointStarRenderer::process(const Star& star, float distance, float appMag)
+void StarRenderer::process(const Star& star, float distance, float irradiance)
{
if (distance > distanceLimit)
return;
@@ -83,46 +83,37 @@ void PointStarRenderer::process(const Star& star, float distance, float appMag)
Vector3d hPos = astrocentricPosition(observer->getPosition(),
star,
observer->getTime());
- relPos = hPos.cast() * -astro::kilometersToLightYears(1.0f);
- distance = relPos.norm();
+ relPos = - hPos.cast();
+ distance = relPos.norm(); // in km
- // Recompute apparent magnitude using new distance computation
- appMag = star.getApparentMagnitude(distance);
+ // Recompute the irradiance using new distance computation
+ irradiance = star.getIrradiance(distance);
- discSizeInPixels = star.getRadius() / astro::lightYearsToKilometers(distance) / pixelSize;
+ discSizeInPixels = star.getRadius() / (distance * pixelSize);
}
- // Stars closer than the maximum solar system size are actually
- // added to the render list and depth sorted, since they may occlude
- // planets.
+ // Stars closer than the maximum solar system size are actually added
+ // to the render list and depth sorted, since they may occlude planets.
+ float irradiation = irradiance * exposure;
if (distance > SolarSystemMaxDistance)
{
- float pointSize, alpha, glareSize, glareAlpha;
- float size = BaseStarDiscSize * static_cast(renderer->getScreenDpi()) / 96.0f;
- renderer->calculatePointSize(appMag,
- size,
- pointSize,
- alpha,
- glareSize,
- glareAlpha);
-
- if (glareSize != 0.0f)
- glareVertexBuffer->addStar(relPos, Color(starColor, glareAlpha), glareSize);
- if (pointSize != 0.0f)
- starVertexBuffer->addStar(relPos, Color(starColor, alpha), pointSize);
-
- // Place labels for stars brighter than the specified label threshold brightness
- if (((labelMode & Renderer::StarLabels) != 0) && appMag < labelThresholdMag)
+ if (irradiation > astro::LOWEST_IRRADIATION)
{
- Vector3f starDir = relPos.normalized();
- if (starDir.dot(viewNormal) > cosFOV)
+ starVertexBuffer->addStar(relPos, starColor, irradiation);
+
+ // Place labels for stars brighter than the specified label threshold brightness
+ if (((labelMode & Renderer::StarLabels) != 0) && irradiation > labelLowestIrradiation)
{
- float distr = min(1.0f, 3.5f * (labelThresholdMag - appMag)/labelThresholdMag);
- Color color = Color(Renderer::StarLabelColor, distr * Renderer::StarLabelColor.alpha());
- renderer->addBackgroundAnnotation(nullptr,
- starDB->getStarName(star, true),
- color,
- relPos);
+ Vector3f starDir = relPos.normalized();
+ if (starDir.dot(viewNormal) > cosFOV)
+ {
+ float distr = 1.0f - labelLowestIrradiation / irradiation;
+ Color color = Color(Renderer::StarLabelColor, distr * Renderer::StarLabelColor.alpha());
+ renderer->addBackgroundAnnotation(nullptr,
+ starDB->getStarName(star, true),
+ color,
+ relPos);
+ }
}
}
}
@@ -135,16 +126,15 @@ void PointStarRenderer::process(const Star& star, float distance, float appMag)
rle.renderableType = RenderListEntry::RenderableStar;
rle.star = ☆
- // Objects in the render list are always rendered relative to
- // a viewer at the origin--this is different than for distant
- // stars.
+ // Objects in the render list are always rendered relative to a viewer at the origin;
+ // this is different than for distant stars.
float scale = astro::lightYearsToKilometers(1.0f);
rle.position = relPos * scale;
rle.centerZ = rle.position.dot(viewMatZ);
rle.distance = rle.position.norm();
rle.radius = star.getRadius();
rle.discSizeInPixels = discSizeInPixels;
- rle.appMag = appMag;
+ rle.irradiation = irradiation;
rle.isOpaque = true;
renderList->push_back(rle);
diff --git a/src/celengine/pointstarrenderer.h b/src/celengine/starrenderer.h
similarity index 73%
rename from src/celengine/pointstarrenderer.h
rename to src/celengine/starrenderer.h
index 44b649c7846..99fdbad79e9 100644
--- a/src/celengine/pointstarrenderer.h
+++ b/src/celengine/starrenderer.h
@@ -1,6 +1,6 @@
-// pointstarrenderer.h
+// starrenderer.h
//
-// Copyright (C) 2001-2019, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
@@ -18,29 +18,27 @@
#include "renderlistentry.h"
class ColorTemperatureTable;
-class PointStarVertexBuffer;
+class StarVertexBuffer;
class Star;
class StarDatabase;
-// TODO: move these variables to PointStarRenderer class
+// TODO: move these variables to StarRenderer class
// without adding a variable. Requires C++17
constexpr inline float StarDistanceLimit = 1.0e6f;
// Star disc size in pixels
constexpr inline float BaseStarDiscSize = 5.0f;
-constexpr inline float MaxScaledDiscStarSize = 8.0f;
constexpr inline float GlareOpacity = 0.65f;
-class PointStarRenderer : public ObjectRenderer
+class StarRenderer : public ObjectRenderer
{
public:
- PointStarRenderer();
+ StarRenderer();
void process(const Star &star, float distance, float appMag) override;
Eigen::Vector3d obsPos;
Eigen::Vector3f viewNormal;
std::vector* renderList { nullptr };
- PointStarVertexBuffer* starVertexBuffer { nullptr };
- PointStarVertexBuffer* glareVertexBuffer { nullptr };
+ StarVertexBuffer* starVertexBuffer { nullptr };
const StarDatabase* starDB { nullptr };
const ColorTemperatureTable* colorTemp { nullptr };
float SolarSystemMaxDistance { 1.0f };
diff --git a/src/celengine/pointstarvertexbuffer.cpp b/src/celengine/starvertexbuffer.cpp
similarity index 83%
rename from src/celengine/pointstarvertexbuffer.cpp
rename to src/celengine/starvertexbuffer.cpp
index 0b6dca36a66..fee6bf56828 100644
--- a/src/celengine/pointstarvertexbuffer.cpp
+++ b/src/celengine/starvertexbuffer.cpp
@@ -1,4 +1,4 @@
-// starfield.cpp
+// starvertexbuffer.cpp
//
// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
@@ -16,28 +16,28 @@
#include "shadermanager.h"
#include "render.h"
#include "texture.h"
-#include "pointstarvertexbuffer.h"
+#include "starvertexbuffer.h"
namespace gl = celestia::gl;
namespace util = celestia::util;
-PointStarVertexBuffer* PointStarVertexBuffer::current = nullptr;
+StarVertexBuffer* StarVertexBuffer::current = nullptr;
-PointStarVertexBuffer::PointStarVertexBuffer(const Renderer &renderer,
- capacity_t capacity) :
+StarVertexBuffer::StarVertexBuffer(const Renderer &renderer,
+ capacity_t capacity) :
m_renderer(renderer),
m_capacity(capacity),
m_vertices(std::make_unique(capacity))
{
}
-void PointStarVertexBuffer::startSprites()
+void StarVertexBuffer::startSprites()
{
m_prog = m_renderer.getShaderManager().getShader("star");
m_pointSizeFromVertex = true;
}
-void PointStarVertexBuffer::startBasicPoints()
+void StarVertexBuffer::startBasicPoints()
{
ShaderProperties shadprop;
shadprop.texUsage = TexUsage::VertexColors | TexUsage::StaticPointSize;
@@ -46,9 +46,9 @@ void PointStarVertexBuffer::startBasicPoints()
m_pointSizeFromVertex = false;
}
-void PointStarVertexBuffer::render()
+void StarVertexBuffer::render()
{
- if (m_nStars != 0)
+ if (m_nStars != 0 && m_prog != nullptr)
{
makeCurrent();
@@ -67,7 +67,7 @@ void PointStarVertexBuffer::render()
}
}
-void PointStarVertexBuffer::makeCurrent()
+void StarVertexBuffer::makeCurrent()
{
if (current == this || m_prog == nullptr)
return;
@@ -79,6 +79,9 @@ void PointStarVertexBuffer::makeCurrent()
m_prog->use();
m_prog->setMVPMatrices(m_renderer.getCurrentProjectionMatrix(), m_renderer.getCurrentModelViewMatrix());
+ int x, y, w, h;
+ m_renderer.getViewport(&x, &y, &w, &h);
+ m_prog->vec2Param("viewportSize") = Eigen::Vector2f(w, h);
if (m_pointSizeFromVertex)
{
m_prog->samplerParam("starTex") = 0;
@@ -91,7 +94,7 @@ void PointStarVertexBuffer::makeCurrent()
current = this;
}
-void PointStarVertexBuffer::setupVertexArrayObject()
+void StarVertexBuffer::setupVertexArrayObject()
{
if (!m_initialized)
{
@@ -148,13 +151,13 @@ void PointStarVertexBuffer::setupVertexArrayObject()
}
}
-void PointStarVertexBuffer::finish()
+void StarVertexBuffer::finish()
{
render();
current = nullptr;
}
-void PointStarVertexBuffer::enable()
+void StarVertexBuffer::enable()
{
#ifndef GL_ES
glEnable(GL_POINT_SPRITE);
@@ -162,7 +165,7 @@ void PointStarVertexBuffer::enable()
#endif
}
-void PointStarVertexBuffer::disable()
+void StarVertexBuffer::disable()
{
#ifndef GL_ES
glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
@@ -170,12 +173,12 @@ void PointStarVertexBuffer::disable()
#endif
}
-void PointStarVertexBuffer::setTexture(Texture *texture)
+void StarVertexBuffer::setTexture(Texture *texture)
{
m_texture = texture;
}
-void PointStarVertexBuffer::setPointScale(float pointSize)
+void StarVertexBuffer::setPointScale(float pointSize)
{
m_pointScale = pointSize;
}
diff --git a/src/celengine/pointstarvertexbuffer.h b/src/celengine/starvertexbuffer.h
similarity index 76%
rename from src/celengine/pointstarvertexbuffer.h
rename to src/celengine/starvertexbuffer.h
index 5123a3368b3..9c4dedd501b 100644
--- a/src/celengine/pointstarvertexbuffer.h
+++ b/src/celengine/starvertexbuffer.h
@@ -1,4 +1,4 @@
-// pointstarvertexbuffer.h
+// starvertexbuffer.h
//
// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
@@ -24,19 +24,19 @@ class Buffer;
class VertexObject;
}
-// PointStarVertexBuffer is used when hardware supports point sprites.
-class PointStarVertexBuffer
+// StarVertexBuffer is used when hardware supports point sprites.
+class StarVertexBuffer
{
public:
using capacity_t = unsigned int;
- PointStarVertexBuffer(const Renderer &renderer, capacity_t capacity);
- ~PointStarVertexBuffer() = default;
- PointStarVertexBuffer() = delete;
- PointStarVertexBuffer(const PointStarVertexBuffer&) = delete;
- PointStarVertexBuffer(PointStarVertexBuffer&&) = delete;
- PointStarVertexBuffer& operator=(const PointStarVertexBuffer&) = delete;
- PointStarVertexBuffer& operator=(PointStarVertexBuffer&&) = delete;
+ StarVertexBuffer(const Renderer &renderer, capacity_t capacity);
+ ~StarVertexBuffer() = default;
+ StarVertexBuffer() = delete;
+ StarVertexBuffer(const StarVertexBuffer&) = delete;
+ StarVertexBuffer(StarVertexBuffer&&) = delete;
+ StarVertexBuffer& operator=(const StarVertexBuffer&) = delete;
+ StarVertexBuffer& operator=(StarVertexBuffer&&) = delete;
void startBasicPoints();
void startSprites();
@@ -71,14 +71,14 @@ class PointStarVertexBuffer
std::unique_ptr m_vo2;
bool m_initialized{ false };
- static PointStarVertexBuffer *current;
+ static StarVertexBuffer *current;
void makeCurrent();
void setupVertexArrayObject();
};
inline void
-PointStarVertexBuffer::addStar(const Eigen::Vector3f &pos,
+StarVertexBuffer::addStar(const Eigen::Vector3f &pos,
const Color &color,
float size)
{
diff --git a/src/celengine/universe.cpp b/src/celengine/universe.cpp
index 0a3f5acfc65..c748f07f5d4 100644
--- a/src/celengine/universe.cpp
+++ b/src/celengine/universe.cpp
@@ -1,6 +1,6 @@
// universe.cpp
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// A container for catalogs of galaxies, stars, and planets.
@@ -816,7 +816,7 @@ Universe::pickPlanet(const SolarSystem& solarSystem,
// If no planet was intersected by the pick ray, choose the planet|moon
// with the smallest angular separation from the pick ray. Very distant
- // planets are likley to fail the intersection test even if the user
+ // planets are likely to fail the intersection test even if the user
// clicks on a pixel where the planet's disc has been rendered--in order
// to make distant planets visible on the screen at all, their apparent
// size has to be greater than their actual disc size.
@@ -1082,7 +1082,7 @@ Universe::find(std::string_view s,
// Find an object from a path, for example Sol/Earth/Moon or Upsilon And/b
// Currently, 'absolute' paths starting with a / are not supported nor are
// paths that contain galaxies. The caller may pass in a list of solar systems
-// to search for objects--this is roughly analgous to the PATH environment
+// to search for objects--this is roughly analogous to the PATH environment
// variable in Unix and Windows. Typically, the solar system will be one
// in which the user is currently located.
Selection
diff --git a/src/celengine/universe.h b/src/celengine/universe.h
index 51f779ccfcd..4e6c6abecf1 100644
--- a/src/celengine/universe.h
+++ b/src/celengine/universe.h
@@ -1,6 +1,6 @@
// universe.h
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
diff --git a/src/celestia/celestiacore.cpp b/src/celestia/celestiacore.cpp
index f09b9772e16..339af25a4fd 100644
--- a/src/celestia/celestiacore.cpp
+++ b/src/celestia/celestiacore.cpp
@@ -6,7 +6,7 @@
// keyboard events. CelestiaCore then turns those events into calls
// to Renderer and Simulation.
//
-// Copyright (C) 2001-2023, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -507,10 +507,6 @@ void CelestiaCore::mouseButtonUp(float x, float y, int button)
observer->setZoom(observer->getAlternateZoom());
}
setFOVFromZoom();
-
- // If AutoMag, adapt the faintestMag to the new fov
- if((renderer->getRenderFlags() & Renderer::ShowAutoMag) != 0)
- setFaintestAutoMag();
}
}
}
@@ -1024,27 +1020,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
singleView();
break;
- case '\023': // Ctrl+S
- renderer->setStarStyle((Renderer::StarStyle) (((int) renderer->getStarStyle() + 1) %
- (int) Renderer::StarStyleCount));
- switch (renderer->getStarStyle())
- {
- case Renderer::FuzzyPointStars:
- flash(_("Star style: fuzzy points"));
- break;
- case Renderer::PointStars:
- flash(_("Star style: points"));
- break;
- case Renderer::ScaledDiscStars:
- flash(_("Star style: scaled discs"));
- break;
- default:
- break;
- }
-
- notifyWatchers(RenderFlagsChanged);
- break;
-
case '\024': // Ctrl+T
renderer->setRenderFlags(renderer->getRenderFlags() ^ Renderer::ShowCometTails);
if (renderer->getRenderFlags() & Renderer::ShowCometTails)
@@ -1074,21 +1049,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
notifyWatchers(RenderFlagsChanged);
break;
- case '\031': // Ctrl+Y
- renderer->setRenderFlags(renderer->getRenderFlags() ^ Renderer::ShowAutoMag);
- if (renderer->getRenderFlags() & Renderer::ShowAutoMag)
- {
- flash(_("Auto-magnitude enabled"));
- setFaintestAutoMag();
- }
- else
- {
- flash(_("Auto-magnitude disabled"));
- }
- notifyWatchers(RenderFlagsChanged);
- break;
-
-
case '\033': // Escape
cancelScript();
addToHistory();
@@ -1169,7 +1129,7 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
case '%':
switch (renderer->getStarColorTable())
{
- case ColorTableType::Enhanced:
+ case ColorTableType::VegaWhite:
renderer->setStarColorTable(ColorTableType::Blackbody_D65);
flash(_("Star color: Blackbody D65"));
notifyWatchers(RenderFlagsChanged);
@@ -1186,12 +1146,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
flash(_("Star color: Blackbody (Vega Whitepoint)"));
notifyWatchers(RenderFlagsChanged);
break;
-
- case ColorTableType::VegaWhite:
- renderer->setStarColorTable(ColorTableType::Enhanced);
- flash(_("Star color: Classic"));
- notifyWatchers(RenderFlagsChanged);
- break;
}
break;
@@ -1513,21 +1467,17 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
break;
case '[':
- if ((renderer->getRenderFlags() & Renderer::ShowAutoMag) == 0)
{
- if (sim->getFaintestVisible() > 1.0f)
- {
- setFaintest(sim->getFaintestVisible() - 0.2f);
- notifyWatchers(FaintestChanged);
- auto buf = fmt::format(loc, _("Magnitude limit: {:.2f}"), sim->getFaintestVisible());
- flash(buf);
- }
+ setExposure(sim->getExposure() * 0.5);
+ auto buf = fmt::format(loc, _("Exposure time: {:.2f}"), sim->getExposure());
+ flash(buf);
}
- else if (renderer->getFaintestAM45deg() > 6.0f)
+ break;
+
+ case ']':
{
- renderer->setFaintestAM45deg(renderer->getFaintestAM45deg() - 0.1f);
- setFaintestAutoMag();
- auto buf = fmt::format(loc, _("Auto magnitude limit at 45 degrees: {:.2f}"), renderer->getFaintestAM45deg());
+ setExposure(sim->getExposure() * 2.0);
+ auto buf = fmt::format(loc, _("Exposure time: {:.2f}"), sim->getExposure());
flash(buf);
}
break;
@@ -1537,26 +1487,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
sim->setTimeScale(1.0f);
break;
- case ']':
- if((renderer->getRenderFlags() & Renderer::ShowAutoMag) == 0)
- {
- if (sim->getFaintestVisible() < 15.0f)
- {
- setFaintest(sim->getFaintestVisible() + 0.2f);
- notifyWatchers(FaintestChanged);
- auto buf = fmt::format(loc, _("Magnitude limit: {:.2f}"), sim->getFaintestVisible());
- flash(buf);
- }
- }
- else if (renderer->getFaintestAM45deg() < 12.0f)
- {
- renderer->setFaintestAM45deg(renderer->getFaintestAM45deg() + 0.1f);
- setFaintestAutoMag();
- auto buf = fmt::format(loc, _("Auto magnitude limit at 45 degrees: {:.2f}"), renderer->getFaintestAM45deg());
- flash(buf);
- }
- break;
-
case '`':
hud->hudSettings().showFPSCounter = !hud->hudSettings().showFPSCounter;
break;
@@ -2282,13 +2212,6 @@ void CelestiaCore::updateFOV(float newFOV, const std::optional
Eigen::Vector3f newPickRay = getPickRay(focus.value().x(), focus.value().y(), view);
observer->rotate(Eigen::Quaternionf::FromTwoVectors(oldPickRay.value(), newPickRay));
}
-
- if ((renderer->getRenderFlags() & Renderer::ShowAutoMag) != 0)
- {
- setFaintestAutoMag();
- auto buf = fmt::format(loc, _("Magnitude limit: {:.2f}"), sim->getFaintestVisible());
- flash(buf);
- }
}
void CelestiaCore::initLocale()
@@ -2540,10 +2463,7 @@ bool CelestiaCore::initSimulation(const fs::path& configFileName,
set_or_unset(interactionFlags, InteractionFlags::FocusZooming, config->mouse.focusZooming);
sim = new Simulation(universe);
- if ((renderer->getRenderFlags() & Renderer::ShowAutoMag) == 0)
- {
- sim->setFaintestVisible(config->renderDetails.faintestVisible);
- }
+ sim->setExposure(config->renderDetails.exposure);
viewManager = std::make_unique(new View(View::ViewWindow, sim->getActiveObserver(), 0.0f, 0.0f, 1.0f, 1.0f));
@@ -2582,8 +2502,7 @@ bool CelestiaCore::initRenderer([[maybe_unused]] bool useMesaPackInvert)
{
renderer->setRenderFlags(Renderer::ShowStars |
Renderer::ShowPlanets |
- Renderer::ShowAtmospheres |
- Renderer::ShowAutoMag);
+ Renderer::ShowAtmospheres);
Renderer::DetailOptions detailOptions;
detailOptions.orbitPathSamplePoints = config->renderDetails.orbitPathSamplePoints;
@@ -2603,12 +2522,6 @@ bool CelestiaCore::initRenderer([[maybe_unused]] bool useMesaPackInvert)
return false;
}
- if ((renderer->getRenderFlags() & Renderer::ShowAutoMag) != 0)
- {
- renderer->setFaintestAM45deg(renderer->getFaintestAM45deg());
- setFaintestAutoMag();
- }
-
auto mainFont = config->fonts.mainFont.empty()
? LoadFontHelper(renderer, "DejaVuSans.ttf,12")
: LoadFontHelper(renderer, config->fonts.mainFont);
@@ -2652,21 +2565,10 @@ bool CelestiaCore::initRenderer([[maybe_unused]] bool useMesaPackInvert)
return true;
}
-/// Set the faintest visible star magnitude; adjust the renderer's
-/// brightness parameters appropriately.
-void CelestiaCore::setFaintest(float magnitude)
-{
- sim->setFaintestVisible(magnitude);
-}
-
-/// Set faintest visible star magnitude and saturation magnitude
-/// for a given field of view;
-/// adjust the renderer's brightness parameters appropriately.
-void CelestiaCore::setFaintestAutoMag()
+/// Set the exposure; adjust the renderer's brightness parameters appropriately.
+void CelestiaCore::setExposure(float _exposure)
{
- float faintestMag;
- renderer->autoMag(faintestMag, sim->getActiveObserver()->getZoom());
- sim->setFaintestVisible(faintestMag);
+ sim->setExposure(_exposure);
}
void CelestiaCore::fatalError(const string& msg, bool visual)
diff --git a/src/celestia/celestiacore.h b/src/celestia/celestiacore.h
index 775b69751b1..ddcc910baf3 100644
--- a/src/celestia/celestiacore.h
+++ b/src/celestia/celestiacore.h
@@ -1,6 +1,6 @@
// celestiacore.h
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -165,7 +165,7 @@ class CelestiaCore // : public Watchable
VerbosityLevelChanged = 0x0004,
TimeZoneChanged = 0x0008,
AmbientLightChanged = 0x0010,
- FaintestChanged = 0x0020,
+ // removed notification = 0x0020,
HistoryChanged = 0x0040,
TextEnterModeChanged = 0x0080,
GalaxyLightGainChanged = 0x0100,
@@ -284,8 +284,7 @@ class CelestiaCore // : public Watchable
void addWatcher(CelestiaWatcher*);
void removeWatcher(CelestiaWatcher*);
- void setFaintest(float);
- void setFaintestAutoMag();
+ void setExposure(float);
std::vector getObservers() const;
celestia::View* getViewByObserver(const Observer*) const;
diff --git a/src/celestia/configfile.cpp b/src/celestia/configfile.cpp
index e1fb17ce048..e258d1c4a30 100644
--- a/src/celestia/configfile.cpp
+++ b/src/celestia/configfile.cpp
@@ -1,6 +1,6 @@
// configfile.cpp
//
-// Copyright (C) 2001-2009, the Celestia Development Team
+// Copyright (C) 2001-present, the Celestia Development Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -183,7 +183,7 @@ applyRenderDetails(CelestiaConfig::RenderDetails& renderDetails, const Hash& has
applyNumber(renderDetails.orbitWindowEnd, hash, "OrbitWindowEnd"sv);
applyNumber(renderDetails.orbitPeriodsShown, hash, "OrbitPeriodsShown"sv);
applyNumber(renderDetails.linearFadeFraction, hash, "LinearFadeFraction"sv);
- applyNumber(renderDetails.faintestVisible, hash, "FaintestVisibleMagnitude"sv);
+ applyNumber(renderDetails.exposure, hash, "Exposure"sv);
applyNumber(renderDetails.shadowTextureSize, hash, "ShadowTextureSize"sv);
applyNumber(renderDetails.eclipseTextureSize, hash, "EclipseTextureSize"sv);
applyNumber(renderDetails.orbitPathSamplePoints, hash, "OrbitPathSamplePoints"sv);
diff --git a/src/celestia/configfile.h b/src/celestia/configfile.h
index 1cece5bc742..ef6b90319ca 100644
--- a/src/celestia/configfile.h
+++ b/src/celestia/configfile.h
@@ -1,6 +1,7 @@
// configfile.h
//
-// Copyright (C) 2001, Chris Laurel
+// Copyright (C) 2001-present, the Celestia Development Team
+// Original version by Chris Laurel
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -68,7 +69,7 @@ struct CelestiaConfig
double orbitWindowEnd{ 0.5 };
double orbitPeriodsShown{ 1.0 };
double linearFadeFraction{ 0.0 };
- float faintestVisible{ 6.0f };
+ float exposure{ 1.0f };
unsigned int shadowTextureSize{ 256 };
unsigned int eclipseTextureSize{ 128 };
unsigned int orbitPathSamplePoints{ 100 };
diff --git a/src/celestia/gtk/actions.cpp b/src/celestia/gtk/actions.cpp
index 23200f7e715..af77e1e668f 100644
--- a/src/celestia/gtk/actions.cpp
+++ b/src/celestia/gtk/actions.cpp
@@ -745,13 +745,13 @@ actionViewOptions(GtkAction*, AppData* app)
}
void
-actionStarsMore(GtkAction*, AppData* app)
+actionIncreaseExposure(GtkAction*, AppData* app)
{
app->core->charEntered(']');
}
void
-actionStarsFewer(GtkAction*, AppData* app)
+actionDecreaseExposure(GtkAction*, AppData* app)
{
app->core->charEntered('[');
}
@@ -871,13 +871,6 @@ actionVerbosity(GtkRadioAction* action, GtkRadioAction*, AppData* app)
app->core->setHudDetail(value);
}
-void
-actionStarStyle(GtkRadioAction* action, GtkRadioAction*, AppData* app)
-{
- int value = gtk_radio_action_get_current_value(action);
- app->renderer->setStarStyle((Renderer::StarStyle)value);
-}
-
void
actionAmbientLight(GtkRadioAction* action, GtkRadioAction*, AppData* app)
{
@@ -898,12 +891,6 @@ actionRenderAtmospheres(GtkToggleAction* action, AppData* app)
setRenderFlag(app, Renderer::ShowAtmospheres, gtk_toggle_action_get_active(action));
}
-void
-actionRenderAutoMagnitude(GtkToggleAction* action, AppData* app)
-{
- setRenderFlag(app, Renderer::ShowAutoMag, gtk_toggle_action_get_active(action));
-}
-
void
actionRenderCelestialGrid(GtkToggleAction* action, AppData* app)
{
@@ -1258,7 +1245,6 @@ resyncRenderActions(AppData* app)
case Renderer::ShowPlanetRings: actionName = "RenderPlanetRings"; break;
case Renderer::ShowRingShadows: actionName = "RenderRingShadows"; break;
case Renderer::ShowBoundaries: actionName = "RenderConstellationBoundaries"; break;
- case Renderer::ShowAutoMag: actionName = "RenderAutoMagnitude"; break;
case Renderer::ShowCometTails: actionName = "RenderCometTails"; break;
case Renderer::ShowMarkers: actionName = "RenderMarkers"; break;
case Renderer::ShowPartialTrajectories: actionName = nullptr; break; /* Not useful yet */
@@ -1354,26 +1340,6 @@ resyncAmbientActions(AppData* app)
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE);
}
-/* Synchronizes the Verbosity Actions with the state of the core */
-void
-resyncStarStyleActions(AppData* app)
-{
- GtkAction* action;
- const char* actionName;
-
- switch (app->renderer->getStarStyle())
- {
- case Renderer::FuzzyPointStars: actionName = "StarsFuzzy"; break;
- case Renderer::PointStars: actionName = "StarsPoints"; break;
- case Renderer::ScaledDiscStars: actionName = "StarsDiscs"; break;
- default: return;
- }
-
- /* Get the action, set the widget */
- action = gtk_action_group_get_action(app->agStarStyle, actionName);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE);
-}
-
/* Placeholder for when galaxy brightness is added as an action */
void
resyncGalaxyGainActions(AppData* app)
diff --git a/src/celestia/gtk/actions.h b/src/celestia/gtk/actions.h
index 1fb5c516939..d8a5cd94428 100644
--- a/src/celestia/gtk/actions.h
+++ b/src/celestia/gtk/actions.h
@@ -48,8 +48,8 @@ void actionTimeLocal(GtkAction*, AppData*);
void actionViewerSize(GtkAction*, AppData*);
void actionFullScreen(GtkAction*, AppData*);
void actionViewOptions(GtkAction*, AppData*);
-void actionStarsMore(GtkAction*, AppData*);
-void actionStarsFewer(GtkAction*, AppData*);
+void actionIncreaseExposure(GtkAction*, AppData*);
+void actionDecreaseExposure(GtkAction*, AppData*);
void actionMenuBarVisible(GtkToggleAction*, AppData*);
void actionMultiSplitH(GtkAction*, AppData*);
void actionMultiSplitV(GtkAction*, AppData*);
@@ -66,13 +66,11 @@ void actionHelpAbout(GtkAction*, AppData*);
/* Radio Button Actions */
void actionVerbosity(GtkRadioAction*, GtkRadioAction*, AppData*);
-void actionStarStyle(GtkRadioAction*, GtkRadioAction*, AppData*);
void actionAmbientLight(GtkRadioAction*, GtkRadioAction*, AppData*);
/* Render-Flag Actions */
void actionRenderAA(GtkToggleAction*, AppData*);
void actionRenderAtmospheres(GtkToggleAction*, AppData*);
-void actionRenderAutoMagnitude(GtkToggleAction*, AppData*);
void actionRenderCelestialGrid(GtkToggleAction*, AppData*);
void actionRenderClouds(GtkToggleAction*, AppData*);
void actionRenderCometTails(GtkToggleAction*, AppData*);
@@ -131,7 +129,6 @@ void resyncOrbitActions(AppData* app);
void resyncVerbosityActions(AppData* app);
void resyncTimeZoneAction(AppData* app);
void resyncAmbientActions(AppData* app);
-void resyncStarStyleActions(AppData* app);
void resyncGalaxyGainActions(AppData* app);
void resyncTextureResolutionActions(AppData* app);
diff --git a/src/celestia/gtk/common.cpp b/src/celestia/gtk/common.cpp
index 6e668e7bdfc..10837b127f1 100644
--- a/src/celestia/gtk/common.cpp
+++ b/src/celestia/gtk/common.cpp
@@ -178,14 +178,14 @@ setSaneAmbientLight(AppData* app, float value)
app->renderer->setAmbientLightLevel(value);
}
-/* Sanitizes and sets Visual Magnitude */
+/* Sanitizes and sets Exposure */
void
-setSaneVisualMagnitude(AppData* app, float value)
+setSaneExposure(AppData* app, float value)
{
- if (value < 0.0 || value > 100.0)
- value = 8.5f; /* Default from Simulation::Simulation() */
+ if (value < 0.0 || value > 1000.0)
+ value = 1.0f; /* Default */
- app->simulation->setFaintestVisible(value);
+ app->simulation->setExposure(value);
}
/* Sanitizes and sets Galaxy Light Gain */
@@ -218,16 +218,6 @@ setSaneVerbosity(AppData* app, int value)
app->core->setHudDetail(value);
}
-/* Sanitizes and sets Star Style */
-void
-setSaneStarStyle(AppData* app, Renderer::StarStyle value)
-{
- if (value < Renderer::FuzzyPointStars || value > Renderer::ScaledDiscStars)
- value = Renderer::FuzzyPointStars;
-
- app->renderer->setStarStyle(value);
-}
-
/* Sanitizes and sets Texture Resolution */
void
setSaneTextureResolution(AppData* app, int value)
diff --git a/src/celestia/gtk/common.h b/src/celestia/gtk/common.h
index bd9c2466b44..3c4904d9b0c 100644
--- a/src/celestia/gtk/common.h
+++ b/src/celestia/gtk/common.h
@@ -43,7 +43,6 @@ struct _AppData {
GtkActionGroup* agOrbit;
GtkActionGroup* agLabel;
GtkActionGroup* agVerbosity;
- GtkActionGroup* agStarStyle;
GtkActionGroup* agAmbient;
/* Settings */
@@ -80,11 +79,10 @@ int getWinY(AppData* app);
/* Functions to apply preferences with sanity checks */
void setSaneAmbientLight(AppData* app, float value);
-void setSaneVisualMagnitude(AppData* app, float value);
+void setSaneExposure(AppData* app, float value);
void setSaneGalaxyLightGain(float value);
void setSaneDistanceLimit(AppData* app, int value);
void setSaneVerbosity(AppData* app, int value);
-void setSaneStarStyle(AppData* app, Renderer::StarStyle value);
void setSaneTextureResolution(AppData* app, int value);
void setSaneAltSurface(AppData* app, char* value);
void setSaneWinSize(AppData* app, int x, int y);
diff --git a/src/celestia/gtk/data/celestia-gtk.1 b/src/celestia/gtk/data/celestia-gtk.1
index 20f430dccc3..262111d471a 100644
--- a/src/celestia/gtk/data/celestia-gtk.1
+++ b/src/celestia/gtk/data/celestia-gtk.1
@@ -123,8 +123,8 @@ W@Toggle wireframe mode
;@Toggle earth-based equatorial coordinate sphere
B@Toggle star labels
P@Toggle per-pixel lighting (if supported)
-[@Decrease limiting magnitude (fewer stars visible)
-]@Increase limiting magnitude (more stars visible)
+[@Decrease Exposure Time
+]@Increase Exposure Time
{@Decrease ambient illumination
}@Increase ambient illumination
,@Narrow field of view
diff --git a/src/celestia/gtk/data/celestia.schemas b/src/celestia/gtk/data/celestia.schemas
index acbf6e6ceb4..500b71bc3cf 100644
--- a/src/celestia/gtk/data/celestia.schemas
+++ b/src/celestia/gtk/data/celestia.schemas
@@ -55,13 +55,13 @@
- /schemas/apps/celestia/visualMagnitude
- /apps/celestia/visualMagnitude
+ /schemas/apps/celestia/exposure
+ /apps/celestia/exposure
celestia
float
- 8.5
+ 1.0
- Visual magnitude.
+ Exposure Time.
@@ -114,17 +114,6 @@
Fullscreen state.
-
- /schemas/apps/celestia/starStyle
- /apps/celestia/starStyle
- celestia
- int
- 0
-
- Style of star rendering.
- 0=Fuzzy Points, 1=Points, 2=Scaled Discs
-
-
/schemas/apps/celestia/textureResolution
/apps/celestia/textureResolution
@@ -289,16 +278,6 @@
Render boundary lines between constellations.
-
- /schemas/apps/celestia/render/autoMag
- /apps/celestia/render/autoMag
- celestia
- bool
- true
-
- Render body brightness with auto-magnitude.
-
-
/schemas/apps/celestia/render/cometTails
/apps/celestia/render/cometTails
diff --git a/src/celestia/gtk/data/celestiaui.xml b/src/celestia/gtk/data/celestiaui.xml
index 28f74f347dd..406a752e024 100644
--- a/src/celestia/gtk/data/celestiaui.xml
+++ b/src/celestia/gtk/data/celestiaui.xml
@@ -102,19 +102,14 @@
-
-
-
+
+
|