diff --git a/celestia.cfg.in b/celestia.cfg.in
index 9411e5c225..e1a5869da3 100644
--- a/celestia.cfg.in
+++ b/celestia.cfg.in
@@ -250,11 +250,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 ce1d2dcae8..32415da2fa 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 4e5cde0c09..68fc3d64d0 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 75834a5502..4486bb5dfd 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 0a1c9727d4..118b67463f 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 07fc00a7b9..e1c7048866 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 39cdc31508..3d2bd274c5 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 c5a5c5956d..beb0b0e069 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 d447606b68..0275348759 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 3e265ebc5a..d3047fde9c 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 69da63ab97..1462cf9502 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 7648ad3f22..b2864d5a94 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 d507188fee..6cab1a47dc 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 0f8e65ad5a..50c42c28a0 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 d507188fee..6cab1a47dc 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 604cf117f1..279e0203bc 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 0540122e11..9736e51b29 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 5607c492b2..24e560b5c5 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 1558ae071b..368263080b 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 c876019f4a..f0aaf8c4ef 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 f60cea7208..caa747d3aa 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 6da27aa80e..4f7bbd1d1f 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 79e8cc7ef1..49802d25e1 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 80c1ec8f8c..e66efc823d 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 70ec4a0828..c510abf8c7 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 aca3bc1d91..bf24fa025f 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 927da1122c..2544b25631 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 f3add9fc6e..0b3a625840 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 f40b0fdbe3..f0e02380d0 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 7154e39644..468c323d1e 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 12d4137992..e2950fdc00 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 096c182bb5..8c382c0678 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 7076a1c42d..c122d9919d 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 d1ef907a86..fc98844764 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 1324380d48..c0260ba024 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 bcfb1fc3bc..1b2d308b14 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 45f777ba50..ec53eb6465 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 a2ca69e51c..c80fe0155a 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 22c8ac99db..14e011e524 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 4adccf9b4a..4cb3c27cee 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 4adccf9b4a..4cb3c27cee 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 7ee07192a7..d896f9c6ff 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 d99d560724..ae0137e920 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 d1bbe4c1ff..d87c8794b8 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 47bba45728..29af589f14 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 b73da0a1c2..6de576c722 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 b9861859eb..59d9faf6ab 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 6f7fe49b08..68e7b05e36 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 6202ed58f3..803ee16921 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/celengine/CMakeLists.txt b/src/celengine/CMakeLists.txt
index ccdcb13ffe..f313a345f8 100644
--- a/src/celengine/CMakeLists.txt
+++ b/src/celengine/CMakeLists.txt
@@ -84,10 +84,6 @@ set(CELENGINE_SOURCES
perspectiveprojectionmode.h
planetgrid.cpp
planetgrid.h
- pointstarrenderer.cpp
- pointstarrenderer.h
- pointstarvertexbuffer.cpp
- pointstarvertexbuffer.h
projectionmode.cpp
projectionmode.h
rectangle.h
@@ -129,6 +125,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 38054b6b23..2dd993201c 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
@@ -834,30 +835,21 @@ Body::getLuminosity(const Star& sun,
return getLuminosity(sun.getLuminosity(), distanceFromSun);
}
+/*! 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 static_cast(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,
@@ -907,6 +899,60 @@ Body::getApparentMagnitude(float sunLuminosity,
return astro::lumToAppMag(getLuminosity(sunLuminosity, (float) distanceToSun) * illuminatedFraction,
static_cast(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 Eigen::Vector3d& sunPosition,
+ const Eigen::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 Eigen::Vector3d& sunPosition,
+ const Eigen::Vector3d& viewerPosition) const
+{
+ double distanceToSun = sunPosition.norm();
+ double distanceToViewer = viewerPosition.norm();
+ float illuminatedFraction = (float) (1.0 + (viewerPosition / distanceToViewer).dot(sunPosition / distanceToSun)) / 2.0f;
+
+ return getIrradiance(sunLuminosity, (float) distanceToSun, (float) distanceToViewer) * illuminatedFraction;
+}
BodyClassification
Body::getClassification() const
diff --git a/src/celengine/body.h b/src/celengine/body.h
index 24d66e4646..af584bb1a5 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
@@ -296,6 +297,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 70f6f42ea4..1c1e3936ab 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 3016fa3546..672d771985 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 8fdf237334..4cf225fb1e 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
@@ -64,6 +64,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;
@@ -105,7 +109,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:
@@ -181,10 +188,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 b4916e406a..558cf5e682 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
@@ -22,15 +22,15 @@ template
class ObjectRenderer : public celestia::engine::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 };
RenderFlags renderFlags { RenderFlags::ShowNothing };
RenderLabels labelMode { RenderLabels::NoLabels };
diff --git a/src/celengine/render.cpp b/src/celengine/render.cpp
index dc589098e3..f19b62c8a7 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
@@ -42,8 +42,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"
@@ -62,7 +62,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -84,6 +83,7 @@
#include
#include
#include
+#include
#ifdef _MSC_VER
#include
#ifndef alloca
@@ -100,8 +100,6 @@ using celestia::util::GetLogger;
namespace util = celestia::util;
-static constexpr int REF_DISTANCE_TO_SCREEN = 400; //[mm]
-
// Contribution from planetshine beyond this distance (in units of object radius)
// is considered insignificant.
static constexpr float PLANETSHINE_DISTANCE_LIMIT_FACTOR = 100.0f;
@@ -205,14 +203,12 @@ Renderer::Renderer() :
#ifndef GL_ES
renderMode(GL_FILL),
#endif
- pointStarVertexBuffer(std::make_unique(*this, 2048)),
- glareVertexBuffer(std::make_unique(*this, 2048)),
+ starVertexBuffer(std::make_unique(*this, 2048)),
m_atmosphereRenderer(std::make_unique(*this)),
m_cometRenderer(std::make_unique(*this)),
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)),
@@ -243,7 +239,7 @@ Renderer::~Renderer()
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);
@@ -370,8 +366,8 @@ 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,
@@ -379,12 +375,12 @@ 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)));
*/
}
@@ -484,7 +480,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
@@ -523,17 +518,6 @@ float Renderer::getPointHeight() const
return 2.0f / windowHeight * getScaleFactor();
}
-void Renderer::setFaintestAM45deg(float _faintestAutoMag45deg)
-{
- faintestAutoMag45deg = _faintestAutoMag45deg;
- markSettingsChanged();
-}
-
-float Renderer::getFaintestAM45deg() const
-{
- return faintestAutoMag45deg;
-}
-
TextureResolution Renderer::getResolution() const
{
return textureResolution;
@@ -1077,7 +1061,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
@@ -1093,7 +1077,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
@@ -1202,14 +1186,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
@@ -1280,8 +1256,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);
}
@@ -1291,8 +1267,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)
@@ -1326,7 +1301,7 @@ void Renderer::renderItem(const RenderListEntry& rle,
renderStar(*rle.star,
rle.position,
rle.distance,
- rle.appMag,
+ rle.irradiation,
observer,
nearPlaneDistance, farPlaneDistance,
m);
@@ -1336,7 +1311,7 @@ void Renderer::renderItem(const RenderListEntry& rle,
renderPlanet(*rle.body,
rle.position,
rle.distance,
- rle.appMag,
+ rle.irradiation,
observer,
nearPlaneDistance, farPlaneDistance,
m);
@@ -1368,7 +1343,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
@@ -1403,7 +1378,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();
@@ -1414,27 +1389,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 (util::is_set(renderFlags, RenderFlags::ShowAutoMag))
- {
- autoMag(faintestMag, zoom);
- }
- else
- {
- faintestMag = faintestMagNight;
- saturationMag = saturationMagNight;
- }
-
- faintestPlanetMag = faintestMag;
if (util::is_set(renderFlags, RenderFlags::ShowSolarSystemObjects | RenderFlags::ShowOrbits))
{
buildNearSystemsLists(universe, observer, xfrustum, now);
@@ -1448,28 +1411,9 @@ void Renderer::render(const Observer& observer,
// on planets with thick atmospheres.)
if (util::is_set(renderFlags, RenderFlags::ShowAtmospheres))
{
- 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 == 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);
@@ -1481,13 +1425,13 @@ void Renderer::render(const Observer& observer,
// Render deep sky objects
if (util::is_set(renderFlags, RenderFlags::ShowDeepSpaceObjects) && universe.getDSOCatalog() != nullptr)
{
- renderDeepSkyObjects(universe, observer, faintestMag);
+ renderDeepSkyObjects(universe, observer, exposure);
}
// Render stars
if (util::is_set(renderFlags, RenderFlags::ShowStars) && universe.getStarCatalog() != nullptr)
{
- renderPointStars(*universe.getStarCatalog(), faintestMag, observer);
+ renderStars(*universe.getStarCatalog(), exposure, observer);
}
// Translate the camera before rendering the asterisms and boundaries
@@ -1526,8 +1470,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);
@@ -1572,124 +1516,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 == 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 == 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 != StarStyle::PointStars)
- m_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);
- m_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,
@@ -1718,6 +1544,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);
@@ -1729,6 +1557,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;
@@ -2015,8 +1845,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)
@@ -2033,8 +1864,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.
@@ -2048,13 +1879,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;
@@ -2071,7 +1902,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)
@@ -2135,7 +1966,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;
@@ -2240,7 +2071,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);
@@ -2282,6 +2113,7 @@ void Renderer::renderObject(const Vector3f& pos,
}
else
{
+ ri.isStar = obj.isStar;
renderSphereUnlit(ri, viewFrustum, planetMVP, this, m_lodSphere.get());
}
}
@@ -2356,7 +2188,7 @@ void Renderer::renderObject(const Vector3f& pos,
if (fade > 0 && util::is_set(renderFlags, RenderFlags::ShowAtmospheres) && 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;
@@ -2622,7 +2454,7 @@ void Renderer::renderPlanet(Body& body,
float discSizeInPixels = body.getRadius() /
(max(nearPlaneDistance, altitude) * pixelSize);
- float maxDiscSize = (starStyle == StarStyle::ScaledDiscStars) ? MaxScaledDiscStarSize : 1.0f;
+ constexpr float maxDiscSize = 1.0f;
if (discSizeInPixels >= maxDiscSize && body.hasVisibleGeometry())
{
auto bodyFeaturesManager = GetBodyFeaturesManager();
@@ -2776,7 +2608,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);
@@ -2847,11 +2679,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.
@@ -2864,12 +2696,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
}
}
}
@@ -2891,7 +2725,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;
@@ -2905,30 +2739,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,
@@ -2936,6 +2753,7 @@ void Renderer::renderStar(const Star& star,
rp, LightingState(), m);
}
+#if 0
renderObjectAsPoint(pos,
star.getRadius(),
appMag,
@@ -2943,6 +2761,7 @@ void Renderer::renderStar(const Star& star,
color,
star.hasCorona(), true,
m);
+#endif
}
@@ -3066,29 +2885,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();
@@ -3128,10 +2924,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;
@@ -3286,17 +3082,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))
@@ -3306,13 +3102,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);
@@ -3349,21 +3145,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)
@@ -3700,20 +3496,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 == StarStyle::PointStars && isMSAAEnabled());
- if (toggleAA)
- disableMSAA();
-#endif
-
Vector3d obsPos = observer.getPosition().toLy();
- PointStarRenderer starRenderer;
+ StarRenderer starRenderer;
starRenderer.renderer = this;
starRenderer.starDB = &starDB;
@@ -3721,34 +3510,25 @@ void Renderer::renderPointStars(const StarDatabase& starDB,
starRenderer.obsPos = obsPos;
starRenderer.viewNormal = getCameraOrientationf().conjugate() * -Vector3f::UnitZ();
starRenderer.renderList = &renderList;
- starRenderer.starVertexBuffer = pointStarVertexBuffer.get();
- starRenderer.glareVertexBuffer = glareVertexBuffer.get();
+ starRenderer.starVertexBuffer = starVertexBuffer.get();
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;
m_gaussianDiscTex->bind();
starRenderer.starVertexBuffer->setTexture(m_gaussianDiscTex.get());
starRenderer.starVertexBuffer->setPointScale(screenDpi / 96.0f);
- starRenderer.glareVertexBuffer->setTexture(m_gaussianGlareTex.get());
- starRenderer.glareVertexBuffer->setPointScale(screenDpi / 96.0f);
- PointStarVertexBuffer::enable();
- starRenderer.glareVertexBuffer->startSprites();
- if (starStyle == StarStyle::PointStars)
- starRenderer.starVertexBuffer->startBasicPoints();
- else
- starRenderer.starVertexBuffer->startSprites();
+ StarVertexBuffer::enable();
+ starRenderer.starVertexBuffer->startSprites();
Renderer::PipelineState ps;
ps.blending = true;
@@ -3760,21 +3540,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;
@@ -3804,16 +3578,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);
@@ -3826,7 +3598,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();
@@ -4219,19 +3991,6 @@ void Renderer::markersToAnnotations(const celestia::MarkerList& markers,
}
-void Renderer::setStarStyle(StarStyle style)
-{
- starStyle = style;
- markSettingsChanged();
-}
-
-
-StarStyle Renderer::getStarStyle() const
-{
- return starStyle;
-}
-
-
void Renderer::loadTextures(Body* body)
{
Surface& surface = body->getSurface();
@@ -4894,9 +4653,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)
@@ -4904,9 +4662,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)
@@ -4922,10 +4679,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;
@@ -4937,8 +4693,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);
}
}
@@ -4961,7 +4716,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.
@@ -5091,7 +4846,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;
}
@@ -5102,9 +4857,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;
@@ -5236,17 +4991,11 @@ Renderer::renderSolarSystemObjects(const Observer &observer,
ps.depthTest = true;
setPipelineState(ps);
- PointStarVertexBuffer::enable();
- glareVertexBuffer->startSprites();
- glareVertexBuffer->render();
- glareVertexBuffer->finish();
- if (starStyle == 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 bb9d68324e..b96117da85 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
@@ -39,7 +39,7 @@ class FrameTree;
class LODSphereMesh;
class ReferenceMark;
class CurvePlot;
-class PointStarVertexBuffer;
+class StarVertexBuffer;
class Observer;
class Surface;
class TextureFont;
@@ -81,9 +81,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
};
@@ -140,16 +140,13 @@ 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;
@@ -267,8 +264,6 @@ class Renderer
void buildProjectionMatrix(Eigen::Matrix4f &mat, float nearZ, float farZ, float zoom) const;
- void setStarStyle(StarStyle);
- StarStyle getStarStyle() const;
void setResolution(TextureResolution resolution);
TextureResolution getResolution() const;
void enableSelectionPointer();
@@ -384,12 +379,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
@@ -401,12 +399,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,
@@ -488,22 +486,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);
@@ -568,9 +550,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,
@@ -595,9 +576,7 @@ class Renderer
float fov{ celestia::engine::standardFOV };
double cosViewConeAngle{ 0.0 };
int screenDpi{ 96 };
- float corrFac{ 1.12f };
float pixelSize{ 1.0f };
- float faintestAutoMag45deg{ 8.0f };
std::vector> fonts{FontCount, nullptr};
std::shared_ptr projectionMode;
@@ -610,22 +589,16 @@ class Renderer
BodyClassification orbitMask{ BodyClassification::Planet | BodyClassification::Moon | BodyClassification::Stellar };
float ambientLightLevel{ 0.1f };
float tintSaturation{ 0.5f };
- float brightnessBias{ 0.0f };
- float brightnessScale{ 1.0f };
- float faintestMag{ 0.0f };
- float faintestPlanetMag{ 0.0f };
- float saturationMagNight{ 1.0f };
- float saturationMag{ 1.0f };
- StarStyle starStyle{ StarStyle::FuzzyPointStars };
+ 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() };
- std::unique_ptr pointStarVertexBuffer;
- std::unique_ptr glareVertexBuffer;
+ std::unique_ptr starVertexBuffer;
std::vector renderList;
std::vector secondaryIlluminators;
std::vector depthPartitions;
@@ -671,7 +644,7 @@ class Renderer
float minFeatureSize{ 20.0f };
std::uint64_t locationFilter{ ~UINT64_C(0) };
- ColorTemperatureTable starColors{ ColorTableType::Blackbody_D65 };
+ ColorTemperatureTable starColors{ ColorTableType::SunWhite };
ColorTemperatureTable tintColors{ ColorTableType::SunWhite };
Selection highlightObject;
@@ -710,7 +683,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;
@@ -776,7 +748,7 @@ class Renderer
static Color SelectionCursorColor;
friend class celestia::render::AtmosphereRenderer;
- friend class PointStarRenderer;
+ friend class StarRenderer;
};
diff --git a/src/celengine/renderflags.h b/src/celengine/renderflags.h
index bad35029b1..8f31699ef1 100644
--- a/src/celengine/renderflags.h
+++ b/src/celengine/renderflags.h
@@ -47,11 +47,10 @@ enum class RenderFlags : std::uint64_t
ShowAtmospheres = 0x0000000000000100,
ShowSmoothLines = 0x0000000000000200,
ShowEclipseShadows = 0x0000000000000400,
- // the next one is unused in 1.7, kept for compatibility with 1.6
- ShowStarsAsPoints = 0x0000000000000800,
+ // ShowStarsAsPoints = 0x0000000000000800, // removed
ShowRingShadows = 0x0000000000001000,
ShowBoundaries = 0x0000000000002000,
- ShowAutoMag = 0x0000000000004000,
+ // ShowAutoMag = 0x0000000000004000, // removed
ShowCometTails = 0x0000000000008000,
ShowMarkers = 0x0000000000010000,
ShowPartialTrajectories = 0x0000000000020000,
@@ -95,18 +94,9 @@ enum class RenderFlags : std::uint64_t
ShowRingShadows |
ShowCloudShadows |
ShowCometTails |
- ShowAutoMag |
ShowPlanetRings |
ShowFadingOrbits |
ShowSmoothLines,
};
ENUM_CLASS_BITWISE_OPS(RenderFlags);
-
-enum class StarStyle : int
-{
- FuzzyPointStars = 0,
- PointStars = 1,
- ScaledDiscStars = 2,
- StarStyleCount,
-};
diff --git a/src/celengine/renderinfo.h b/src/celengine/renderinfo.h
index 02de3a5bb1..1e5bcebf93 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
@@ -18,12 +19,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() };
@@ -33,7 +35,7 @@ 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 };
};
diff --git a/src/celengine/renderlistentry.h b/src/celengine/renderlistentry.h
index 336b6e505b..49909230a2 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 dcd004d0ad..2317eb0035 100644
--- a/src/celengine/shadermanager.cpp
+++ b/src/celengine/shadermanager.cpp
@@ -1747,6 +1747,12 @@ 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);
@@ -1973,7 +1979,6 @@ 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);
diff --git a/src/celengine/shadermanager.h b/src/celengine/shadermanager.h
index 9d403ec7d7..ee689743e2 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
@@ -65,6 +66,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 c4a3de2452..a539f42df1 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.
@@ -49,7 +50,7 @@ void Simulation::render(Renderer& renderer)
{
renderer.render(*activeObserver,
*universe,
- faintestVisible,
+ exposure,
selection);
}
@@ -58,7 +59,7 @@ void Simulation::render(Renderer& renderer, Observer& observer)
{
renderer.render(observer,
*universe,
- faintestVisible,
+ exposure,
selection);
}
@@ -152,7 +153,7 @@ Selection Simulation::pickObject(const Eigen::Vector3f& pickRay,
activeObserver->getOrientationf().conjugate() * pickRay,
activeObserver->getTime(),
renderFlags,
- faintestVisible,
+ exposure,
tolerance);
}
@@ -527,15 +528,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 4792f7c685..ff2a213c63 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 59b06fc9be..164441734a 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
@@ -1216,6 +1216,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 58a9b88238..aedc6b94ab 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 5c263823aa..f91587d68f 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 a917679bd0..4ce3c73705 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 8deb5c9736..6d99126899 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 80f07932d2..2db98e420d 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 057a585c7c..ace37cd9a0 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;
@@ -32,12 +32,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;
@@ -84,46 +84,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 (util::is_set(labelMode, RenderLabels::StarLabels) && 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 (util::is_set(labelMode, RenderLabels::StarLabels) && 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);
+ }
}
}
}
@@ -136,16 +127,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 44b649c784..99fdbad79e 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 0b6dca36a6..fee6bf5682 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 5123a3368b..9c4dedd501 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 b1744ce016..3573365497 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.
@@ -783,7 +783,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.
@@ -1042,7 +1042,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 9bdbfe51c9..b6df191d3d 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 ff648ec0de..f8c9d6d260 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
@@ -184,6 +184,23 @@ float ComputeRotationCoarseness(const Simulation& sim)
return coarseness;
}
+void
+AdjustExposure(Simulation *sim, CelestiaCore *core, const std::locale &loc, float sign)
+{
+ float exposure = sim->getExposure();
+ float delta = sign < 0.0f
+ ? exposure < 1.0001f ? 0.1f : 1.0f
+ : exposure > 0.9999f ? 1.0f : 0.1f;
+ exposure += sign * delta;
+
+ if (std::abs(exposure - 1.0f) < 0.0001f)
+ exposure = 1.0f;
+ exposure = std::clamp(exposure, 0.1f, 15.0f);
+ sim->setExposure(exposure);
+ auto buf = fmt::format(loc, _("Exposure time: {:.2f}"), exposure);
+ core->flash(buf);
+}
+
} // anonymous namespace
CelestiaCore::CelestiaCore() :
@@ -507,10 +524,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 (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- setFaintestAutoMag();
}
}
}
@@ -1037,27 +1050,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
singleView();
break;
- case '\023': // Ctrl+S
- renderer->setStarStyle(static_cast((static_cast(renderer->getStarStyle()) + 1)
- % static_cast(StarStyle::StarStyleCount)));
- switch (renderer->getStarStyle())
- {
- case StarStyle::FuzzyPointStars:
- flash(_("Star style: fuzzy points"));
- break;
- case StarStyle::PointStars:
- flash(_("Star style: points"));
- break;
- case StarStyle::ScaledDiscStars:
- flash(_("Star style: scaled discs"));
- break;
- default:
- break;
- }
-
- notifyWatchers(RenderFlagsChanged);
- break;
-
case '\024': // Ctrl+T
renderer->setRenderFlags(renderer->getRenderFlags() ^ RenderFlags::ShowCometTails);
if (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowCometTails))
@@ -1087,21 +1079,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
notifyWatchers(RenderFlagsChanged);
break;
- case '\031': // Ctrl+Y
- renderer->setRenderFlags(renderer->getRenderFlags() ^ RenderFlags::ShowAutoMag);
- if (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- flash(_("Auto-magnitude enabled"));
- setFaintestAutoMag();
- }
- else
- {
- flash(_("Auto-magnitude disabled"));
- }
- notifyWatchers(RenderFlagsChanged);
- break;
-
-
case '\033': // Escape
cancelScript();
addToHistory();
@@ -1182,7 +1159,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);
@@ -1199,12 +1176,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;
@@ -1532,23 +1503,11 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
break;
case '[':
- if (!util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- if (sim->getFaintestVisible() > 1.0f)
- {
- setFaintest(sim->getFaintestVisible() - 0.2f);
- notifyWatchers(FaintestChanged);
- auto buf = fmt::format(loc, fmt::runtime(_("Magnitude limit: {:.2f}")), sim->getFaintestVisible());
- flash(buf);
- }
- }
- else if (renderer->getFaintestAM45deg() > 6.0f)
- {
- renderer->setFaintestAM45deg(renderer->getFaintestAM45deg() - 0.1f);
- setFaintestAutoMag();
- auto buf = fmt::format(loc, fmt::runtime(_("Auto magnitude limit at 45 degrees: {:.2f}")), renderer->getFaintestAM45deg());
- flash(buf);
- }
+ AdjustExposure(sim.get(), this, loc, -1.0f);
+ break;
+
+ case ']':
+ AdjustExposure(sim.get(), this, loc, +1.0f);
break;
case '\\':
@@ -1556,26 +1515,6 @@ void CelestiaCore::charEntered(const char *c_p, int modifiers)
sim->setTimeScale(1.0f);
break;
- case ']':
- if (!util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- if (sim->getFaintestVisible() < 15.0f)
- {
- setFaintest(sim->getFaintestVisible() + 0.2f);
- notifyWatchers(FaintestChanged);
- auto buf = fmt::format(loc, fmt::runtime(_("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, fmt::runtime(_("Auto magnitude limit at 45 degrees: {:.2f}")), renderer->getFaintestAM45deg());
- flash(buf);
- }
- break;
-
case '`':
hud->hudSettings().showFPSCounter = !hud->hudSettings().showFPSCounter;
break;
@@ -2317,13 +2256,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 (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- setFaintestAutoMag();
- auto buf = fmt::format(loc, fmt::runtime(_("Magnitude limit: {:.2f}")), sim->getFaintestVisible());
- flash(buf);
- }
}
void CelestiaCore::initLocale()
@@ -2577,10 +2509,7 @@ bool CelestiaCore::initSimulation(const std::filesystem::path& configFileName,
if (!config->paths.asterismsFile.empty())
loadAsterismsFile(config->paths.asterismsFile);
- if (!util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- 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));
@@ -2619,8 +2548,7 @@ bool CelestiaCore::initRenderer([[maybe_unused]] bool useMesaPackInvert)
{
renderer->setRenderFlags(RenderFlags::ShowStars |
RenderFlags::ShowPlanets |
- RenderFlags::ShowAtmospheres |
- RenderFlags::ShowAutoMag);
+ RenderFlags::ShowAtmospheres);
Renderer::DetailOptions detailOptions;
detailOptions.orbitPathSamplePoints = config->renderDetails.orbitPathSamplePoints;
@@ -2647,12 +2575,6 @@ bool CelestiaCore::initRenderer([[maybe_unused]] bool useMesaPackInvert)
return false;
}
- if (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- renderer->setFaintestAM45deg(renderer->getFaintestAM45deg());
- setFaintestAutoMag();
- }
-
auto mainFont = config->fonts.mainFont.empty()
? LoadFontHelper(renderer, "DejaVuSans.ttf,12")
: LoadFontHelper(renderer, config->fonts.mainFont);
@@ -2696,23 +2618,6 @@ 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()
-{
- float faintestMag;
- renderer->autoMag(faintestMag, sim->getActiveObserver()->getZoom());
- sim->setFaintestVisible(faintestMag);
-}
-
void CelestiaCore::fatalError(const string& msg, bool visual)
{
if (alerter == nullptr)
diff --git a/src/celestia/celestiacore.h b/src/celestia/celestiacore.h
index 93adaff225..f0caf23115 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
@@ -169,7 +169,7 @@ class CelestiaCore // : public Watchable
VerbosityLevelChanged = 0x0004,
TimeZoneChanged = 0x0008,
AmbientLightChanged = 0x0010,
- FaintestChanged = 0x0020,
+ // removed notification = 0x0020,
HistoryChanged = 0x0040,
TextEnterModeChanged = 0x0080,
GalaxyLightGainChanged = 0x0100,
@@ -288,9 +288,6 @@ class CelestiaCore // : public Watchable
void addWatcher(CelestiaWatcher*);
void removeWatcher(CelestiaWatcher*);
- void setFaintest(float);
- void setFaintestAutoMag();
-
std::vector getObservers() const;
celestia::View* getViewByObserver(const Observer*) const;
void splitView(celestia::View::Type type, celestia::View* av = nullptr, float splitPos = 0.5f);
diff --git a/src/celestia/configfile.cpp b/src/celestia/configfile.cpp
index 8745162d64..d38ba73939 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
@@ -191,7 +191,7 @@ applyRenderDetails(CelestiaConfig::RenderDetails& renderDetails, const Associati
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.renderAsterismsFadeStartDist, hash, "RenderAsterismsFadeStartDist"sv);
applyNumber(renderDetails.renderAsterismsFadeEndDist, hash, "RenderAsterismsFadeEndDist"sv);
diff --git a/src/celestia/configfile.h b/src/celestia/configfile.h
index 025de1429f..4e97f4d06a 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
@@ -73,7 +74,7 @@ struct CelestiaConfig
double orbitWindowEnd{ 0.5 };
double orbitPeriodsShown{ 1.0 };
double linearFadeFraction{ 0.0 };
- float faintestVisible{ 6.0f };
+ float exposure{ 1.0f };
float renderAsterismsFadeStartDist{ 600.0f };
float renderAsterismsFadeEndDist{ 6.52e4f };
diff --git a/src/celestia/qt/preferences.ui b/src/celestia/qt/preferences.ui
index 8f460517a0..2226dc6482 100644
--- a/src/celestia/qt/preferences.ui
+++ b/src/celestia/qt/preferences.ui
@@ -1038,72 +1038,6 @@
- -
-
-
- Star style
-
-
-
-
-
-
- Points
-
-
-
- -
-
-
- Fuzzy points
-
-
-
- -
-
-
- Scaled discs
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 12
-
-
-
-
- -
-
-
- Auto-magnitude
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
@@ -1121,7 +1055,7 @@
20
- 40
+ 30
diff --git a/src/celestia/qt/qtappwin.cpp b/src/celestia/qt/qtappwin.cpp
index 25cf0c7039..89ccd96523 100644
--- a/src/celestia/qt/qtappwin.cpp
+++ b/src/celestia/qt/qtappwin.cpp
@@ -1,7 +1,6 @@
// qtappwin.cpp
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Main window for Celestia Qt front-end.
//
@@ -595,7 +594,6 @@ CelestiaAppWindow::writeSettings()
settings.setValue("LabelMode", static_cast(renderer->getLabelMode()));
settings.setValue("AmbientLightLevel", renderer->getAmbientLightLevel());
settings.setValue("TintSaturation", renderer->getTintSaturation());
- settings.setValue("StarStyle", static_cast(renderer->getStarStyle()));
settings.setValue("TextureResolution", static_cast(renderer->getResolution()));
settings.setValue("StarsColor", static_cast(renderer->getStarColorTable()));
@@ -607,7 +605,7 @@ CelestiaAppWindow::writeSettings()
settings.setValue("LocationFilter", static_cast(observer->getLocationFilter()));
settings.beginGroup("Preferences");
- settings.setValue("VisualMagnitude", simulation->getFaintestVisible());
+ settings.setValue("Exposure", simulation->getExposure());
settings.setValue("SyncTime", simulation->getSyncTime());
settings.setValue("FramesVisible", m_appCore->getFramesVisible());
settings.setValue("ActiveFrameVisible", m_appCore->getActiveFrameVisible());
@@ -1478,14 +1476,8 @@ CelestiaAppWindow::createMenus()
displayMenu->addSeparator();
- displayMenu->addAction(actions->increaseLimitingMagAction);
- displayMenu->addAction(actions->decreaseLimitingMagAction);
- displayMenu->addAction(actions->autoMagAction);
-
- QMenu* starStyleMenu = displayMenu->addMenu(_("Star St&yle"));
- starStyleMenu->addAction(actions->pointStarAction);
- starStyleMenu->addAction(actions->fuzzyPointStarAction);
- starStyleMenu->addAction(actions->scaledDiscStarAction);
+ displayMenu->addAction(actions->increaseExposureAction);
+ displayMenu->addAction(actions->decreaseExposureAction);
displayMenu->addSeparator();
diff --git a/src/celestia/qt/qtappwin.h b/src/celestia/qt/qtappwin.h
index 17d6296980..3a228fc9f2 100644
--- a/src/celestia/qt/qtappwin.h
+++ b/src/celestia/qt/qtappwin.h
@@ -1,7 +1,6 @@
// qtappwin.h
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Main window for Celestia Qt front-end.
//
diff --git a/src/celestia/qt/qtcelestiaactions.cpp b/src/celestia/qt/qtcelestiaactions.cpp
index 9b9f3f7b17..b9a63c7345 100644
--- a/src/celestia/qt/qtcelestiaactions.cpp
+++ b/src/celestia/qt/qtcelestiaactions.cpp
@@ -1,7 +1,6 @@
// qtcelestiaactions.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Collection of actions used in the Qt4 UI.
//
@@ -247,31 +246,14 @@ CelestiaActions::CelestiaActions(QObject* parent,
connect(mediumResAction, SIGNAL(triggered()), this, SLOT(slotSetTextureResolution()));
connect(highResAction, SIGNAL(triggered()), this, SLOT(slotSetTextureResolution()));
- autoMagAction = createCheckableAction(_("Auto Magnitude"), this, RenderFlags::ShowAutoMag);
- autoMagAction->setShortcut(QKeySequence("Ctrl+Y"));
- autoMagAction->setToolTip(_("Faintest visible magnitude based on field of view"));
- connect(autoMagAction, SIGNAL(triggered()), this, SLOT(slotToggleRenderFlag()));
-
- increaseLimitingMagAction = new QAction(_("More Stars Visible"), this);
- increaseLimitingMagAction->setData(0.1);
- increaseLimitingMagAction->setShortcut(QString("]"));
- decreaseLimitingMagAction = new QAction(_("Fewer Stars Visible"), this);
- decreaseLimitingMagAction->setData(-0.1);
- decreaseLimitingMagAction->setShortcut(QString("["));
- connect(increaseLimitingMagAction, SIGNAL(triggered()), this, SLOT(slotAdjustLimitingMagnitude()));
- connect(decreaseLimitingMagAction, SIGNAL(triggered()), this, SLOT(slotAdjustLimitingMagnitude()));
-
- pointStarAction = createCheckableAction(_("Points"), this, StarStyle::PointStars);
- fuzzyPointStarAction = createCheckableAction(_("Fuzzy Points"), this, StarStyle::FuzzyPointStars);
- scaledDiscStarAction = createCheckableAction(_("Scaled Discs"), this, StarStyle::ScaledDiscStars);
- QActionGroup *starStyleGroup = new QActionGroup(this);
- starStyleGroup->addAction(pointStarAction);
- starStyleGroup->addAction(fuzzyPointStarAction);
- starStyleGroup->addAction(scaledDiscStarAction);
- starStyleGroup->setExclusive(true);
- connect(pointStarAction, SIGNAL(triggered()), this, SLOT(slotSetStarStyle()));
- connect(fuzzyPointStarAction, SIGNAL(triggered()), this, SLOT(slotSetStarStyle()));
- connect(scaledDiscStarAction, SIGNAL(triggered()), this, SLOT(slotSetStarStyle()));
+ decreaseExposureAction = new QAction(_("Decrease Exposure Time"), this);
+ decreaseExposureAction->setData(0.5);
+ decreaseExposureAction->setShortcut(QString("["));
+ increaseExposureAction = new QAction(_("Increase Exposure Time"), this);
+ increaseExposureAction->setData(2.0);
+ increaseExposureAction->setShortcut(QString("]"));
+ connect(increaseExposureAction, SIGNAL(triggered()), this, SLOT(slotAdjustExposure()));
+ connect(decreaseExposureAction, SIGNAL(triggered()), this, SLOT(slotAdjustExposure()));
lightTimeDelayAction = new QAction(_("Light Time Delay"), this);
lightTimeDelayAction->setCheckable(true);
@@ -295,7 +277,6 @@ CelestiaActions::syncWithRenderer(const Renderer* renderer)
RenderLabels labelMode = renderer->getLabelMode();
BodyClassification orbitMask = renderer->getOrbitMask();
TextureResolution textureRes = renderer->getResolution();
- StarStyle starStyle = renderer->getStarStyle();
equatorialGridAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowCelestialSphere));
galacticGridAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowGalacticGrid));
@@ -336,11 +317,6 @@ CelestiaActions::syncWithRenderer(const Renderer* renderer)
mediumResAction->setChecked(textureRes == TextureResolution::medres);
highResAction->setChecked(textureRes == TextureResolution::hires);
- // Star style
- pointStarAction->setChecked(starStyle == StarStyle::PointStars);
- fuzzyPointStarAction->setChecked(starStyle == StarStyle::FuzzyPointStars);
- scaledDiscStarAction->setChecked(starStyle == StarStyle::ScaledDiscStars);
-
// Features
cloudsAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowCloudMaps));
cometTailsAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowCometTails));
@@ -357,9 +333,6 @@ CelestiaActions::syncWithRenderer(const Renderer* renderer)
ringShadowsAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowRingShadows));
eclipseShadowsAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowEclipseShadows));
cloudShadowsAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowCloudShadows));
-
- // Star visibility
- autoMagAction->setChecked(util::is_set(renderFlags, RenderFlags::ShowAutoMag));
}
void
@@ -407,17 +380,6 @@ CelestiaActions::slotToggleOrbit()
}
}
-void
-CelestiaActions::slotSetStarStyle()
-{
- QAction* act = qobject_cast(sender());
- if (act != nullptr)
- {
- auto starStyle = getFromVariant(act->data());
- appCore->getRenderer()->setStarStyle(starStyle);
- }
-}
-
void
CelestiaActions::slotSetTextureResolution()
{
@@ -430,49 +392,16 @@ CelestiaActions::slotSetTextureResolution()
}
void
-CelestiaActions::slotAdjustLimitingMagnitude()
+CelestiaActions::slotAdjustExposure()
{
- QAction* act = qobject_cast(sender());
- if (act != nullptr)
- {
- // HACK!HACK!HACK!
- // Consider removal relevant entries from menus.
- // If search console is open then pass keys to it.
- if (appCore->getTextEnterMode() != celestia::Hud::TextEnterMode::Normal)
- {
- appCore->charEntered(act->shortcut().toString().toUtf8().data());
- return;
- }
-
- Renderer* renderer = appCore->getRenderer();
- float change = (float) act->data().toDouble();
-
- QString notification;
- if (util::is_set(renderer->getRenderFlags(), RenderFlags::ShowAutoMag))
- {
- float newLimitingMag = qBound(6.0f, renderer->getFaintestAM45deg() + change, 12.0f);
- renderer->setFaintestAM45deg(newLimitingMag);
- appCore->setFaintestAutoMag();
-
- notification = QString(_("Auto magnitude limit at 45 degrees: %L1")).arg(newLimitingMag, 0, 'f', 2);
- }
- else
- {
- float newLimitingMag = qBound(1.0f, appCore->getSimulation()->getFaintestVisible() + change * 2, 15.0f);
- appCore->setFaintest(newLimitingMag);
-
- notification = QString(_("Magnitude limit: %L1")).arg(newLimitingMag, 0, 'f', 2);
- }
-
- appCore->flash(notification.toUtf8().data());
- }
+ if (auto* act = qobject_cast(sender()); act != nullptr)
+ appCore->charEntered(act->shortcut().toString().toUtf8().data());
}
void
CelestiaActions::slotSetLightTimeDelay()
{
- // TODO: CelestiaCore class should offer an API for enabling/disabling light
- // time delay.
+ // TODO: CelestiaCore class should offer an API for enabling/disabling light time delay.
appCore->charEntered('-');
}
diff --git a/src/celestia/qt/qtcelestiaactions.h b/src/celestia/qt/qtcelestiaactions.h
index 5a2f266991..b9c469c7c3 100644
--- a/src/celestia/qt/qtcelestiaactions.h
+++ b/src/celestia/qt/qtcelestiaactions.h
@@ -1,7 +1,6 @@
// qtcelestiaactions.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Collection of actions used in the Qt4 UI.
//
@@ -95,13 +94,8 @@ Q_OBJECT
QAction* mediumResAction{ nullptr };
QAction* highResAction{ nullptr };
- QAction* pointStarAction{ nullptr };
- QAction* fuzzyPointStarAction{ nullptr };
- QAction* scaledDiscStarAction{ nullptr };
-
- QAction* autoMagAction{ nullptr };
- QAction* increaseLimitingMagAction{ nullptr };
- QAction* decreaseLimitingMagAction{ nullptr };
+ QAction* increaseExposureAction{ nullptr };
+ QAction* decreaseExposureAction{ nullptr };
QAction* toggleVSyncAction{ nullptr };
@@ -109,9 +103,8 @@ private slots:
void slotToggleRenderFlag();
void slotToggleLabel();
void slotToggleOrbit();
- void slotSetStarStyle();
void slotSetTextureResolution();
- void slotAdjustLimitingMagnitude();
+ void slotAdjustExposure();
void slotSetLightTimeDelay();
private:
diff --git a/src/celestia/qt/qtcelestialbrowser.cpp b/src/celestia/qt/qtcelestialbrowser.cpp
index 2300aeb9e8..74d9611207 100644
--- a/src/celestia/qt/qtcelestialbrowser.cpp
+++ b/src/celestia/qt/qtcelestialbrowser.cpp
@@ -1,7 +1,6 @@
// qtcelestialbrowser.cpp
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Star browser widget for Qt4 front-end.
//
diff --git a/src/celestia/qt/qtcelestialbrowser.h b/src/celestia/qt/qtcelestialbrowser.h
index 5d9774b5c3..5d96e73b6e 100644
--- a/src/celestia/qt/qtcelestialbrowser.h
+++ b/src/celestia/qt/qtcelestialbrowser.h
@@ -1,7 +1,6 @@
// qtcelestialbrowser.h
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Dockable celestial browser widget.
//
diff --git a/src/celestia/qt/qtcolorswatchwidget.cpp b/src/celestia/qt/qtcolorswatchwidget.cpp
index bbcd31b42e..d16cdb24b5 100644
--- a/src/celestia/qt/qtcolorswatchwidget.cpp
+++ b/src/celestia/qt/qtcolorswatchwidget.cpp
@@ -1,7 +1,6 @@
// qtcolorswatchwidget.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Color swatch widget for Qt4 front-end.
//
diff --git a/src/celestia/qt/qtcolorswatchwidget.h b/src/celestia/qt/qtcolorswatchwidget.h
index 6b96fbe8e7..ff68ef0053 100644
--- a/src/celestia/qt/qtcolorswatchwidget.h
+++ b/src/celestia/qt/qtcolorswatchwidget.h
@@ -1,7 +1,6 @@
// qtcolorswatchwidget.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Color swatch widget for Qt4 front-end.
//
diff --git a/src/celestia/qt/qtdeepskybrowser.cpp b/src/celestia/qt/qtdeepskybrowser.cpp
index 4cb0bf0501..0b8ac751c9 100644
--- a/src/celestia/qt/qtdeepskybrowser.cpp
+++ b/src/celestia/qt/qtdeepskybrowser.cpp
@@ -1,7 +1,6 @@
// qtdeepskybrowser.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Deep sky browser widget for Qt front-end
//
diff --git a/src/celestia/qt/qtdeepskybrowser.h b/src/celestia/qt/qtdeepskybrowser.h
index 56dc731bef..e6371614df 100644
--- a/src/celestia/qt/qtdeepskybrowser.h
+++ b/src/celestia/qt/qtdeepskybrowser.h
@@ -1,7 +1,6 @@
// qtdeepskybrowser.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Deep sky browser widget for Qt4 front-end.
//
diff --git a/src/celestia/qt/qteventfinder.cpp b/src/celestia/qt/qteventfinder.cpp
index 99c0689b6b..e6126ce01b 100644
--- a/src/celestia/qt/qteventfinder.cpp
+++ b/src/celestia/qt/qteventfinder.cpp
@@ -1,7 +1,6 @@
// qteventfinder.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Qt4 interface for the celestial event finder.
//
diff --git a/src/celestia/qt/qteventfinder.h b/src/celestia/qt/qteventfinder.h
index 1c418d4f3d..821d927fb1 100644
--- a/src/celestia/qt/qteventfinder.h
+++ b/src/celestia/qt/qteventfinder.h
@@ -1,7 +1,6 @@
// qteventfinder.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Qt4 interface for the celestial event finder.
//
diff --git a/src/celestia/qt/qtglwidget.cpp b/src/celestia/qt/qtglwidget.cpp
index 605f7011f8..284d536ab3 100644
--- a/src/celestia/qt/qtglwidget.cpp
+++ b/src/celestia/qt/qtglwidget.cpp
@@ -53,8 +53,7 @@ constexpr auto DEFAULT_LABEL_MODE = static_cast(RenderLabels::LocationLabe
constexpr float DEFAULT_AMBIENT_LIGHT_LEVEL = 0.0f; // None
constexpr float DEFAULT_TINT_SATURATION = 0.5f;
constexpr int DEFAULT_STARS_COLOR = static_cast(ColorTableType::SunWhite);
-constexpr float DEFAULT_VISUAL_MAGNITUDE = 8.0f;
-constexpr auto DEFAULT_STAR_STYLE = static_cast(StarStyle::FuzzyPointStars);
+constexpr float DEFAULT_EXPOSURE = 1.0f;
constexpr auto DEFAULT_TEXTURE_RESOLUTION = static_cast(TextureResolution::medres);
std::pair
@@ -143,10 +142,7 @@ CelestiaGlWidget::initializeGL()
appRenderer->setLabelMode(static_cast(settings.value("LabelMode", DEFAULT_LABEL_MODE).toUInt()));
appRenderer->setAmbientLightLevel(static_cast(settings.value("AmbientLightLevel", DEFAULT_AMBIENT_LIGHT_LEVEL).toDouble()));
appRenderer->setTintSaturation(static_cast(settings.value("TintSaturation", DEFAULT_TINT_SATURATION).toDouble()));
- auto starStyle = settings.value("StarStyle", DEFAULT_STAR_STYLE).toInt();
- if (starStyle < 0 || starStyle >= static_cast(StarStyle::StarStyleCount))
- starStyle = DEFAULT_STAR_STYLE;
- appRenderer->setStarStyle(static_cast(starStyle));
+
auto textureResolution = settings.value("TextureResolution", DEFAULT_TEXTURE_RESOLUTION).toInt();
if (textureResolution < 0 || textureResolution > static_cast(TextureResolution::hires))
textureResolution = DEFAULT_TEXTURE_RESOLUTION;
@@ -159,7 +155,7 @@ CelestiaGlWidget::initializeGL()
appCore->getSimulation()->getActiveObserver()->setLocationFilter(settings.value("LocationFilter", static_cast(Observer::DefaultLocationFilter)).toULongLong());
- appCore->getSimulation()->setFaintestVisible((float) settings.value("Preferences/VisualMagnitude", DEFAULT_VISUAL_MAGNITUDE).toDouble());
+ appCore->getSimulation()->setExposure((float) settings.value("Exposure", DEFAULT_EXPOSURE).toDouble());
appRenderer->setSolarSystemMaxDistance(appCore->getConfig()->renderDetails.SolarSystemMaxDistance);
appRenderer->setShadowMapSize(appCore->getConfig()->renderDetails.ShadowMapSize);
diff --git a/src/celestia/qt/qtglwidget.h b/src/celestia/qt/qtglwidget.h
index dc32f4dbae..884c739892 100644
--- a/src/celestia/qt/qtglwidget.h
+++ b/src/celestia/qt/qtglwidget.h
@@ -1,7 +1,6 @@
// qtpreferencesdialog.h
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Preferences dialog for Celestia's Qt front-end. Based on
// kdeglwidget.h by Christophe Teyssier.
diff --git a/src/celestia/qt/qtinfopanel.cpp b/src/celestia/qt/qtinfopanel.cpp
index 3d240c05ad..320f3feecb 100644
--- a/src/celestia/qt/qtinfopanel.cpp
+++ b/src/celestia/qt/qtinfopanel.cpp
@@ -1,7 +1,6 @@
// qtinfopanel.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Information panel for Qt4 UI.
//
diff --git a/src/celestia/qt/qtinfopanel.h b/src/celestia/qt/qtinfopanel.h
index 085867dd8c..6cdd716389 100644
--- a/src/celestia/qt/qtinfopanel.h
+++ b/src/celestia/qt/qtinfopanel.h
@@ -1,7 +1,6 @@
// qtcelestiaactions.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Dockable information panel for Qt4 UI.
//
diff --git a/src/celestia/qt/qtpreferencesdialog.cpp b/src/celestia/qt/qtpreferencesdialog.cpp
index 491043d215..017a7f42c9 100644
--- a/src/celestia/qt/qtpreferencesdialog.cpp
+++ b/src/celestia/qt/qtpreferencesdialog.cpp
@@ -1,7 +1,6 @@
// qtpreferencesdialog.cpp
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Preferences dialog for Celestia's Qt front-end. Based on
// kdepreferencesdialog.h by Christophe Teyssier.
@@ -240,36 +239,13 @@ PreferencesDialog::PreferencesDialog(QWidget* parent, CelestiaCore* core) :
auto tint = static_cast(renderer->getTintSaturation() * 100.0f);
ui.tintSaturationSlider->setValue(tint);
- ui.tintSaturationSlider->setEnabled(colors != ColorTableType::Enhanced);
ui.tintSaturationSpinBox->setValue(tint);
- ui.tintSaturationSpinBox->setEnabled(colors != ColorTableType::Enhanced);
-
- switch (renderer->getStarStyle())
- {
- case StarStyle::PointStars:
- ui.pointStarsButton->setChecked(true);
- break;
-
- case StarStyle::FuzzyPointStars:
- ui.fuzzyPointStarsButton->setChecked(true);
- break;
-
- case StarStyle::ScaledDiscStars:
- ui.scaledDiscsButton->setChecked(true);
-
- default:
- assert(0);
- break;
- }
ui.starColorBox->addItem(_("Blackbody D65"), static_cast(ColorTableType::Blackbody_D65));
ui.starColorBox->addItem(_("Blackbody (Solar Whitepoint)"), static_cast(ColorTableType::SunWhite));
ui.starColorBox->addItem(_("Blackbody (Vega Whitepoint)"), static_cast(ColorTableType::VegaWhite));
- ui.starColorBox->addItem(_("Classic colors"), static_cast(ColorTableType::Enhanced));
SetComboBoxValue(ui.starColorBox, static_cast(colors));
- ui.autoMagnitudeCheck->setChecked(util::is_set(renderFlags, ::RenderFlags::ShowAutoMag));
-
#ifndef _WIN32
ui.dateFormatBox->addItem(_("Local format"), astro::Date::Locale);
#endif
@@ -803,44 +779,6 @@ PreferencesDialog::on_tintSaturationSpinBox_valueChanged(int value)
ui.tintSaturationSlider->blockSignals(savedBlockState);
}
-// Star style
-
-void
-PreferencesDialog::on_pointStarsButton_clicked() const
-{
- if (ui.pointStarsButton->isChecked())
- {
- Renderer* renderer = appCore->getRenderer();
- renderer->setStarStyle(StarStyle::PointStars);
- }
-}
-
-void
-PreferencesDialog::on_scaledDiscsButton_clicked() const
-{
- if (ui.scaledDiscsButton->isChecked())
- {
- Renderer* renderer = appCore->getRenderer();
- renderer->setStarStyle(StarStyle::ScaledDiscStars);
- }
-}
-
-void
-PreferencesDialog::on_fuzzyPointStarsButton_clicked() const
-{
- if (ui.fuzzyPointStarsButton->isChecked())
- {
- Renderer* renderer = appCore->getRenderer();
- renderer->setStarStyle(StarStyle::FuzzyPointStars);
- }
-}
-
-void
-PreferencesDialog::on_autoMagnitudeCheck_stateChanged(int state)
-{
- setRenderFlag(appCore, ::RenderFlags::ShowAutoMag, state);
-}
-
// Star colors
void
@@ -850,9 +788,6 @@ PreferencesDialog::on_starColorBox_currentIndexChanged(int index)
QVariant itemData = ui.starColorBox->itemData(index, Qt::UserRole);
ColorTableType value = static_cast(itemData.toInt());
renderer->setStarColorTable(value);
- bool enableTintSaturation = value != ColorTableType::Enhanced;
- ui.tintSaturationSlider->setEnabled(enableTintSaturation);
- ui.tintSaturationSpinBox->setEnabled(enableTintSaturation);
}
// Time
diff --git a/src/celestia/qt/qtpreferencesdialog.h b/src/celestia/qt/qtpreferencesdialog.h
index 64aa59316a..7bf445a836 100644
--- a/src/celestia/qt/qtpreferencesdialog.h
+++ b/src/celestia/qt/qtpreferencesdialog.h
@@ -1,7 +1,6 @@
// qtpreferencesdialog.h
//
-// Copyright (C) 2007-2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2007-present, the Celestia Development Team
//
// Preferences dialog for Celestia's Qt front-end. Based on
// kdepreferencesdialog.h by Christophe Teyssier.
@@ -117,11 +116,6 @@ private slots:
void on_tintSaturationSlider_valueChanged(int value);
void on_tintSaturationSpinBox_valueChanged(int value);
- void on_pointStarsButton_clicked() const;
- void on_scaledDiscsButton_clicked() const;
- void on_fuzzyPointStarsButton_clicked() const;
- void on_autoMagnitudeCheck_stateChanged(int state);
-
void on_starColorBox_currentIndexChanged(int index);
void on_dateFormatBox_currentIndexChanged(int index);
diff --git a/src/celestia/qt/qtselectionpopup.cpp b/src/celestia/qt/qtselectionpopup.cpp
index e1a4d84a3c..1e43aeccf8 100644
--- a/src/celestia/qt/qtselectionpopup.cpp
+++ b/src/celestia/qt/qtselectionpopup.cpp
@@ -1,7 +1,6 @@
// qtselectionpopup.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Context menu for objects in the 3D view.
//
diff --git a/src/celestia/qt/qtselectionpopup.h b/src/celestia/qt/qtselectionpopup.h
index e67ccdcdc8..32fe0e2301 100644
--- a/src/celestia/qt/qtselectionpopup.h
+++ b/src/celestia/qt/qtselectionpopup.h
@@ -1,7 +1,6 @@
// qtselectionpopup.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Context menu for objects in the 3D view.
//
diff --git a/src/celestia/qt/qtsettimedialog.cpp b/src/celestia/qt/qtsettimedialog.cpp
index c0e4e82526..646a436311 100644
--- a/src/celestia/qt/qtsettimedialog.cpp
+++ b/src/celestia/qt/qtsettimedialog.cpp
@@ -1,7 +1,6 @@
// qtsettimedialog.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Set time/date dialog box.
//
diff --git a/src/celestia/qt/qtsettimedialog.h b/src/celestia/qt/qtsettimedialog.h
index 2be6afb776..bba6b222cd 100644
--- a/src/celestia/qt/qtsettimedialog.h
+++ b/src/celestia/qt/qtsettimedialog.h
@@ -1,7 +1,6 @@
// qtsettimedialog.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Set time/date dialog box.
//
diff --git a/src/celestia/qt/qtsolarsystembrowser.cpp b/src/celestia/qt/qtsolarsystembrowser.cpp
index b45da91136..78789c777b 100644
--- a/src/celestia/qt/qtsolarsystembrowser.cpp
+++ b/src/celestia/qt/qtsolarsystembrowser.cpp
@@ -1,7 +1,6 @@
// qtsolarsystembrowser.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Solar system browser widget for Qt4 front-end
//
diff --git a/src/celestia/qt/qtsolarsystembrowser.h b/src/celestia/qt/qtsolarsystembrowser.h
index 1e0caf5ba2..2a37043e93 100644
--- a/src/celestia/qt/qtsolarsystembrowser.h
+++ b/src/celestia/qt/qtsolarsystembrowser.h
@@ -1,7 +1,6 @@
// qtsolarsystembrowser.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Solar system browser widget for Qt4 front-end.
//
diff --git a/src/celestia/qt/qttimetoolbar.cpp b/src/celestia/qt/qttimetoolbar.cpp
index 8d2360f271..18bdd44286 100644
--- a/src/celestia/qt/qttimetoolbar.cpp
+++ b/src/celestia/qt/qttimetoolbar.cpp
@@ -1,7 +1,6 @@
// qttimetoolbar.cpp
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Time control toolbar for Qt4 front-end.
//
diff --git a/src/celestia/qt/qttimetoolbar.h b/src/celestia/qt/qttimetoolbar.h
index 90d52e318d..48e67ca9fe 100644
--- a/src/celestia/qt/qttimetoolbar.h
+++ b/src/celestia/qt/qttimetoolbar.h
@@ -1,7 +1,6 @@
// qttimetoolbar.h
//
-// Copyright (C) 2008, Celestia Development Team
-// celestia-developers@lists.sourceforge.net
+// Copyright (C) 2008-present, the Celestia Development Team
//
// Time control toolbar for Qt4 front-end.
//
diff --git a/src/celestia/qt5/data/celestia-qt5.1 b/src/celestia/qt5/data/celestia-qt5.1
index c963ed1b6b..cac88e5f61 100644
--- a/src/celestia/qt5/data/celestia-qt5.1
+++ b/src/celestia/qt5/data/celestia-qt5.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/qt6/data/celestia-qt6.1 b/src/celestia/qt6/data/celestia-qt6.1
index c963ed1b6b..cac88e5f61 100644
--- a/src/celestia/qt6/data/celestia-qt6.1
+++ b/src/celestia/qt6/data/celestia-qt6.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/sdl/data/celestia-sdl.1 b/src/celestia/sdl/data/celestia-sdl.1
index a3357e86ac..598e29f226 100644
--- a/src/celestia/sdl/data/celestia-sdl.1
+++ b/src/celestia/sdl/data/celestia-sdl.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/sdl/renderdialog.cpp b/src/celestia/sdl/renderdialog.cpp
index ae752941e6..43df3ebdeb 100644
--- a/src/celestia/sdl/renderdialog.cpp
+++ b/src/celestia/sdl/renderdialog.cpp
@@ -63,23 +63,11 @@ lightingPanel(Renderer* renderer)
void
starStylePanel(Renderer* renderer)
{
- auto starStyle = static_cast(renderer->getStarStyle());
- int starStyleNew = starStyle;
- RenderFlags rf = renderer->getRenderFlags();
- RenderFlags rfNew = rf;
auto starColors = static_cast(renderer->getStarColorTable());
int starColorsNew = starColors;
- ImGui::Text("Star style");
- ImGui::RadioButton("Points##starStylePoints", &starStyleNew, static_cast(StarStyle::PointStars));
- ImGui::RadioButton("Fuzzy points", &starStyleNew, static_cast(StarStyle::FuzzyPointStars));
- ImGui::RadioButton("Scaled discs", &starStyleNew, static_cast(StarStyle::ScaledDiscStars));
- ImGui::Separator();
- enumCheckbox("Auto-magnitude", rfNew, RenderFlags::ShowAutoMag);
-
- constexpr std::array names =
+ constexpr std::array names =
{
- "Classic colors",
"Blackbody D65",
"Blackbody (Sun white)",
"Blackbody (Vega white)",
@@ -87,10 +75,6 @@ starStylePanel(Renderer* renderer)
ImGui::Combo("Star colors", &starColorsNew, names.data(), static_cast(names.size()));
- if (starStyleNew != starStyle)
- renderer->setStarStyle(static_cast(starStyleNew));
- if (rfNew != rf)
- renderer->setRenderFlags(rfNew);
if (starColorsNew != starColors)
renderer->setStarColorTable(static_cast(starColorsNew));
}
diff --git a/src/celestia/sdl/settings.cpp b/src/celestia/sdl/settings.cpp
index 7ab7313d17..3ce1762055 100644
--- a/src/celestia/sdl/settings.cpp
+++ b/src/celestia/sdl/settings.cpp
@@ -245,9 +245,9 @@ readStarColors(Settings& settings, std::string_view value)
{
using StarCols = std::underlying_type_t;
StarCols cols;
- static_assert(ColorTableType::Enhanced < ColorTableType::VegaWhite);
+ static_assert(ColorTableType::Blackbody_D65 < ColorTableType::VegaWhite);
if (readInt(value, cols)
- && cols >= static_cast(ColorTableType::Enhanced)
+ && cols >= static_cast(ColorTableType::Blackbody_D65)
&& cols <= static_cast(ColorTableType::VegaWhite))
{
settings.starColors = static_cast(cols);
@@ -260,25 +260,6 @@ writeStarColors(std::ostream& os, const Settings& settings)
printEnumInt(os, settings.starColors);
}
-void
-readStarStyle(Settings& settings, std::string_view value)
-{
- using Style = std::underlying_type_t;
- Style starStyle;
- if (readInt(value, starStyle)
- && starStyle >= static_cast
|