Skip to content

Commit 79ef0be

Browse files
CopilotLuticaCANARD
andcommitted
Add pixelate center control, enhance posterize/color quantization, implement NormalMapGenerator, add mode-specific parameters
Co-authored-by: LuticaCANARD <80238084+LuticaCANARD@users.noreply.github.com>
1 parent 6f3babe commit 79ef0be

11 files changed

Lines changed: 419 additions & 17 deletions

File tree

Packages/luticalab.core/Languages/English.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,14 @@
149149
"quick_shader_select": "Quick Shader Selection",
150150
"select_shader": "Select Shader",
151151
"oilpaint_warning": "⚠️ Oil Paint effect is computationally expensive. Adjust parameters first, then click Apply to render. Real-time preview is disabled to prevent performance issues.",
152-
"apply_oilpaint": "Apply Oil Paint Effect"
152+
"apply_oilpaint": "Apply Oil Paint Effect",
153+
154+
"normal_map_generator_title": "Normal Map Generator",
155+
"normal_map_description": "Generate normal maps from height/grayscale textures. The luminance of the input image is used as height information to calculate surface normals.",
156+
"normal_map_settings": "Normal Map Settings",
157+
"normal_strength": "Normal Strength",
158+
"height_scale": "Height Scale",
159+
"normal_map_info": "Converts height map (grayscale) to normal map for 3D surface details."
153160
}
154161

155162
}

Packages/luticalab.core/Languages/Japanese.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,14 @@
152152
"quick_shader_select": "クイックシェーダー選択",
153153
"select_shader": "シェーダーを選択",
154154
"oilpaint_warning": "⚠️ オイルペイント効果は計算負荷が高いです。まずパラメータを調整してから、適用ボタンをクリックしてレンダリングしてください。パフォーマンスの問題を防ぐため、リアルタイムプレビューは無効になっています。",
155-
"apply_oilpaint": "オイルペイント効果を適用"
155+
"apply_oilpaint": "オイルペイント効果を適用",
156+
157+
"normal_map_generator_title": "ノーマルマップジェネレーター",
158+
"normal_map_description": "高さ/グレースケールテクスチャからノーマルマップを生成します。入力画像の輝度を高さ情報として使用し、サーフェスノーマルを計算します。",
159+
"normal_map_settings": "ノーマルマップ設定",
160+
"normal_strength": "ノーマル強度",
161+
"height_scale": "高さスケール",
162+
"normal_map_info": "ハイトマップ(グレースケール)を3Dサーフェスディテール用のノーマルマップに変換します。"
156163
}
157164

158165
}

Packages/luticalab.core/Languages/Korean.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,13 @@
148148
"quick_shader_select": "빠른 셰이더 선택",
149149
"select_shader": "셰이더 선택",
150150
"oilpaint_warning": "⚠️ 오일 페인트 효과는 계산 부하가 큽니다. 먼저 파라미터를 조정한 다음 적용 버튼을 클릭하여 렌더링하세요. 성능 문제를 방지하기 위해 실시간 미리보기가 비활성화되었습니다.",
151-
"apply_oilpaint": "오일 페인트 효과 적용"
151+
"apply_oilpaint": "오일 페인트 효과 적용",
152+
153+
"normal_map_generator_title": "노말 맵 생성기",
154+
"normal_map_description": "높이/그레이스케일 텍스처에서 노말 맵을 생성합니다. 입력 이미지의 휘도를 높이 정보로 사용하여 표면 노말을 계산합니다.",
155+
"normal_map_settings": "노말 맵 설정",
156+
"normal_strength": "노말 강도",
157+
"height_scale": "높이 스케일",
158+
"normal_map_info": "하이트 맵(그레이스케일)을 3D 표면 디테일용 노말 맵으로 변환합니다."
152159
}
153160
}

Packages/luticalab.texturecocktail/Editor/Content/ArtisticEffects.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,18 @@ private void ShowEffectSpecificParameters()
129129
pixelSize = EditorGUILayout.Slider("Pixel Size", pixelSize, 1, 100);
130130
material.SetFloat("_PixelSize", pixelSize);
131131
}
132+
if (material.HasProperty("_PixelCenterX"))
133+
{
134+
float centerX = material.GetFloat("_PixelCenterX");
135+
centerX = EditorGUILayout.Slider("Center X", centerX, 0, 1);
136+
material.SetFloat("_PixelCenterX", centerX);
137+
}
138+
if (material.HasProperty("_PixelCenterY"))
139+
{
140+
float centerY = material.GetFloat("_PixelCenterY");
141+
centerY = EditorGUILayout.Slider("Center Y", centerY, 0, 1);
142+
material.SetFloat("_PixelCenterY", centerY);
143+
}
132144
break;
133145

134146
case ArtisticEffect.Posterize:

