1
0
mirror of synced 2024-11-28 01:10:51 +01:00

Image Editor : Add gamma control and addtional UI to cubemap viewer

This commit is contained in:
KillzXGaming 2021-04-09 21:02:20 -04:00
parent c9aef08482
commit f98cb66feb
6 changed files with 86 additions and 31 deletions

View File

@ -29,29 +29,87 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.stPanel1 = new Toolbox.Library.Forms.STPanel(); this.stPanel1 = new Toolbox.Library.Forms.STPanel();
this.encodeHDRAlphaChk = new Toolbox.Library.Forms.STCheckBox();
this.gammaUD = new Toolbox.Library.Forms.NumericUpDownFloat();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.contentContainer.SuspendLayout(); this.contentContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gammaUD)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// contentContainer // contentContainer
// //
this.contentContainer.Controls.Add(this.stLabel1);
this.contentContainer.Controls.Add(this.gammaUD);
this.contentContainer.Controls.Add(this.encodeHDRAlphaChk);
this.contentContainer.Controls.Add(this.stPanel1); this.contentContainer.Controls.Add(this.stPanel1);
this.contentContainer.Size = new System.Drawing.Size(314, 332); this.contentContainer.Size = new System.Drawing.Size(583, 455);
this.contentContainer.Controls.SetChildIndex(this.stPanel1, 0); this.contentContainer.Controls.SetChildIndex(this.stPanel1, 0);
this.contentContainer.Controls.SetChildIndex(this.encodeHDRAlphaChk, 0);
this.contentContainer.Controls.SetChildIndex(this.gammaUD, 0);
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
// //
// stPanel1 // stPanel1
// //
this.stPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.stPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.stPanel1.Location = new System.Drawing.Point(0, 25); | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.stPanel1.Location = new System.Drawing.Point(0, 51);
this.stPanel1.Name = "stPanel1"; this.stPanel1.Name = "stPanel1";
this.stPanel1.Size = new System.Drawing.Size(314, 307); this.stPanel1.Size = new System.Drawing.Size(580, 404);
this.stPanel1.TabIndex = 11; this.stPanel1.TabIndex = 11;
// //
// encodeHDRAlphaChk
//
this.encodeHDRAlphaChk.AutoSize = true;
this.encodeHDRAlphaChk.Location = new System.Drawing.Point(10, 32);
this.encodeHDRAlphaChk.Name = "encodeHDRAlphaChk";
this.encodeHDRAlphaChk.Size = new System.Drawing.Size(125, 17);
this.encodeHDRAlphaChk.TabIndex = 12;
this.encodeHDRAlphaChk.Text = "View Encoded Alpha";
this.encodeHDRAlphaChk.UseVisualStyleBackColor = true;
this.encodeHDRAlphaChk.CheckedChanged += new System.EventHandler(this.encodeHDRAlphaChk_CheckedChanged);
//
// gammaUD
//
this.gammaUD.DecimalPlaces = 5;
this.gammaUD.Increment = new decimal(new int[] {
5,
0,
0,
196608});
this.gammaUD.Location = new System.Drawing.Point(193, 29);
this.gammaUD.Maximum = new decimal(new int[] {
1000000000,
0,
0,
0});
this.gammaUD.Minimum = new decimal(new int[] {
100000000,
0,
0,
-2147483648});
this.gammaUD.Name = "gammaUD";
this.gammaUD.Size = new System.Drawing.Size(120, 20);
this.gammaUD.TabIndex = 13;
this.gammaUD.ValueChanged += new System.EventHandler(this.gammaUD_ValueChanged);
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(141, 31);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(46, 13);
this.stLabel1.TabIndex = 14;
this.stLabel1.Text = "Gamma:";
//
// CubeMapFaceViewer3D // CubeMapFaceViewer3D
// //
this.ClientSize = new System.Drawing.Size(320, 337); this.ClientSize = new System.Drawing.Size(589, 460);
this.Name = "CubeMapFaceViewer3D"; this.Name = "CubeMapFaceViewer3D";
this.Text = "CubeMapFaceViewer3D"; this.Text = "CubeMapFaceViewer3D";
this.contentContainer.ResumeLayout(false); this.contentContainer.ResumeLayout(false);
this.contentContainer.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.gammaUD)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -59,5 +117,8 @@
#endregion #endregion
private STPanel stPanel1; private STPanel stPanel1;
private STLabel stLabel1;
private NumericUpDownFloat gammaUD;
private STCheckBox encodeHDRAlphaChk;
} }
} }

