Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
#5532: Alphatest binding
  • Loading branch information
codereader committed Feb 21, 2021
1 parent d685ffc commit fe82bee
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 20 deletions.
3 changes: 3 additions & 0 deletions include/ShaderLayer.h
Expand Up @@ -217,6 +217,9 @@ class ShaderLayer
*/
virtual Vector2 getShear() = 0;

// Returns true if this layer has an alphatest expression defined
virtual bool hasAlphaTest() const = 0;

/**
* \brief
* Get the alpha test value for this layer.
Expand Down
31 changes: 18 additions & 13 deletions install/ui/materialeditor.fbp
Expand Up @@ -10669,11 +10669,11 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
Expand All @@ -10687,6 +10687,7 @@
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
Expand All @@ -10702,15 +10703,14 @@
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Alphatest:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText11</property>
<property name="name">MaterialStageHasAlphaTest</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
Expand All @@ -10721,13 +10721,16 @@
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="0">
Expand All @@ -10746,11 +10749,11 @@
<property name="permission">none</property>
<property name="rows">0</property>
<property name="vgap">0</property>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">0</property>
<property name="flag">wxRIGHT|wxALIGN_CENTER_VERTICAL</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxSpinCtrl" expanded="0">
<object class="wxSpinCtrlDouble" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
Expand All @@ -10768,6 +10771,7 @@
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="digits">1</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
Expand All @@ -10778,7 +10782,8 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="initial">1</property>
<property name="inc">0.1</property>
<property name="initial">0</property>
<property name="max">1</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
Expand All @@ -10788,7 +10793,7 @@
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">MaterialEditorStageFadeInFrac</property>
<property name="name">MaterialStageAlphaTestValue</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
Expand All @@ -10797,9 +10802,9 @@
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size">70,-1</property>
<property name="size"></property>
<property name="style">wxSP_ARROW_KEYS</property>
<property name="subclass"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="value"></property>
Expand Down
13 changes: 7 additions & 6 deletions install/ui/materialeditor.xrc
Expand Up @@ -1807,9 +1807,9 @@
<option>0</option>
<flag>wxALIGN_CENTER_VERTICAL</flag>
<border>0</border>
<object class="wxStaticText" name="m_staticText11">
<object class="wxCheckBox" name="MaterialStageHasAlphaTest">
<label>Alphatest:</label>
<wrap>-1</wrap>
<checked>0</checked>
</object>
</object>
<object class="sizeritem">
Expand All @@ -1825,14 +1825,15 @@
<growablerows></growablerows>
<object class="sizeritem">
<option>0</option>
<flag>wxRIGHT|wxALIGN_CENTER_VERTICAL</flag>
<flag>wxALL</flag>
<border>0</border>
<object class="wxSpinCtrl" name="MaterialEditorStageFadeInFrac">
<object class="wxSpinCtrlDouble" name="MaterialStageAlphaTestValue">
<style>wxSP_ARROW_KEYS</style>
<size>70,-1</size>
<value>1</value>
<value>0</value>
<min>0</min>
<max>1</max>
<inc>0.1</inc>
<digits>1</digits>
</object>
</object>
<object class="sizeritem">
Expand Down
11 changes: 11 additions & 0 deletions radiant/ui/materials/MaterialEditor.cpp
Expand Up @@ -340,6 +340,12 @@ void MaterialEditor::setupMaterialStageProperties()
setupStageFlag("MaterialStageFlagMaskAlpha", ShaderLayer::FLAG_MASK_ALPHA);
setupStageFlag("MaterialStageFlagMaskColour", ShaderLayer::FLAG_MASK_RED|ShaderLayer::FLAG_MASK_GREEN|ShaderLayer::FLAG_MASK_BLUE);
setupStageFlag("MaterialStageFlagMaskDepth", ShaderLayer::FLAG_MASK_DEPTH);

_stageBindings.emplace(std::make_shared<CheckBoxBinding<ShaderLayerPtr>>(getControl<wxCheckBox>("MaterialStageHasAlphaTest"),
[=](const ShaderLayerPtr& layer)
{
return layer->hasAlphaTest();
}));
}

void MaterialEditor::_onTreeViewSelectionChanged(wxDataViewEvent& ev)
Expand Down Expand Up @@ -654,7 +660,12 @@ void MaterialEditor::updateStageControlsFromSelectedStage()

getControl<wxPanel>("MaterialEditorStageSettingsPanel")->Enable(selectedStage != nullptr);

if (selectedStage)
{
selectedStage->evaluateExpressions(0); // initialise the values of this stage

getControl<wxSpinCtrlDouble>("MaterialStageAlphaTestValue")->SetValue(selectedStage->getAlphaTest());
}
}

}
5 changes: 5 additions & 0 deletions radiantcore/shaders/Doom3ShaderLayer.cpp
Expand Up @@ -215,6 +215,11 @@ ShaderLayer::CubeMapMode Doom3ShaderLayer::getCubeMapMode() const
return _cubeMapMode;
}

bool Doom3ShaderLayer::hasAlphaTest() const
{
return _alphaTest != REG_ZERO;
}

float Doom3ShaderLayer::getAlphaTest() const
{
return _registers[_alphaTest];
Expand Down
4 changes: 3 additions & 1 deletion radiantcore/shaders/Doom3ShaderLayer.h
Expand Up @@ -123,7 +123,9 @@ class Doom3ShaderLayer
Colour4 getColour() const;
VertexColourMode getVertexColourMode() const;
CubeMapMode getCubeMapMode() const;
float getAlphaTest() const;

bool hasAlphaTest() const override;
float getAlphaTest() const override;

// True if the condition for this stage is fulfilled
// (expressions must have been evaluated before this call)
Expand Down

0 comments on commit fe82bee

Please sign in to comment.