Skip to content

Commit 2ed608b

Browse files
authored
add smoothing field to volumetrics dialog (#6865)
FRED support for the smoothing field added in #6854.
1 parent b49dbfe commit 2ed608b

4 files changed

Lines changed: 55 additions & 37 deletions

File tree

fred2/fred.rc

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2432,7 +2432,7 @@ BEGIN
24322432
EDITTEXT IDC_NEW_CONTAINER_NAME,15,14,102,14,ES_AUTOHSCROLL
24332433
END
24342434

2435-
IDD_VOLUMETRICS DIALOGEX 0, 0, 541, 215
2435+
IDD_VOLUMETRICS DIALOGEX 0, 0, 541, 232
24362436
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
24372437
CAPTION "Volumetric Nebula"
24382438
FONT 8, "MS Shell Dlg", 400, 0, 0x1
@@ -2475,15 +2475,18 @@ BEGIN
24752475
LTEXT "Resolution Oversampling",IDC_STATIC,7,145,80,8
24762476
EDITTEXT IDC_OVERSAMPLING,100,143,144,14,ES_AUTOHSCROLL | ES_NUMBER
24772477
CONTROL "",IDC_SPIN_OVERSAMPLING,"msctls_updown32",UDS_ARROWKEYS,246,143,11,14
2478-
LTEXT "Henyey Greenstein Coeff.",IDC_STATIC,7,162,85,8
2479-
EDITTEXT IDC_HGCOEFF,100,160,144,14,ES_AUTOHSCROLL
2480-
CONTROL "",IDC_SPIN_HGCOEFF,"msctls_updown32",UDS_ARROWKEYS,246,160,11,14
2481-
LTEXT "Sun Falloff Factor",IDC_STATIC,7,179,58,8
2482-
EDITTEXT IDC_SUN_FALLOFF,100,177,144,14,ES_AUTOHSCROLL
2483-
CONTROL "",IDC_SPIN_SUN_FALLOFF,"msctls_updown32",UDS_ARROWKEYS,246,177,11,14
2484-
LTEXT "Sun Quality Steps",IDC_STATIC,7,196,58,8
2485-
EDITTEXT IDC_STEPS_SUN,100,194,144,14,ES_AUTOHSCROLL | ES_NUMBER
2486-
CONTROL "",IDC_SPIN_STEPS_SUN,"msctls_updown32",UDS_ARROWKEYS,246,194,11,14
2478+
LTEXT "Smoothing",IDC_STATIC,7,162,80,8
2479+
EDITTEXT IDC_SMOOTHING,100,160,144,14,ES_AUTOHSCROLL | ES_NUMBER
2480+
CONTROL "",IDC_SPIN_SMOOTHING,"msctls_updown32",UDS_ARROWKEYS,246,160,11,14
2481+
LTEXT "Henyey Greenstein Coeff.",IDC_STATIC,7,179,85,8
2482+
EDITTEXT IDC_HGCOEFF,100,177,144,14,ES_AUTOHSCROLL
2483+
CONTROL "",IDC_SPIN_HGCOEFF,"msctls_updown32",UDS_ARROWKEYS,246,177,11,14
2484+
LTEXT "Sun Falloff Factor",IDC_STATIC,7,196,58,8
2485+
EDITTEXT IDC_SUN_FALLOFF,100,194,144,14,ES_AUTOHSCROLL
2486+
CONTROL "",IDC_SPIN_SUN_FALLOFF,"msctls_updown32",UDS_ARROWKEYS,246,194,11,14
2487+
LTEXT "Sun Quality Steps",IDC_STATIC,7,213,58,8
2488+
EDITTEXT IDC_STEPS_SUN,100,211,144,14,ES_AUTOHSCROLL | ES_NUMBER
2489+
CONTROL "",IDC_SPIN_STEPS_SUN,"msctls_updown32",UDS_ARROWKEYS,246,211,11,14
24872490
LTEXT "Emissive Light Spread",IDC_STATIC,283,25,70,8
24882491
EDITTEXT IDC_EM_SPREAD,376,23,144,14,ES_AUTOHSCROLL
24892492
CONTROL "",IDC_SPIN_EM_SPREAD,"msctls_updown32",UDS_ARROWKEYS,522,23,11,14
@@ -2493,33 +2496,33 @@ BEGIN
24932496
LTEXT "Emissive Light Falloff",IDC_STATIC,283,59,67,8
24942497
EDITTEXT IDC_EM_FALLOFF,376,57,144,14,ES_AUTOHSCROLL
24952498
CONTROL "",IDC_SPIN_EM_FALLOFF,"msctls_updown32",UDS_ARROWKEYS,522,57,11,14
2496-
CONTROL "Enable Noise",IDC_NOISE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,283,98,57,10
2497-
GROUPBOX "Noise Settings",IDC_STATIC,283,112,249,97
2498-
CONTROL "",IDC_SPIN_NOISE_COLOR_R,"msctls_updown32",UDS_ARROWKEYS,409,122,11,14
2499-
LTEXT "Color",IDC_STATIC,289,124,18,8
2500-
EDITTEXT IDC_NOISE_COLOR_R,381,122,26,14,ES_AUTOHSCROLL | ES_NUMBER
2501-
LTEXT "R",IDC_STATIC,373,124,8,8
2502-
CONTROL "",IDC_SPIN_NOISE_COLOR_G,"msctls_updown32",UDS_ARROWKEYS,463,122,11,14
2503-
EDITTEXT IDC_NOISE_COLOR_G,435,122,26,14,ES_AUTOHSCROLL | ES_NUMBER
2504-
LTEXT "G",IDC_STATIC,427,124,8,8
2505-
CONTROL "",IDC_SPIN_NOISE_COLOR_B,"msctls_updown32",UDS_ARROWKEYS,517,122,11,14
2506-
EDITTEXT IDC_NOISE_COLOR_B,489,122,26,14,ES_AUTOHSCROLL | ES_NUMBER
2507-
LTEXT "B",IDC_STATIC,481,124,8,8,NOT WS_GROUP
2508-
CONTROL "",IDC_SPIN_NOISE_SCALE_B,"msctls_updown32",UDS_ARROWKEYS,437,139,11,14
2509-
LTEXT "Scale",IDC_STATIC,289,141,18,8
2510-
EDITTEXT IDC_NOISE_SCALE_B,392,139,43,14,ES_AUTOHSCROLL
2511-
LTEXT "Base",IDC_STATIC,373,141,18,8
2512-
CONTROL "",IDC_SPIN_NOISE_SCALE_S,"msctls_updown32",UDS_ARROWKEYS,517,139,11,14
2513-
EDITTEXT IDC_NOISE_SCALE_S,472,139,43,14,ES_AUTOHSCROLL
2514-
LTEXT "Sub",IDC_STATIC,457,141,13,8
2515-
LTEXT "Intensity",IDC_STATIC,289,158,30,8
2516-
EDITTEXT IDC_NOISE_INTENSITY,371,156,144,14,ES_AUTOHSCROLL
2517-
CONTROL "",IDC_SPIN_NOISE_INTENSITY,"msctls_updown32",UDS_ARROWKEYS,517,156,11,14
2518-
LTEXT "Resolution",IDC_STATIC,289,175,34,8
2519-
EDITTEXT IDC_NOISE_RESOLUTION,371,173,144,14,ES_AUTOHSCROLL | ES_NUMBER
2520-
CONTROL "",IDC_SPIN_NOISE_RESOLUTION,"msctls_updown32",UDS_ARROWKEYS,517,173,11,14
2521-
PUSHBUTTON "Set Base Noise Function",IDC_NOISE_BASE,289,190,118,14,WS_DISABLED
2522-
PUSHBUTTON "Set Sub Noise Function",IDC_NOISE_SUB,410,190,118,14,WS_DISABLED
2499+
CONTROL "Enable Noise",IDC_NOISE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,283,115,57,10
2500+
GROUPBOX "Noise Settings",IDC_STATIC,283,129,249,97
2501+
CONTROL "",IDC_SPIN_NOISE_COLOR_R,"msctls_updown32",UDS_ARROWKEYS,409,139,11,14
2502+
LTEXT "Color",IDC_STATIC,289,141,18,8
2503+
EDITTEXT IDC_NOISE_COLOR_R,381,139,26,14,ES_AUTOHSCROLL | ES_NUMBER
2504+
LTEXT "R",IDC_STATIC,373,141,8,8
2505+
CONTROL "",IDC_SPIN_NOISE_COLOR_G,"msctls_updown32",UDS_ARROWKEYS,463,139,11,14
2506+
EDITTEXT IDC_NOISE_COLOR_G,435,139,26,14,ES_AUTOHSCROLL | ES_NUMBER
2507+
LTEXT "G",IDC_STATIC,427,141,8,8
2508+
CONTROL "",IDC_SPIN_NOISE_COLOR_B,"msctls_updown32",UDS_ARROWKEYS,517,139,11,14
2509+
EDITTEXT IDC_NOISE_COLOR_B,489,139,26,14,ES_AUTOHSCROLL | ES_NUMBER
2510+
LTEXT "B",IDC_STATIC,481,141,8,8,NOT WS_GROUP
2511+
CONTROL "",IDC_SPIN_NOISE_SCALE_B,"msctls_updown32",UDS_ARROWKEYS,437,156,11,14
2512+
LTEXT "Scale",IDC_STATIC,289,158,18,8
2513+
EDITTEXT IDC_NOISE_SCALE_B,392,156,43,14,ES_AUTOHSCROLL
2514+
LTEXT "Base",IDC_STATIC,373,158,18,8
2515+
CONTROL "",IDC_SPIN_NOISE_SCALE_S,"msctls_updown32",UDS_ARROWKEYS,517,156,11,14
2516+
EDITTEXT IDC_NOISE_SCALE_S,472,156,43,14,ES_AUTOHSCROLL
2517+
LTEXT "Sub",IDC_STATIC,457,158,13,8
2518+
LTEXT "Intensity",IDC_STATIC,289,175,30,8
2519+
EDITTEXT IDC_NOISE_INTENSITY,371,173,144,14,ES_AUTOHSCROLL
2520+
CONTROL "",IDC_SPIN_NOISE_INTENSITY,"msctls_updown32",UDS_ARROWKEYS,517,173,11,14
2521+
LTEXT "Resolution",IDC_STATIC,289,192,34,8
2522+
EDITTEXT IDC_NOISE_RESOLUTION,371,190,144,14,ES_AUTOHSCROLL | ES_NUMBER
2523+
CONTROL "",IDC_SPIN_NOISE_RESOLUTION,"msctls_updown32",UDS_ARROWKEYS,517,190,11,14
2524+
PUSHBUTTON "Set Base Noise Function",IDC_NOISE_BASE,289,207,118,14,WS_DISABLED
2525+
PUSHBUTTON "Set Sub Noise Function",IDC_NOISE_SUB,410,207,118,14,WS_DISABLED
25232526
END
25242527

25252528
IDD_EDIT_CUSTOM_DATA DIALOGEX 0, 0, 441, 238

fred2/resource.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,6 +1263,8 @@
12631263
#define IDC_REQUIRED_WEAPONS 1704
12641264
#define IDC_SELECT_DEBRIS 1705
12651265
#define IDC_SELECT_ASTEROID 1706
1266+
#define IDC_SMOOTHING 1707
1267+
#define IDC_SPIN_SMOOTHING 1708
12661268
#define IDC_SEXP_POPUP_LIST 32770
12671269
#define ID_FILE_MISSIONNOTES 32771
12681270
#define ID_DUPLICATE 32774

fred2/volumetricsdlg.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ static constexpr std::initializer_list<int> Interactible_fields = {
2020
ID_AND_SPIN(STEPS),
2121
ID_AND_SPIN(RESOLUTION),
2222
ID_AND_SPIN(OVERSAMPLING),
23+
ID_AND_SPIN(SMOOTHING),
2324
ID_AND_SPIN(HGCOEFF),
2425
ID_AND_SPIN(SUN_FALLOFF),
2526
ID_AND_SPIN(STEPS_SUN),
@@ -49,6 +50,7 @@ volumetrics_dlg::volumetrics_dlg(CWnd* pParent /*=nullptr*/) : CDialog(volumetri
4950
m_steps(15),
5051
m_resolution(6),
5152
m_oversampling(2),
53+
m_smoothing(0.0f),
5254
m_henyeyGreenstein(0.2f),
5355
m_sunFalloffFactor(1.0f),
5456
m_sunSteps(6),
@@ -75,6 +77,7 @@ BOOL volumetrics_dlg::OnInitDialog()
7577
static constexpr char* Tooltip_distance = _T("This is how far something has to be in the nebula to be obscured to the maximum opacity.");
7678
static constexpr char* Tooltip_steps = _T("If you see banding on ships in the volumetrics, increase this.");
7779
static constexpr char* Tooltip_oversampling = _T("Increasing this improves the nebula's edge's smoothness especially for large nebula at low resolutions.");
80+
static constexpr char* Tooltip_smoothing = _T("Smoothing controls how soft edges of the hull POF will be in the nebula, defined as a fraction of the nebula size.");
7881
static constexpr char* Tooltip_henyey = _T("Values greater than 0 cause a cloud-like light shine-through, values smaller than 0 cause a highly reflective nebula.");
7982
static constexpr char* Tooltip_sun_falloff = _T("Values greater than 1 means the nebula's depths are brighter than they ought to be, values smaller than 0 means they're darker.");
8083
static constexpr char* Tooltip_steps_sun = _T("If you see banding in the volumetrics' light and shadow, increase this.");
@@ -86,6 +89,8 @@ BOOL volumetrics_dlg::OnInitDialog()
8689
m_toolTip.AddTool(GetDlgItem(IDC_SPIN_STEPS), Tooltip_steps);
8790
m_toolTip.AddTool(GetDlgItem(IDC_OVERSAMPLING), Tooltip_oversampling);
8891
m_toolTip.AddTool(GetDlgItem(IDC_SPIN_OVERSAMPLING), Tooltip_oversampling);
92+
m_toolTip.AddTool(GetDlgItem(IDC_SMOOTHING), Tooltip_smoothing);
93+
m_toolTip.AddTool(GetDlgItem(IDC_SPIN_SMOOTHING), Tooltip_smoothing);
8994
m_toolTip.AddTool(GetDlgItem(IDC_HGCOEFF), Tooltip_henyey);
9095
m_toolTip.AddTool(GetDlgItem(IDC_SPIN_HGCOEFF), Tooltip_henyey);
9196
m_toolTip.AddTool(GetDlgItem(IDC_SUN_FALLOFF), Tooltip_sun_falloff);
@@ -111,6 +116,7 @@ BOOL volumetrics_dlg::OnInitDialog()
111116
m_steps = volumetrics.steps;
112117
m_resolution = volumetrics.resolution;
113118
m_oversampling = volumetrics.oversampling;
119+
m_smoothing = volumetrics.smoothing;
114120
m_henyeyGreenstein = volumetrics.henyeyGreensteinCoeff;
115121
m_sunFalloffFactor = volumetrics.globalLightDistanceFactor;
116122
m_sunSteps = volumetrics.globalLightSteps;
@@ -154,6 +160,7 @@ void volumetrics_dlg::OnClose()
154160
volumetrics.steps = m_steps;
155161
volumetrics.resolution = m_resolution;
156162
volumetrics.oversampling = m_oversampling;
163+
volumetrics.smoothing = m_smoothing;
157164
volumetrics.henyeyGreensteinCoeff = m_henyeyGreenstein;
158165
volumetrics.globalLightDistanceFactor = m_sunFalloffFactor;
159166
volumetrics.globalLightSteps= m_sunSteps;
@@ -199,6 +206,8 @@ void volumetrics_dlg::DoDataExchange(CDataExchange* pDX)
199206
DDV_MinMaxInt(pDX, m_resolution, 6, 8);
200207
DDX_Text(pDX, IDC_OVERSAMPLING, m_oversampling);
201208
DDV_MinMaxInt(pDX, m_oversampling, 1, 3);
209+
DDX_Text(pDX, IDC_SMOOTHING, m_smoothing);
210+
DDV_MinMaxFloat(pDX, m_smoothing, 0.0f, 0.5f);
202211
DDX_Text(pDX, IDC_HGCOEFF, m_henyeyGreenstein);
203212
DDV_MinMaxFloat(pDX, m_henyeyGreenstein, -1.0f, 1.0f);
204213
DDX_Text(pDX, IDC_SUN_FALLOFF, m_sunFalloffFactor);
@@ -250,6 +259,7 @@ BEGIN_MESSAGE_MAP(volumetrics_dlg, CDialog)
250259
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_STEPS, &volumetrics_dlg::OnDeltaposSpinSteps)
251260
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_RESOLUTION, &volumetrics_dlg::OnDeltaposSpinResolution)
252261
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_OVERSAMPLING, &volumetrics_dlg::OnDeltaposSpinResolutionOversampling)
262+
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_SMOOTHING, &volumetrics_dlg::OnDeltaposSpinSmoothing)
253263
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_HGCOEFF, &volumetrics_dlg::OnDeltaposSpinHGCoeff)
254264
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_SUN_FALLOFF, &volumetrics_dlg::OnDeltaposSpinSunFalloff)
255265
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_STEPS_SUN, &volumetrics_dlg::OnDeltaposSpinStepsSun)
@@ -373,6 +383,7 @@ SPINNER_IMPL(SPIN_LINEAR, OpacityDistance, m_opacityDistance, 0.1f, FLT_MAX)
373383
SPINNER_IMPL(SPIN_LINEAR, Steps, m_steps, 1, 100)
374384
SPINNER_IMPL(SPIN_LINEAR, Resolution, m_resolution, 5, 8)
375385
SPINNER_IMPL(SPIN_LINEAR, ResolutionOversampling, m_oversampling, 1, 3)
386+
SPINNER_IMPL(SPIN_LINEAR, Smoothing, m_smoothing, 0.0f, 0.5f, 0.01f)
376387

