Skip to content

Commit d049e3a

Browse files
committed
PR #235 also enable light culling plane by flag
1 parent 29530a0 commit d049e3a

15 files changed

+1297
-949
lines changed

CodeWalker.Core/GameFiles/Resources/Drawable.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -4505,11 +4505,8 @@ public Quaternion Orientation
45054505
case LightType.Point:
45064506
return Quaternion.Identity;
45074507
case LightType.Spot:
4508-
tx = Vector3.Normalize(Tangent);
4509-
ty = Vector3.Normalize(Vector3.Cross(Direction, Tangent));
4510-
break;
45114508
case LightType.Capsule:
4512-
tx = -Vector3.Normalize(Tangent);
4509+
tx = Vector3.Normalize(Tangent);
45134510
ty = Vector3.Normalize(Vector3.Cross(Direction, Tangent));
45144511
break;
45154512
}

CodeWalker.Shaders/CodeWalker.Shaders.vcxproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,26 @@
2727
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
2828
<ConfigurationType>Application</ConfigurationType>
2929
<UseDebugLibraries>true</UseDebugLibraries>
30-
<PlatformToolset>v142</PlatformToolset>
30+
<PlatformToolset>v143</PlatformToolset>
3131
<CharacterSet>MultiByte</CharacterSet>
3232
</PropertyGroup>
3333
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
3434
<ConfigurationType>Application</ConfigurationType>
3535
<UseDebugLibraries>false</UseDebugLibraries>
36-
<PlatformToolset>v142</PlatformToolset>
36+
<PlatformToolset>v143</PlatformToolset>
3737
<WholeProgramOptimization>true</WholeProgramOptimization>
3838
<CharacterSet>MultiByte</CharacterSet>
3939
</PropertyGroup>
4040
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
4141
<ConfigurationType>Application</ConfigurationType>
4242
<UseDebugLibraries>true</UseDebugLibraries>
43-
<PlatformToolset>v142</PlatformToolset>
43+
<PlatformToolset>v143</PlatformToolset>
4444
<CharacterSet>MultiByte</CharacterSet>
4545
</PropertyGroup>
4646
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
4747
<ConfigurationType>Application</ConfigurationType>
4848
<UseDebugLibraries>false</UseDebugLibraries>
49-
<PlatformToolset>v142</PlatformToolset>
49+
<PlatformToolset>v143</PlatformToolset>
5050
<WholeProgramOptimization>true</WholeProgramOptimization>
5151
<CharacterSet>MultiByte</CharacterSet>
5252
</PropertyGroup>

CodeWalker.Shaders/LightPS.hlsli

+10-5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ cbuffer PSLightInstVars : register(b2)
3838
uint InstType;
3939
float3 InstCullingPlaneNormal;
4040
float InstCullingPlaneOffset;
41+
uint InstCullingPlaneEnable;
42+
uint InstUnused1;
43+
uint InstUnused2;
44+
uint InstUnused3;
4145
}
4246

4347

