Skip to content

Commit

Permalink
PR dexyfex#235 also enable light culling plane by flag
Browse files Browse the repository at this point in the history
  • Loading branch information
dexyfex committed Jul 18, 2024
1 parent 29530a0 commit d049e3a
Show file tree
Hide file tree
Showing 15 changed files with 1,297 additions and 949 deletions.
5 changes: 1 addition & 4 deletions CodeWalker.Core/GameFiles/Resources/Drawable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4505,11 +4505,8 @@ public Quaternion Orientation
case LightType.Point:
return Quaternion.Identity;
case LightType.Spot:
tx = Vector3.Normalize(Tangent);
ty = Vector3.Normalize(Vector3.Cross(Direction, Tangent));
break;
case LightType.Capsule:
tx = -Vector3.Normalize(Tangent);
tx = Vector3.Normalize(Tangent);
ty = Vector3.Normalize(Vector3.Cross(Direction, Tangent));
break;
}
Expand Down
8 changes: 4 additions & 4 deletions CodeWalker.Shaders/CodeWalker.Shaders.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,26 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
Expand Down
15 changes: 10 additions & 5 deletions CodeWalker.Shaders/LightPS.hlsli
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ cbuffer PSLightInstVars : register(b2)
uint InstType;
float3 InstCullingPlaneNormal;
float InstCullingPlaneOffset;
uint InstCullingPlaneEnable;
uint InstUnused1;
uint InstUnused2;
uint InstUnused3;
}


