Skip to content

Commit bf1bcb0

Browse files
committed
Code clean-up.
1 parent 6af74dc commit bf1bcb0

File tree

3 files changed

+39
-19
lines changed

3 files changed

+39
-19
lines changed

Nu/Nu/OpenGL/OpenGL.SpriteBatch.fs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ module SpriteBatch =
4444
type [<ReferenceEquality>] SpriteBatchEnv =
4545
private
4646
{ mutable SpriteIndex : int
47-
mutable ViewProjectionAbsolute : Matrix4x4
48-
mutable ViewProjectionRelative : Matrix4x4
49-
mutable ViewProjectionClip : Matrix4x4
47+
mutable ViewProjection2dAbsolute : Matrix4x4
48+
mutable ViewProjection2dRelative : Matrix4x4
49+
mutable ViewProjectionClipAbsolute : Matrix4x4
50+
mutable ViewProjectionClipRelative : Matrix4x4
5051
PerimetersUniform : int
5152
TexCoordsesUniform : int
5253
PivotsUniform : int
@@ -99,7 +100,7 @@ module SpriteBatch =
99100
Gl.Enable EnableCap.CullFace
100101
match env.State.ClipOpt with
101102
| ValueSome clip ->
102-
let viewProjection = if env.State.Absolute then env.ViewProjectionAbsolute else env.ViewProjectionClip
103+
let viewProjection = if env.State.Absolute then env.ViewProjectionClipAbsolute else env.ViewProjectionClipRelative
103104
let minClip = Vector4.Transform (Vector4 (clip.Min, 0.0f, 1.0f), viewProjection)
104105
let minNdc = minClip / minClip.W * single viewport.DisplayScalar
105106
let minScissor = (minNdc.V2 + v2One) * 0.5f * viewport.Bounds.Size.V2
@@ -125,7 +126,7 @@ module SpriteBatch =
125126
Gl.Uniform2 (env.PivotsUniform, env.Pivots)
126127
Gl.Uniform1 (env.RotationsUniform, env.Rotations)
127128
Gl.Uniform4 (env.ColorsUniform, env.Colors)
128-
Gl.UniformMatrix4 (env.ViewProjectionUniform, false, if env.State.Absolute then env.ViewProjectionAbsolute.ToArray () else env.ViewProjectionRelative.ToArray ())
129+
Gl.UniformMatrix4 (env.ViewProjectionUniform, false, if env.State.Absolute then env.ViewProjection2dAbsolute.ToArray () else env.ViewProjection2dRelative.ToArray ())
129130
Gl.Uniform1 (env.TexUniform, 0)
130131
Gl.ActiveTexture TextureUnit.Texture0
131132
Gl.BindTexture (TextureTarget.Texture2d, texture.TextureId)
@@ -163,13 +164,15 @@ module SpriteBatch =
163164

164165
/// Beging a new sprite batch frame3.
165166
let BeginSpriteBatchFrame
166-
(viewProjectionAbsolute : Matrix4x4 inref,
167-
viewProjectionRelative : Matrix4x4 inref,
168-
viewProjectionClip : Matrix4x4 inref,
167+
(viewProjection2dAbsolute : Matrix4x4 inref,
168+
viewProjection2dRelative : Matrix4x4 inref,
169+
viewProjectionClipAbsolute : Matrix4x4 inref,
170+
viewProjectionClipRelative : Matrix4x4 inref,
169171
env) =
170-
env.ViewProjectionAbsolute <- viewProjectionAbsolute
171-
env.ViewProjectionRelative <- viewProjectionRelative
172-
env.ViewProjectionClip <- viewProjectionClip
172+
env.ViewProjection2dAbsolute <- viewProjection2dAbsolute
173+
env.ViewProjection2dRelative <- viewProjection2dRelative
174+
env.ViewProjectionClipAbsolute <- viewProjectionClipAbsolute
175+
env.ViewProjectionClipRelative <- viewProjectionClipRelative
173176
BeginSpriteBatch SpriteBatchState.defaultState env
174177

175178
/// End the current sprite batch frame, if any.
@@ -239,7 +242,9 @@ module SpriteBatch =
239242
Hl.Assert ()
240243

241244
// create env
242-
{ SpriteIndex = 0; ViewProjectionAbsolute = m4Identity; ViewProjectionRelative = m4Identity; ViewProjectionClip = m4Identity
245+
{ SpriteIndex = 0
246+
ViewProjection2dAbsolute = m4Identity; ViewProjection2dRelative = m4Identity
247+
ViewProjectionClipAbsolute = m4Identity; ViewProjectionClipRelative = m4Identity
243248
PerimetersUniform = perimetersUniform; PivotsUniform = pivotsUniform; RotationsUniform = rotationsUniform
244249
TexCoordsesUniform = texCoordsesUniform; ColorsUniform = colorsUniform; ViewProjectionUniform = viewProjectionUniform
245250
TexUniform = texUniform; Shader = shader

Nu/Nu/Render/Renderer2d.fs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ type [<ReferenceEquality>] GlRenderer2d =
677677
let position = perimeter.Min.V2 * virtualScalar
678678
let size = perimeter.Size.V2 * virtualScalar
679679
let viewProjection2d = Viewport.getViewProjection2d absolute eyeCenter eyeSize renderer.Viewport
680-
let viewProjectionClip = Viewport.getViewProjectionClip eyeCenter eyeSize renderer.Viewport
680+
let viewProjectionClip = Viewport.getViewProjectionClip absolute eyeCenter eyeSize renderer.Viewport
681681
match GlRenderer2d.tryGetRenderAsset font renderer with
682682
| ValueSome renderAsset ->
683683
match renderAsset with
@@ -849,8 +849,9 @@ type [<ReferenceEquality>] GlRenderer2d =
849849
// begin sprite batch frame
850850
let viewProjectionAbsolute = Viewport.getViewProjection2d true eyeCenter eyeSize renderer.Viewport
851851
let viewProjectionRelative = Viewport.getViewProjection2d false eyeCenter eyeSize renderer.Viewport
852-
let viewProjectionClip = Viewport.getViewProjectionClip eyeCenter eyeSize viewport
853-
OpenGL.SpriteBatch.BeginSpriteBatchFrame (&viewProjectionAbsolute, &viewProjectionRelative, &viewProjectionClip, renderer.SpriteBatchEnv)
852+
let viewProjectionClipAbsolute = Viewport.getViewProjectionClip true eyeCenter eyeSize viewport
853+
let viewProjectionClipRelative = Viewport.getViewProjectionClip false eyeCenter eyeSize viewport
854+
OpenGL.SpriteBatch.BeginSpriteBatchFrame (&viewProjectionAbsolute, &viewProjectionRelative, &viewProjectionClipAbsolute, &viewProjectionClipRelative, renderer.SpriteBatchEnv)
854855
OpenGL.Hl.Assert ()
855856

856857
// render frame

Nu/Nu/Transform/Viewport.fs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,27 @@ type [<StructuralEquality; NoComparison>] Viewport =
9898
let projection = viewport.Projection2d
9999
view * projection
100100

101+
/// Compute the scissor clip absolute view matrix.
102+
static member getViewClipAbsolute (_ : Vector2) (eyeSize : Vector2) viewport =
103+
let virtualScalar = (v2iDup viewport.DisplayScalar).V2
104+
let translation = eyeSize * 0.5f * virtualScalar
105+
Matrix4x4.CreateTranslation translation.V3
106+
107+
/// Compute the scissor clip relative view matrix.
108+
static member getViewClipRelative (eyeCenter : Vector2) (eyeSize : Vector2) viewport =
109+
let virtualScalar = (v2iDup viewport.DisplayScalar).V2
110+
let translation = -eyeCenter + eyeSize * 0.5f * virtualScalar
111+
Matrix4x4.CreateTranslation translation.V3
112+
101113
/// Compute the scissor clip view matrix.
102-
static member getViewClip (eyeCenter : Vector2) eyeSize viewport =
103-
Viewport.getView2d false (eyeCenter / single viewport.DisplayScalar) eyeSize viewport
114+
static member getViewClip absolute (eyeCenter : Vector2) eyeSize viewport =
115+
if absolute
116+
then Viewport.getViewClipAbsolute eyeCenter eyeSize viewport
117+
else Viewport.getViewClipRelative eyeCenter eyeSize viewport
104118

105119
/// Compute the scissor clip view projection matrix.
106-
static member getViewProjectionClip eyeCenter eyeSize viewport =
107-
let view = Viewport.getViewClip eyeCenter eyeSize viewport
120+
static member getViewProjectionClip absolute eyeCenter eyeSize viewport =
121+
let view = Viewport.getViewClip absolute eyeCenter eyeSize viewport
108122
let projection = viewport.Projection2d
109123
view * projection
110124

0 commit comments

Comments
 (0)