@@ -170,19 +174,20 @@ float4 DeferredLight(float3 camRel, float3 norm, float4 diffuse, float4 specular
170174
{
171175
float3 srpos = InstPosition - camRel; //light position relative to surface position
172176
float ldist = length(srpos);
177+
if (InstCullingPlaneEnable == 1)
178+
{
179+
float d = dot(srpos, InstCullingPlaneNormal) - InstCullingPlaneOffset;
180+
if (d > 0) return 0;
181+
}
173182
if (InstType == 4)//capsule
174183
{
175-
float3 ext = InstDirection.xyz * (InstCapsuleExtent.y * 0.5);
184+
float3 ext = InstDirection.xyz * (InstCapsuleExtent.x * 0.5);
176185
float4 lsn = GetLineSegmentNearestPoint(srpos, ext, -ext);
177186
ldist = lsn.w;
178187
srpos.xyz = lsn.xyz;
179188
}
180189
if (ldist > InstFalloff) return 0;
181190
if (ldist <= 0) return 0;
182-
183-
float d = dot(srpos, InstCullingPlaneNormal) - InstCullingPlaneOffset;
184-
if (d > 0) return 0;
185-
186191
float4 rgbi = float4(InstColour, InstIntensity);
187192
float3 lcol = rgbi.rgb;// * rgbi.a; // * 5.0f;
188193
float3 ldir = srpos / ldist;

CodeWalker.Shaders/LightVS.hlsl

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ VS_Output main(float4 ipos : POSITION, uint iid : SV_InstanceID)
5656
else if (InstType == 4)//capsule
5757
{
5858
float3 cpos = ipos.xyz * extent;
59-
cpos.y += abs(InstCapsuleExtent.y) * (ipos.w - 0.5);
59+
cpos.y += abs(InstCapsuleExtent.x) * (ipos.w - 0.5);
6060
opos = (cpos.x * InstTangentX.xyz) + (cpos.y * InstDirection.xyz) + (cpos.z * InstTangentY.xyz);
6161
}
6262

CodeWalker/Forms/ModelForm.Designer.cs

+67
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeWalker/Forms/ModelForm.cs

+42-1
Original file line numberDiff line numberDiff line change
@@ -623,10 +623,34 @@ private void Widget_OnScaleChange(Vector3 newscale, Vector3 oldscale)
623623
//called during UpdateWidgets()
624624
if (newscale == oldscale) return;
625625
if (selectedLight == null || lightForm == null || !editingLights) return;
626-
selectedLight.Falloff = newscale.Z;
626+
if (selectedLight.Type == LightType.Capsule)
627+
{
628+
selectedLight.Falloff = newscale.X;
629+
selectedLight.Extent = new Vector3(newscale.Z, newscale.Z, newscale.Z);
630+
}
631+
else if (selectedLight.Type == LightType.Spot)
632+
{
633+
selectedLight.Falloff = newscale.Z;
634+
selectedLight.ConeInnerAngle = newscale.Y;
635+
selectedLight.ConeOuterAngle = newscale.X;
636+
}
637+
else
638+
{
639+
selectedLight.Falloff = newscale.Z;
640+
}
627641
selectedLight.UpdateRenderable = true;
628642
}
629643

644+
private void SetRotationSnapping(float degrees)
645+
{
646+
Widget.SnapAngleDegrees = degrees;
647+
var cval = (float)SnapAngleUpDown.Value;
648+
if (cval != degrees)
649+
{
650+
SnapAngleUpDown.Value = (decimal)degrees;
651+
}
652+
653+
}
630654

631655
private void RenderSingleItem()
632656
{
@@ -2030,6 +2054,10 @@ private void ModelForm_Load(object sender, EventArgs e)
20302054

20312055
private void ModelForm_MouseDown(object sender, MouseEventArgs e)
20322056
{
2057+
if (ActiveControl is NumericUpDown)
2058+
{
2059+
ActiveControl = null;
2060+
}
20332061
switch (e.Button)
20342062
{
20352063
case MouseButtons.Left: MouseLButtonDown = true; break;
@@ -2642,5 +2670,18 @@ private void ToolbarScaleButton_Click(object sender, EventArgs e)
26422670
{
26432671
SetWidgetMode(ToolbarScaleButton.Checked ? WidgetMode.Default : WidgetMode.Scale);
26442672
}
2673+
2674+
private void OptionsShowOutlinesCheckBox_CheckedChanged(object sender, EventArgs e)
2675+
{
2676+
showLightGizmos = OptionsShowOutlinesCheckBox.Checked;
2677+
}
2678+
2679+
private void SnapAngleUpDown_ValueChanged(object sender, EventArgs e)
2680+
{
2681+
if (Widget != null)
2682+
{
2683+
SetRotationSnapping((float)SnapAngleUpDown.Value);
2684+
}
2685+
}
26452686
}
26462687
}

CodeWalker/Forms/ModelForm.resx

+10-10
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@
130130
<data name="ToolbarMaterialEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
131131
<value>
132132
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
133-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVDhPbVPbTlpREOUL+jn+gIn3xHiPEW8YNHIIKiJq
134-
rKAiQUtVij2aoqA0Ira1SSWRi1a8Ja0Wqla08aHVhtL4YH0wRh/64OqZAXuzk+xkZ+9Za9as2Vv2b1xd
133+
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVDhPbVNtL5thFO4v2M/xByTeE/EeUW+VEn2aoqqI
134+
aVFNWYeu9pCVli6qtlkyTfSFqbdkY+0wZfFhY+m6+GASifBhH1x7zmntzU5yJ3fu+1zXuc517lv2b1xd
135135
XaVdX187Li8vTy4uLn7Qoj2d0V0q7W7c3NzckxI859/PEYlEsLjox5x3DlNT03BPuxEIBHF6egrKodwU
136136
LBl0IFXYPjo6YuDr5RWsrIQR8AcxP/8STqcLw8Mj6Ovrw+bGJij3LxJiPTz8CN+CDxvrm9jd2cOHvX1s
137137
bW0jFAzBKykZGxtHf78ZOp0O4XCYldyC087OzlhuMBBCNBLFyfEXJBLfEIsdYG1tnVU4njgwYBmAXq+H
@@ -141,8 +141,8 @@
141141
MJvNMBgMbJJtxAbxsciSR+2jsFofSuMzob29A4IgoKqqCoWFhaipqUm2QEZQj83Nzejs6ITRYORqtHp7
142142
etHVdZ9Hp1KpGFRSUoLc3FzY7fakiTQKGglJa2xsRJOmCS0tWmi1WiYVBDWUSiVXJnBeXh6ys7MRj8eT
143143
Y0y9BU8oFEJFRQUbVFurgEKh4IqV8kqUlZWhoKAAOTk5SE9Ph8/n+/2QKG6fst/vR2lpKYqKinhRr2QW
144-
Sc7IyEBWVhaDKfe//4FYSZooilydAJmZmZDL5dxzSvbdz/RnUF9kDjlMY6JFezqju1RaKmSyn++nhCv9
145-
J3dAAAAAAElFTkSuQmCC
144+
Sc7IyEBWVhaDKfe//4FYSZooilydAJmZmZDL5dxzSvbdz/RnUF9kDjlMY6JFezqju1RaKmSyn77bhBMB
145+
OQGrAAAAAElFTkSuQmCC
146146
</value>
147147
</data>
148148
<data name="ToolbarTextureEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -157,12 +157,12 @@
157157
<data name="ToolbarLightEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
158158
<value>
159159
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
160-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEeSURBVDhPnZJNboQwDIU5whyhR+gRepQepQv2XbPqUXqE
161-
bvgRsKgQQggEZMHfMpOPJhmUMozaJ1lRbL9nx47nQghxmef5bVkWMQyD7LpOcqq7xK/TjgFZJX61bSuT
162-
JJFhGFqLokjWdY3Ih07/DSpA3hNd0yLHndC2W9k1OiFPU26YpumZt5rEvu+lepI17pCJMZd1XV809Qc4
163-
9gKQyrKUWZbJoigeCwAmbZLiON5E0jTdTu74iY/jiO+iaTcogXeGtO/CCBjf6SZQVcHPqqpsMgJN02x3
164-
/Kz5sLoBQdXid57ntirGdpj+KdlADejV/Q+n+3dBFQbq2uHk7wGC7/vW/iXg2l8FRBAEW3VOLfCkw4/B
165-
11brE/xENZM71T3vCpBKAD1CW/uhAAAAAElFTkSuQmCC
160+
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEeSURBVDhPnZJJboQwEEU5Qh8hR8gRcpQcJQv2WbPKUXKE
161+
bBgELCKEEIMAL5iWbj9i08ihaSVfKlk1/F/lsh0bQojLNE1v8zyLvu9l27aSU/mSuC47BmRV+NU0jYyi
162+
SPq+v1kQBLIsS0Q+dPlv0AHynmibFjmehLHtzrYxCXWacsM4js/c1RR2XSfVlTbDh0yOvSzL8qKpPyCw
163+
F4CU57lMkkRmWfZYALBpUxSG4SoSx/F64hMnPwwDsYum3aAE3lnSfgojYGKnL4GqSn4WRbEVI1DX9eoT
164+
55kPuxuQVCN+p2m6dcV4HbZ/SjZQC3q1/8Pp+9ugCwu17XDz9wDBdd3N/iVg218FhOd5a3dOLfCk04/B
165+
166qSvAT1U7udHecK4/hADrwkPT0AAAAAElFTkSuQmCC
166166
</value>
167167
</data>
168168
<data name="ToolbarMoveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

0 commit comments

Comments
 (0)