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 @@

Render / Display Options

[ - Decrease Magnitude Limit: -
-   - If AutoMag OFF: Decrease limiting magnitude (fewer stars) -
-   - If AutoMag ON : Decrease limiting magnitude at 45 deg FOV + Decrease Exposure Time @@ -1443,19 +1439,7 @@

Render / Display Options

] - Increase Magnitude Limit: -
-   - 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) + Increase Exposure Time @@ -1522,14 +1506,6 @@

Render / Display Options

Toggle star color table - - - Ctrl+S - - - Cycle the Star Style (points / fuzzy discs / scaled discs) - - 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