Expand Down Expand Up @@ -170,19 +174,20 @@ float4 DeferredLight(float3 camRel, float3 norm, float4 diffuse, float4 specular
{
float3 srpos = InstPosition - camRel; //light position relative to surface position
float ldist = length(srpos);
if (InstCullingPlaneEnable == 1)
{
float d = dot(srpos, InstCullingPlaneNormal) - InstCullingPlaneOffset;
if (d > 0) return 0;
}
if (InstType == 4)//capsule
{
float3 ext = InstDirection.xyz * (InstCapsuleExtent.y * 0.5);
float3 ext = InstDirection.xyz * (InstCapsuleExtent.x * 0.5);
float4 lsn = GetLineSegmentNearestPoint(srpos, ext, -ext);
ldist = lsn.w;
srpos.xyz = lsn.xyz;
}
if (ldist > InstFalloff) return 0;
if (ldist <= 0) return 0;

float d = dot(srpos, InstCullingPlaneNormal) - InstCullingPlaneOffset;
if (d > 0) return 0;

float4 rgbi = float4(InstColour, InstIntensity);
float3 lcol = rgbi.rgb;// * rgbi.a; // * 5.0f;
float3 ldir = srpos / ldist;
Expand Down
2 changes: 1 addition & 1 deletion CodeWalker.Shaders/LightVS.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ VS_Output main(float4 ipos : POSITION, uint iid : SV_InstanceID)
else if (InstType == 4)//capsule
{
float3 cpos = ipos.xyz * extent;
cpos.y += abs(InstCapsuleExtent.y) * (ipos.w - 0.5);
cpos.y += abs(InstCapsuleExtent.x) * (ipos.w - 0.5);
opos = (cpos.x * InstTangentX.xyz) + (cpos.y * InstDirection.xyz) + (cpos.z * InstTangentY.xyz);
}

Expand Down
67 changes: 67 additions & 0 deletions CodeWalker/Forms/ModelForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 42 additions & 1 deletion CodeWalker/Forms/ModelForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -623,10 +623,34 @@ private void Widget_OnScaleChange(Vector3 newscale, Vector3 oldscale)
//called during UpdateWidgets()
if (newscale == oldscale) return;
if (selectedLight == null || lightForm == null || !editingLights) return;
selectedLight.Falloff = newscale.Z;
if (selectedLight.Type == LightType.Capsule)
{
selectedLight.Falloff = newscale.X;
selectedLight.Extent = new Vector3(newscale.Z, newscale.Z, newscale.Z);
}
else if (selectedLight.Type == LightType.Spot)
{
selectedLight.Falloff = newscale.Z;
selectedLight.ConeInnerAngle = newscale.Y;
selectedLight.ConeOuterAngle = newscale.X;
}
else
{
selectedLight.Falloff = newscale.Z;
}
selectedLight.UpdateRenderable = true;
}

private void SetRotationSnapping(float degrees)
{
Widget.SnapAngleDegrees = degrees;
var cval = (float)SnapAngleUpDown.Value;
if (cval != degrees)
{
SnapAngleUpDown.Value = (decimal)degrees;
}

}

private void RenderSingleItem()
{
Expand Down Expand Up @@ -2030,6 +2054,10 @@ private void ModelForm_Load(object sender, EventArgs e)

private void ModelForm_MouseDown(object sender, MouseEventArgs e)
{
if (ActiveControl is NumericUpDown)
{
ActiveControl = null;
}
switch (e.Button)
{
case MouseButtons.Left: MouseLButtonDown = true; break;
Expand Down Expand Up @@ -2642,5 +2670,18 @@ private void ToolbarScaleButton_Click(object sender, EventArgs e)
{
SetWidgetMode(ToolbarScaleButton.Checked ? WidgetMode.Default : WidgetMode.Scale);
}

private void OptionsShowOutlinesCheckBox_CheckedChanged(object sender, EventArgs e)
{
showLightGizmos = OptionsShowOutlinesCheckBox.Checked;
}

private void SnapAngleUpDown_ValueChanged(object sender, EventArgs e)
{
if (Widget != null)
{
SetRotationSnapping((float)SnapAngleUpDown.Value);
}
}
}
}
20 changes: 10 additions & 10 deletions CodeWalker/Forms/ModelForm.resx
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@
<data name="ToolbarMaterialEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVDhPbVPbTlpREOUL+jn+gIn3xHiPEW8YNHIIKiJq
rKAiQUtVij2aoqA0Ira1SSWRi1a8Ja0Wqla08aHVhtL4YH0wRh/64OqZAXuzk+xkZ+9Za9as2Vv2b1xd
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVDhPbVNtL5thFO4v2M/xByTeE/EeUW+VEn2aoqqI
aVFNWYeu9pCVli6qtlkyTfSFqbdkY+0wZfFhY+m6+GASifBhH1x7zmntzU5yJ3fu+1zXuc517lv2b1xd
XaVdX187Li8vTy4uLn7Qoj2d0V0q7W7c3NzckxI859/PEYlEsLjox5x3DlNT03BPuxEIBHF6egrKodwU
LBl0IFXYPjo6YuDr5RWsrIQR8AcxP/8STqcLw8Mj6Ovrw+bGJij3LxJiPTz8CN+CDxvrm9jd2cOHvX1s
bW0jFAzBKykZGxtHf78ZOp0O4XCYldyC087OzlhuMBBCNBLFyfEXJBLfEIsdYG1tnVU4njgwYBmAXq+H
Expand All @@ -141,8 +141,8 @@
MJvNMBgMbJJtxAbxsciSR+2jsFofSuMzob29A4IgoKqqCoWFhaipqUm2QEZQj83Nzejs6ITRYORqtHp7
etHVdZ9Hp1KpGFRSUoLc3FzY7fakiTQKGglJa2xsRJOmCS0tWmi1WiYVBDWUSiVXJnBeXh6ys7MRj8eT
Y0y9BU8oFEJFRQUbVFurgEKh4IqV8kqUlZWhoKAAOTk5SE9Ph8/n+/2QKG6fst/vR2lpKYqKinhRr2QW
Sc7IyEBWVhaDKfe//4FYSZooilydAJmZmZDL5dxzSvbdz/RnUF9kDjlMY6JFezqju1RaKmSyn++nhCv9
J3dAAAAAAElFTkSuQmCC
Sc7IyEBWVhaDKfe//4FYSZooilydAJmZmZDL5dxzSvbdz/RnUF9kDjlMY6JFezqju1RaKmSyn77bhBMB
OQGrAAAAAElFTkSuQmCC
</value>
</data>
<data name="ToolbarTextureEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
Expand All @@ -157,12 +157,12 @@
<data name="ToolbarLightEditorButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEeSURBVDhPnZJNboQwDIU5whyhR+gRepQepQv2XbPqUXqE
bvgRsKgQQggEZMHfMpOPJhmUMozaJ1lRbL9nx47nQghxmef5bVkWMQyD7LpOcqq7xK/TjgFZJX61bSuT
JJFhGFqLokjWdY3Ih07/DSpA3hNd0yLHndC2W9k1OiFPU26YpumZt5rEvu+lepI17pCJMZd1XV809Qc4
9gKQyrKUWZbJoigeCwAmbZLiON5E0jTdTu74iY/jiO+iaTcogXeGtO/CCBjf6SZQVcHPqqpsMgJN02x3
/Kz5sLoBQdXid57ntirGdpj+KdlADejV/Q+n+3dBFQbq2uHk7wGC7/vW/iXg2l8FRBAEW3VOLfCkw4/B
11brE/xENZM71T3vCpBKAD1CW/uhAAAAAElFTkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEeSURBVDhPnZJJboQwEEU5Qh8hR8gRcpQcJQv2WbPKUXKE
bBgELCKEEIMAL5iWbj9i08ihaSVfKlk1/F/lsh0bQojLNE1v8zyLvu9l27aSU/mSuC47BmRV+NU0jYyi
SPq+v1kQBLIsS0Q+dPlv0AHynmibFjmehLHtzrYxCXWacsM4js/c1RR2XSfVlTbDh0yOvSzL8qKpPyCw
F4CU57lMkkRmWfZYALBpUxSG4SoSx/F64hMnPwwDsYum3aAE3lnSfgojYGKnL4GqSn4WRbEVI1DX9eoT
55kPuxuQVCN+p2m6dcV4HbZ/SjZQC3q1/8Pp+9ugCwu17XDz9wDBdd3N/iVg218FhOd5a3dOLfCk04/B
166qSvAT1U7udHecK4/hADrwkPT0AAAAAElFTkSuQmCC
</value>
</data>
<data name="ToolbarMoveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
Expand Down
Loading

0 comments on commit d049e3a

Please sign in to comment.