View File

@ -17,13 +17,13 @@ namespace Toolbox.Library.Forms
{ {
public partial class CubeMapFaceViewer3D : STForm public partial class CubeMapFaceViewer3D : STForm
{ {
public bool HDREncoded = false;
private GL_ControlBase glControl; private GL_ControlBase glControl;
public CubeMapFaceViewer3D() public CubeMapFaceViewer3D()
{ {
InitializeComponent(); InitializeComponent();
gammaUD.Value = 2.2m;
if (Runtime.UseLegacyGL) if (Runtime.UseLegacyGL)
glControl = new GL_ControlLegacy(); glControl = new GL_ControlLegacy();
else else
@ -36,16 +36,25 @@ namespace Toolbox.Library.Forms
} }
private STGenericTexture ActiveTexture; private STGenericTexture ActiveTexture;
private DrawableSkybox skybox = new DrawableSkybox();
public void LoadTexture(STGenericTexture texture) public void LoadTexture(STGenericTexture texture)
{ {
ActiveTexture = texture; ActiveTexture = texture;
var skybox = new DrawableSkybox();
skybox.ForceDisplay = true; skybox.ForceDisplay = true;
skybox.LoadCustomTexture(ActiveTexture); skybox.LoadCustomTexture(ActiveTexture);
skybox.HDREncoded = HDREncoded;
glControl.MainDrawable = skybox; glControl.MainDrawable = skybox;
} }
private void encodeHDRAlphaChk_CheckedChanged(object sender, EventArgs e) {
skybox.HDREncoded = encodeHDRAlphaChk.Checked;
glControl?.Invalidate();
}
private void gammaUD_ValueChanged(object sender, EventArgs e) {
skybox.Gamma = (float)gammaUD.Value;
glControl?.Invalidate();
}
} }
} }

View File

@ -31,6 +31,7 @@
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImageEditorBase)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImageEditorBase));
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.stPanel2 = new Toolbox.Library.Forms.STPanel(); this.stPanel2 = new Toolbox.Library.Forms.STPanel();
this.stPanel1 = new Toolbox.Library.Forms.STPanel(); this.stPanel1 = new Toolbox.Library.Forms.STPanel();
this.backgroundPB = new System.Windows.Forms.PictureBox(); this.backgroundPB = new System.Windows.Forms.PictureBox();
@ -86,9 +87,7 @@
this.rToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.rToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.adjustmentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.adjustmentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.gammaFixToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.gammaFixToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.stContextMenuStrip3 = new Toolbox.Library.Forms.STContextMenuStrip(this.components); this.stContextMenuStrip3 = new Toolbox.Library.Forms.STContextMenuStrip(this.components);
this.previewCubemap3DHDRAlphaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.SuspendLayout(); this.splitContainer1.SuspendLayout();
@ -485,7 +484,6 @@
this.useComponentSelectorToolStripMenuItem, this.useComponentSelectorToolStripMenuItem,
this.previewCubemapToolStripMenuItem, this.previewCubemapToolStripMenuItem,
this.previewCubemap3DToolStripMenuItem, this.previewCubemap3DToolStripMenuItem,
this.previewCubemap3DHDRAlphaToolStripMenuItem,
this.previewGammaFixSmashUltimateToolStripMenuItem}); this.previewGammaFixSmashUltimateToolStripMenuItem});
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem"; this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20); this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
@ -643,13 +641,6 @@
this.stContextMenuStrip3.Name = "stContextMenuStrip3"; this.stContextMenuStrip3.Name = "stContextMenuStrip3";
this.stContextMenuStrip3.Size = new System.Drawing.Size(61, 4); this.stContextMenuStrip3.Size = new System.Drawing.Size(61, 4);
// //
// previewCubemap3DHDRAlphaToolStripMenuItem
//
this.previewCubemap3DHDRAlphaToolStripMenuItem.Name = "previewCubemap3DHDRAlphaToolStripMenuItem";
this.previewCubemap3DHDRAlphaToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
this.previewCubemap3DHDRAlphaToolStripMenuItem.Text = "Preview Cubemap (3D HDR Alpha)";
this.previewCubemap3DHDRAlphaToolStripMenuItem.Click += new System.EventHandler(this.previewCubemap3DHDRToolStripMenuItem_Click);
//
// ImageEditorBase // ImageEditorBase
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -735,6 +726,5 @@
private STLabel noteifcationLbl; private STLabel noteifcationLbl;
private System.Windows.Forms.ToolStripMenuItem gammaFixToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem gammaFixToolStripMenuItem;
private System.Windows.Forms.PictureBox backgroundPB; private System.Windows.Forms.PictureBox backgroundPB;
private System.Windows.Forms.ToolStripMenuItem previewCubemap3DHDRAlphaToolStripMenuItem;
} }
} }