377388
SPINNER_IMPL(SPIN_LINEAR, HGCoeff, m_henyeyGreenstein, -1.0f, 1.0f, 0.1f)
378389
SPINNER_IMPL(SPIN_FACTOR, SunFalloff, m_sunFalloffFactor, 0.001f, 100.0f)

fred2/volumetricsdlg.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class volumetrics_dlg : public CDialog
2424
int m_steps;
2525
int m_resolution;
2626
int m_oversampling;
27+
float m_smoothing;
2728
float m_henyeyGreenstein;
2829
float m_sunFalloffFactor;
2930
int m_sunSteps;
@@ -65,6 +66,7 @@ class volumetrics_dlg : public CDialog
6566
afx_msg void OnDeltaposSpinSteps(NMHDR* pNMHDR, LRESULT* pResult);
6667
afx_msg void OnDeltaposSpinResolution(NMHDR* pNMHDR, LRESULT* pResult);
6768
afx_msg void OnDeltaposSpinResolutionOversampling(NMHDR* pNMHDR, LRESULT* pResult);
69+
afx_msg void OnDeltaposSpinSmoothing(NMHDR* pNMHDR, LRESULT* pResult);
6870
afx_msg void OnDeltaposSpinHGCoeff(NMHDR* pNMHDR, LRESULT* pResult);
6971
afx_msg void OnDeltaposSpinSunFalloff(NMHDR* pNMHDR, LRESULT* pResult);
7072
afx_msg void OnDeltaposSpinStepsSun(NMHDR* pNMHDR, LRESULT* pResult);

0 commit comments

Comments
 (0)