Packages/luticalab.texturecocktail/Editor/Content/ColorCorrection.cs

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public override void OnGUI()
8989
LanguageDisplayer.Instance.GetTranslatedLanguage("basic_color_settings"));
9090
if (_showBasicSettings)
9191
{
92-
baseWindow.ShowShaderInfo();
92+
ShowModeSpecificParameters();
9393
}
9494
EditorGUILayout.EndFoldoutHeaderGroup();
9595

@@ -117,6 +117,101 @@ public override void OnGUI()
117117
GUILayout.EndScrollView();
118118
}
119119

120+
private void ShowModeSpecificParameters()
121+
{
122+
var material = GetMaterial();
123+
if (material == null)
124+
{
125+
baseWindow.ShowShaderInfo();
126+
return;
127+
}
128+
129+
EditorGUI.BeginChangeCheck();
130+
131+
// Always show temperature and tint
132+
if (material.HasProperty("_Temperature"))
133+
{
134+
float temp = material.GetFloat("_Temperature");
135+
temp = EditorGUILayout.Slider("Temperature", temp, -1, 1);
136+
material.SetFloat("_Temperature", temp);
137+
}
138+
139+
if (material.HasProperty("_Tint"))
140+
{
141+
float tint = material.GetFloat("_Tint");
142+
tint = EditorGUILayout.Slider("Tint", tint, -1, 1);
143+
material.SetFloat("_Tint", tint);
144+
}
145+
146+
if (material.HasProperty("_Exposure"))
147+
{
148+
float exposure = material.GetFloat("_Exposure");
149+
exposure = EditorGUILayout.Slider("Exposure", exposure, -3, 3);
150+
material.SetFloat("_Exposure", exposure);
151+
}
152+
153+
// Mode-specific parameters
154+
switch (gradingMode)
155+
{
156+
case ColorGradingMode.Basic:
157+
// Basic mode - only temp/tint/exposure (already shown above)
158+
break;
159+
160+
case ColorGradingMode.ColorGrading:
161+
// Show Lift/Gamma/Gain controls
162+
if (material.HasProperty("_Lift"))
163+
{
164+
Color lift = material.GetColor("_Lift");
165+
lift = EditorGUILayout.ColorField("Lift", lift);
166+
material.SetColor("_Lift", lift);
167+
}
168+
169+
if (material.HasProperty("_Gamma"))
170+
{
171+
Color gamma = material.GetColor("_Gamma");
172+
gamma = EditorGUILayout.ColorField("Gamma", gamma);
173+
material.SetColor("_Gamma", gamma);
174+
}
175+
176+
if (material.HasProperty("_Gain"))
177+
{
178+
Color gain = material.GetColor("_Gain");
179+
gain = EditorGUILayout.ColorField("Gain", gain);
180+
material.SetColor("_Gain", gain);
181+
}
182+
break;
183+
184+
case ColorGradingMode.SplitToning:
185+
// Show split toning controls
186+
if (material.HasProperty("_ShadowColor"))
187+
{
188+
Color shadowColor = material.GetColor("_ShadowColor");
189+
shadowColor = EditorGUILayout.ColorField("Shadow Color", shadowColor);
190+
material.SetColor("_ShadowColor", shadowColor);
191+
}
192+
193+
if (material.HasProperty("_HighlightColor"))
194+
{
195+
Color highlightColor = material.GetColor("_HighlightColor");
196+
highlightColor = EditorGUILayout.ColorField("Highlight Color", highlightColor);
197+
material.SetColor("_HighlightColor", highlightColor);
198+
}
199+
200+
if (material.HasProperty("_Balance"))
201+
{
202+
float balance = material.GetFloat("_Balance");
203+
balance = EditorGUILayout.Slider("Balance", balance, -1, 1);
204+
material.SetFloat("_Balance", balance);
205+
}
206+
break;
207+
}
208+
209+
if (EditorGUI.EndChangeCheck())
210+
{
211+
baseWindow.OnShaderValueChange();
212+
}
213+
}
214+
120215
private string GetModeDescription()
121216
{
122217
switch (gradingMode)

Packages/luticalab.texturecocktail/Editor/Content/FastImageConverter.cs

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public override void OnGUI()
103103
LanguageDisplayer.Instance.GetTranslatedLanguage("basic_adjustments"));
104104
if (_showBasicAdjustments)
105105
{
106-
baseWindow.ShowShaderInfo();
106+
ShowFilterSpecificParameters();
107107
}
108108
EditorGUILayout.EndFoldoutHeaderGroup();
109109

@@ -131,6 +131,78 @@ public override void OnGUI()
131131
GUILayout.EndScrollView();
132132
}
133133