View File

@ -1383,18 +1383,10 @@ namespace Toolbox.Library.Forms
private void previewCubemap3DToolStripMenuItem_Click(object sender, EventArgs e) private void previewCubemap3DToolStripMenuItem_Click(object sender, EventArgs e)
{ {
CubeMapFaceViewer3D viewer = new CubeMapFaceViewer3D(); CubeMapFaceViewer3D viewer = new CubeMapFaceViewer3D();
viewer.HDREncoded = false;
viewer.LoadTexture(ActiveTexture); viewer.LoadTexture(ActiveTexture);
viewer.Show(); viewer.Show();
} }
private void previewCubemap3DHDRToolStripMenuItem_Click(object sender, EventArgs e)
{
CubeMapFaceViewer3D viewer = new CubeMapFaceViewer3D();
viewer.HDREncoded = true;
viewer.LoadTexture(ActiveTexture);
viewer.Show();
}
private STColorDialog colorDlg; private STColorDialog colorDlg;
private bool dialogActive = false; private bool dialogActive = false;

View File

@ -15,6 +15,7 @@ namespace Toolbox.Library.Rendering
public class DrawableSkybox : AbstractGlDrawable public class DrawableSkybox : AbstractGlDrawable
{ {
public bool HDREncoded = false; public bool HDREncoded = false;
public float Gamma = 2.2f;
public bool ForceDisplay = false; public bool ForceDisplay = false;
@ -86,7 +87,8 @@ namespace Toolbox.Library.Rendering
defaultShaderProgram.SetMatrix4x4("rotView", ref rot); defaultShaderProgram.SetMatrix4x4("rotView", ref rot);
defaultShaderProgram.SetBoolToInt("hdrEncoded", HDREncoded); defaultShaderProgram.SetBoolToInt("hdrEncoded", HDREncoded);
defaultShaderProgram.SetFloat("gamma", Gamma);
if (CustomCubemap != null) if (CustomCubemap != null)
{ {
GL.ActiveTexture(TextureUnit.Texture0); GL.ActiveTexture(TextureUnit.Texture0);

View File

@ -5,6 +5,7 @@ in vec3 TexCoords;
uniform samplerCube environmentMap; uniform samplerCube environmentMap;
uniform int hdrEncoded; uniform int hdrEncoded;
uniform float gamma;
void main() void main()
{ {
@ -15,7 +16,7 @@ void main()
{ {
envColor = envTexture.rgb * pow(envTexture.a, 4) * 1024; envColor = envTexture.rgb * pow(envTexture.a, 4) * 1024;
envColor = envColor / (envColor + vec3(1.0)); envColor = envColor / (envColor + vec3(1.0));
envColor = pow(envColor, vec3(1.0/2.2)); envColor = pow(envColor, vec3(1.0/gamma));
} }
FragColor = vec4(envColor, 1.0); FragColor = vec4(envColor, 1.0);