|
|
|
@@ -12,7 +12,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
float screenH = (float)wiRenderer::GetDevice()->GetScreenHeight();
|
|
|
|
|
|
|
|
|
|
materialWindow = new wiWindow(GUI, "Material Window");
|
|
|
|
|
materialWindow->SetSize(XMFLOAT2(600, 400));
|
|
|
|
|
materialWindow->SetSize(XMFLOAT2(600, 550));
|
|
|
|
|
materialWindow->SetEnabled(false);
|
|
|
|
|
GUI->AddWidget(materialWindow);
|
|
|
|
|
|
|
|
|
@@ -23,24 +23,32 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
materialWindow->AddWidget(materialLabel);
|
|
|
|
|
|
|
|
|
|
float x = 400, y = 0;
|
|
|
|
|
float step = 35;
|
|
|
|
|
|
|
|
|
|
waterCheckBox = new wiCheckBox("Water: ");
|
|
|
|
|
waterCheckBox->SetPos(XMFLOAT2(470, y += 30));
|
|
|
|
|
waterCheckBox->SetPos(XMFLOAT2(470, y += step));
|
|
|
|
|
waterCheckBox->OnClick([&](wiEventArgs args) {
|
|
|
|
|
material->water = args.bValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(waterCheckBox);
|
|
|
|
|
|
|
|
|
|
planarReflCheckBox = new wiCheckBox("Planar Reflections: ");
|
|
|
|
|
planarReflCheckBox->SetPos(XMFLOAT2(470, y += 30));
|
|
|
|
|
planarReflCheckBox->SetPos(XMFLOAT2(470, y += step));
|
|
|
|
|
planarReflCheckBox->OnClick([&](wiEventArgs args) {
|
|
|
|
|
material->planar_reflections = args.bValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(planarReflCheckBox);
|
|
|
|
|
|
|
|
|
|
shadowCasterCheckBox = new wiCheckBox("Cast Shadow: ");
|
|
|
|
|
shadowCasterCheckBox->SetPos(XMFLOAT2(470, y += step));
|
|
|
|
|
shadowCasterCheckBox->OnClick([&](wiEventArgs args) {
|
|
|
|
|
material->cast_shadow = args.bValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(shadowCasterCheckBox);
|
|
|
|
|
|
|
|
|
|
normalMapSlider = new wiSlider(0, 4, 1, 4000, "Normalmap: ");
|
|
|
|
|
normalMapSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
normalMapSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
normalMapSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
normalMapSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->normalMapStrength = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -48,7 +56,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
roughnessSlider = new wiSlider(0, 1, 0.5f, 1000, "Roughness: ");
|
|
|
|
|
roughnessSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
roughnessSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
roughnessSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
roughnessSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->roughness = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -56,7 +64,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
reflectanceSlider = new wiSlider(0, 1, 0.5f, 1000, "Reflectance: ");
|
|
|
|
|
reflectanceSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
reflectanceSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
reflectanceSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
reflectanceSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->reflectance = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -64,7 +72,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
metalnessSlider = new wiSlider(0, 1, 0.0f, 1000, "Metalness: ");
|
|
|
|
|
metalnessSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
metalnessSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
metalnessSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
metalnessSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->metalness = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -72,7 +80,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
alphaSlider = new wiSlider(0, 1, 1.0f, 1000, "Alpha: ");
|
|
|
|
|
alphaSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
alphaSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
alphaSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
alphaSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->alpha = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -80,7 +88,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
refractionIndexSlider = new wiSlider(0, 1.0f, 0.02f, 1000, "Refraction Index: ");
|
|
|
|
|
refractionIndexSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
refractionIndexSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
refractionIndexSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
refractionIndexSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->refractionIndex = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -88,7 +96,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
emissiveSlider = new wiSlider(0, 1, 0.0f, 1000, "Emissive: ");
|
|
|
|
|
emissiveSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
emissiveSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
emissiveSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
emissiveSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->emissive = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -96,7 +104,7 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
sssSlider = new wiSlider(0, 1, 0.0f, 1000, "Subsurface Scattering: ");
|
|
|
|
|
sssSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
sssSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
sssSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
sssSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->subsurfaceScattering = args.fValue;
|
|
|
|
|
});
|
|
|
|
@@ -104,15 +112,31 @@ MaterialWindow::MaterialWindow(wiGUI* gui) : GUI(gui)
|
|
|
|
|
|
|
|
|
|
pomSlider = new wiSlider(0, 0.1f, 0.0f, 1000, "Parallax Occlusion Mapping: ");
|
|
|
|
|
pomSlider->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
pomSlider->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
pomSlider->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
pomSlider->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->parallaxOcclusionMapping = args.fValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(pomSlider);
|
|
|
|
|
|
|
|
|
|
movingTexSliderU = new wiSlider(-0.05f, 0.05f, 0, 1000, "Texcoord anim U: ");
|
|
|
|
|
movingTexSliderU->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
movingTexSliderU->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
movingTexSliderU->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->movingTex.x = args.fValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(movingTexSliderU);
|
|
|
|
|
|
|
|
|
|
movingTexSliderV = new wiSlider(-0.05f, 0.05f, 0, 1000, "Texcoord anim V: ");
|
|
|
|
|
movingTexSliderV->SetSize(XMFLOAT2(100, 30));
|
|
|
|
|
movingTexSliderV->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
movingTexSliderV->OnSlide([&](wiEventArgs args) {
|
|
|
|
|
material->movingTex.y = args.fValue;
|
|
|
|
|
});
|
|
|
|
|
materialWindow->AddWidget(movingTexSliderV);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
colorPickerToggleButton = new wiButton("Color");
|
|
|
|
|
colorPickerToggleButton->SetPos(XMFLOAT2(x, y += 30));
|
|
|
|
|
colorPickerToggleButton->SetPos(XMFLOAT2(x, y += step));
|
|
|
|
|
colorPickerToggleButton->OnClick([&](wiEventArgs args) {
|
|
|
|
|
colorPicker->SetVisible(!colorPicker->IsVisible());
|
|
|
|
|
});
|
|
|
|
@@ -139,6 +163,7 @@ MaterialWindow::~MaterialWindow()
|
|
|
|
|
SAFE_DELETE(materialLabel);
|
|
|
|
|
SAFE_DELETE(waterCheckBox);
|
|
|
|
|
SAFE_DELETE(planarReflCheckBox);
|
|
|
|
|
SAFE_DELETE(shadowCasterCheckBox);
|
|
|
|
|
SAFE_DELETE(normalMapSlider);
|
|
|
|
|
SAFE_DELETE(roughnessSlider);
|
|
|
|
|
SAFE_DELETE(reflectanceSlider);
|
|
|
|
@@ -148,6 +173,8 @@ MaterialWindow::~MaterialWindow()
|
|
|
|
|
SAFE_DELETE(emissiveSlider);
|
|
|
|
|
SAFE_DELETE(sssSlider);
|
|
|
|
|
SAFE_DELETE(pomSlider);
|
|
|
|
|
SAFE_DELETE(movingTexSliderU);
|
|
|
|
|
SAFE_DELETE(movingTexSliderV);
|
|
|
|
|
SAFE_DELETE(colorPickerToggleButton);
|
|
|
|
|
SAFE_DELETE(colorPicker);
|
|
|
|
|
}
|
|
|
|
@@ -162,6 +189,7 @@ void MaterialWindow::SetMaterial(Material* mat)
|
|
|
|
|
materialLabel->SetText(material->name);
|
|
|
|
|
waterCheckBox->SetCheck(material->water);
|
|
|
|
|
planarReflCheckBox->SetCheck(material->planar_reflections);
|
|
|
|
|
shadowCasterCheckBox->SetCheck(material->cast_shadow);
|
|
|
|
|
normalMapSlider->SetValue(material->normalMapStrength);
|
|
|
|
|
roughnessSlider->SetValue(material->roughness);
|
|
|
|
|
reflectanceSlider->SetValue(material->reflectance);
|
|
|
|
@@ -171,6 +199,8 @@ void MaterialWindow::SetMaterial(Material* mat)
|
|
|
|
|
emissiveSlider->SetValue(material->emissive);
|
|
|
|
|
sssSlider->SetValue(material->subsurfaceScattering);
|
|
|
|
|
pomSlider->SetValue(material->parallaxOcclusionMapping);
|
|
|
|
|
movingTexSliderU->SetValue(material->movingTex.x);
|
|
|
|
|
movingTexSliderU->SetValue(material->movingTex.x);
|
|
|
|
|
materialWindow->SetEnabled(true);
|
|
|
|
|
colorPicker->SetEnabled(true);
|
|
|
|
|
}
|
|
|
|
|