diff --git a/celestia.cfg.in b/celestia.cfg.in index 61c2ad552f4..627f41c0083 100644 --- a/celestia.cfg.in +++ b/celestia.cfg.in @@ -248,11 +248,12 @@ StarTextures #------------------------------------------------------------------------ -# FaintestVisibleMagnitude defines the lowest magnitude at which a star -# will be displayed in Celestia. This setting may be adjusted real-time -# via the '[' and ']' keys in Celestia. The default value is 6.0. +# Exposure defines the time of light accumulation. It affects the +# brightness and the number of visible point sources (e.g. stars). +# This setting may be adjusted real-time via the '[' and ']' keys. +# The default value is 1.0. #------------------------------------------------------------------------ - FaintestVisibleMagnitude 6.0 + Exposure 1.0 #------------------------------------------------------------------------ diff --git a/controls.txt b/controls.txt index ce1d2dcae89..32415da2fa3 100644 --- a/controls.txt +++ b/controls.txt @@ -98,13 +98,8 @@ N ...................................... Spacecraft } ....................................... Increase Ambient Light ( ....................................... Decrease Galaxy Light Gain ) ....................................... Increase Galaxy Light Gain - [ ....................................... Decrease Magnitude Limit : - - If AutoMag OFF: Decrease limiting magnitude (fewer stars) - - If AutoMag ON : Decrease limiting magnitude at 45 deg FOV - ] ....................................... Increase Magnitude : - - If AutoMag OFF: Increase limiting magnitude (more stars) - - If AutoMag ON : Increase limiting magnitude at 45 deg FOV - Ctrl+Y ............................... Toggle Auto Magnitude (auto adaptation of star visibility to FOV + [ ....................................... Decrease Exposure Time + ] ....................................... Increase Exposure Time , ....................................... Narrow Field Of View [Shift+Left Drag] . ....................................... Widen Field Of View [Shift+Left Drag] Ctrl+X ............................... Toggle Antialias lines @@ -113,7 +108,6 @@ N ...................................... Spacecraft Ctrl+V ............................... Cycle among supported OpenGL render paths + ...................................... Toggle Planet Texture type (Artistic / Limit of Knowledge) % ..................................... Star color table toggle - Ctrl+S ............................... Cycle the Star Style (points / fuzzy discs / scaled discs) V ...................................... Cycle the Info text verbosity (None / Terse / Verbose) Ctrl+W .............................. Toggle Wireframe mode diff --git a/help/CelestiaGuide.html b/help/CelestiaGuide.html index a9575569329..8338a5f2499 100644 --- a/help/CelestiaGuide.html +++ b/help/CelestiaGuide.html @@ -1431,11 +1431,7 @@

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