134+
private void ShowFilterSpecificParameters()
135+
{
136+
var material = GetMaterial();
137+
if (material == null)
138+
{
139+
baseWindow.ShowShaderInfo();
140+
return;
141+
}
142+
143+
EditorGUI.BeginChangeCheck();
144+
145+
// Always show basic image adjustment parameters
146+
if (material.HasProperty("_Brightness"))
147+
{
148+
float brightness = material.GetFloat("_Brightness");
149+
brightness = EditorGUILayout.Slider("Brightness", brightness, -1, 1);
150+
material.SetFloat("_Brightness", brightness);
151+
}
152+
153+
if (material.HasProperty("_Contrast"))
154+
{
155+
float contrast = material.GetFloat("_Contrast");
156+
contrast = EditorGUILayout.Slider("Contrast", contrast, 0, 2);
157+
material.SetFloat("_Contrast", contrast);
158+
}
159+
160+
if (material.HasProperty("_Saturation"))
161+
{
162+
float saturation = material.GetFloat("_Saturation");
163+
saturation = EditorGUILayout.Slider("Saturation", saturation, 0, 2);
164+
material.SetFloat("_Saturation", saturation);
165+
}
166+
167+
if (material.HasProperty("_Gamma"))
168+
{
169+
float gamma = material.GetFloat("_Gamma");
170+
gamma = EditorGUILayout.Slider("Gamma", gamma, 0.1f, 3);
171+
material.SetFloat("_Gamma", gamma);
172+
}
173+
174+
// Show filter-specific parameters based on filter mode
175+
switch (filterMode)
176+
{
177+
case FilterMode.Blur:
178+
if (material.HasProperty("_BlurSize"))
179+
{
180+
float blurSize = material.GetFloat("_BlurSize");
181+
blurSize = EditorGUILayout.Slider("Blur Size", blurSize, 0, 5);
182+
material.SetFloat("_BlurSize", blurSize);
183+
}
184+
break;
185+
186+
case FilterMode.Sharpen:
187+
if (material.HasProperty("_SharpenStrength"))
188+
{
189+
float sharpen = material.GetFloat("_SharpenStrength");
190+
sharpen = EditorGUILayout.Slider("Sharpen Strength", sharpen, 0, 2);
191+
material.SetFloat("_SharpenStrength", sharpen);
192+
}
193+
break;
194+
195+
case FilterMode.EdgeDetection:
196+
// Edge detection doesn't have additional parameters
197+
break;
198+
}
199+
200+
if (EditorGUI.EndChangeCheck())
201+
{
202+
baseWindow.OnShaderValueChange();
203+
}
204+
}
205+
134206
private void ApplyPreset(string presetName)
135207
{
136208
if (!_presets.ContainsKey(presetName))

Packages/luticalab.texturecocktail/Editor/Content/FeatureExtractor.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,18 +183,57 @@ private string GetModeDescription()
183183

184184
private void ShowEdgeDetectionSettings()
185185
{
186+
var material = GetMaterial();
187+
if (material == null) return;
188+
189+
EditorGUI.BeginChangeCheck();
190+
186191
GUILayout.Label(LanguageDisplayer.Instance.GetTranslatedLanguage("edge_detection_settings"));
192+
193+
if (material.HasProperty("_EdgeSensitivity"))
194+
{
195+
float sensitivity = material.GetFloat("_EdgeSensitivity");
196+
sensitivity = EditorGUILayout.Slider("Edge Sensitivity", sensitivity, 0, 1);
197+
material.SetFloat("_EdgeSensitivity", sensitivity);
198+
}
199+
187200
EditorGUILayout.HelpBox(LanguageDisplayer.Instance.GetTranslatedLanguage("edge_sensitivity_help"), MessageType.None);
201+
202+
if (EditorGUI.EndChangeCheck())
203+
{
204+
baseWindow.OnShaderValueChange();
205+
}
188206
}
189207

190208
private void ShowColorSegmentationSettings()
191209
{
210+
var material = GetMaterial();
211+
if (material == null) return;
212+
213+
EditorGUI.BeginChangeCheck();
214+
192215
GUILayout.Label(LanguageDisplayer.Instance.GetTranslatedLanguage("color_segmentation_settings"));
216+
217+
if (material.HasProperty("_ColorThreshold"))
218+
{
219+
float threshold = material.GetFloat("_ColorThreshold");
220+
threshold = EditorGUILayout.Slider("Quantization Level", threshold, 0, 1);
221+
material.SetFloat("_ColorThreshold", threshold);
222+
}
223+
193224
EditorGUILayout.HelpBox(LanguageDisplayer.Instance.GetTranslatedLanguage("color_threshold_help"), MessageType.None);
225+
226+
if (EditorGUI.EndChangeCheck())
227+
{
228+
baseWindow.OnShaderValueChange();
229+
}
194230
}
195231

196232
private void ShowHistogramSettings()
197233
{
234+
var material = GetMaterial();
235+
if (material == null) return;
236+
198237
GUILayout.Label(LanguageDisplayer.Instance.GetTranslatedLanguage("histogram_settings"));
199238
EditorGUILayout.HelpBox(LanguageDisplayer.Instance.GetTranslatedLanguage("histogram_help"), MessageType.None);
200239
}

0 commit comments

Comments
 (0)