Skip to content

Commit 2b8d4b9

Browse files
committed
use new TEMP function to make code more readable
1 parent bf68100 commit 2b8d4b9

File tree

4 files changed

+32
-48
lines changed

4 files changed

+32
-48
lines changed

korge-core/src/korlibs/korge/render/SDFShaders.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,15 @@ object SDFShaders : Program.Builder() {
4545
RETURN(clamp(d / fwidth(d) + 0.5f, 0f.lit, 1f.lit))
4646
}
4747
val opSmoothUnion by FUNC(Float1, Float1, Float1, returns = Float1) { d1, d2, k ->
48-
val h = TEMP(Float1)
49-
SET(h, clamp(.5f + .5f * (d2 - d1) / k, 0f.lit, 1f.lit))
48+
val h = TEMP(clamp(.5f + .5f * (d2 - d1) / k, 0f.lit, 1f.lit))
5049
RETURN(mix(d2, d1, h) - k * h * (1f - h))
5150
}
5251
val opSmoothSubtraction by FUNC(Float1, Float1, Float1, returns = Float1) { d1, d2, k ->
53-
val h = TEMP(Float1)
54-
SET(h, clamp(.5f - .5f * (d2 + d1) / k, 0f.lit, 1f.lit))
52+
val h = TEMP(clamp(.5f - .5f * (d2 + d1) / k, 0f.lit, 1f.lit))
5553
RETURN(mix(d2, -d1, h) + k * h * (1f - h))
5654
}
5755
val opSmoothIntersection by FUNC(Float1, Float1, Float1, returns = Float1) { d1, d2, k ->
58-
val h = TEMP(Float1)
59-
SET(h, clamp(.5f - .5f * (d2 - d1) / k, 0f.lit, 1f.lit))
56+
val h = TEMP(clamp(.5f - .5f * (d2 - d1) / k, 0f.lit, 1f.lit))
6057
RETURN(mix(d2, d1, h) + k * h * (1f - h))
6158
}
6259

@@ -65,15 +62,13 @@ object SDFShaders : Program.Builder() {
6562
RETURN(length(p) - r)
6663
}
6764
val roundedBox by FUNC(Float2, Float2, Float4, returns = Float1) { p, b, r ->
68-
val q = TEMP(Float2)
6965
SET(r["xy"], TERNARY(p.x gt 0f, r["xy"], r["zw"]))
7066
SET(r.x, TERNARY(p.y gt 0f, r.x, r.y))
71-
SET(q, abs(p) - b + r.x)
67+
val q = TEMP(abs(p) - b + r.x)
7268
RETURN(min(max(q.x, q.y), 0f.lit) + length(max(q, 0f.lit)) - r.x)
7369
}
7470
val box by FUNC(Float2, Float2, returns = Float1) { p, b ->
75-
val d = TEMP(Float2)
76-
SET(d, abs(p) - b)
71+
val d = TEMP(abs(p) - b)
7772
RETURN(length(max(d, 0f.lit)) + min(max(d.x, d.y), 0f.lit))
7873
}
7974

korge/src/korlibs/korge/render/RenderContext2DExt.kt

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,32 +70,28 @@ object MaterialRender {
7070
}
7171

7272
val PROGRAM = ShadedView.buildShader {
73-
val roundedDist = TEMP(Float1)
74-
val borderDist = TEMP(Float1)
75-
val highlightDist = TEMP(Float1)
76-
val borderAlpha = TEMP(Float1)
77-
val highlightAlpha = TEMP(Float1)
78-
7973
// The pixel space scale of the rectangle.
8074
val size = u_Size
8175

82-
SET(roundedDist, SDFShaders.roundedBox(v_Tex - (size / 2f), size / 2f, u_Radius))
76+
val roundedDist = TEMP(SDFShaders.roundedBox(v_Tex - (size / 2f), size / 2f, u_Radius))
77+
8378
SET(out, u_BackgroundColor * SDFShaders.opAA(roundedDist))
8479

8580
// Render circle highlight
8681
IF(u_HighlightRadius gt 0f) {
87-
SET(highlightDist, SDFShaders.opIntersect(roundedDist, SDFShaders.circle(v_Tex - u_HighlightPos, u_HighlightRadius)))
88-
SET(highlightAlpha, SDFShaders.opAA(highlightDist))
82+
val highlightDist = SDFShaders.opIntersect(roundedDist, SDFShaders.circle(v_Tex - u_HighlightPos, u_HighlightRadius))
83+
val highlightAlpha = TEMP(SDFShaders.opAA(highlightDist))
84+
8985
IF(highlightAlpha gt 0f) {
9086
SET(out, SDFShaders.opCombinePremultipliedColors(out, u_HighlightColor * highlightAlpha))
9187
}
9288
}
9389

9490
// Render border
9591
IF(u_BorderSizeHalf gt 0f) {
96-
SET(borderDist, SDFShaders.opBorderInner(roundedDist, u_BorderSizeHalf * 2f))
92+
val borderDist = SDFShaders.opBorderInner(roundedDist, u_BorderSizeHalf * 2f)
9793
//SET(borderDist, SDFShaders.opBorder(roundedDist, u_BorderSizeHalf))
98-
SET(borderAlpha, SDFShaders.opAA(borderDist))
94+
val borderAlpha = TEMP(SDFShaders.opAA(borderDist))
9995
IF(borderAlpha gt 0f) {
10096
SET(out, SDFShaders.opCombinePremultipliedColors(out, u_BorderColor * borderAlpha))
10197
}

korge/src/korlibs/korge/view/fast/FSprites.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,7 @@ open class FSprites(val maxSize: Int) {
227227
return Program(VertexShaderDefault {
228228
//SET(out, (u_ProjMat * u_ViewMat) * vec4(vec2(a_x, a_y), 0f.lit, 1f.lit))
229229
//SET(v_color, texture2D(u_Tex, vec2(vec1(id) / 4f.lit, 0f.lit)))
230-
val baseSize = TEMP(VarType.Float2)
231230
val texSize = TEMP(VarType.Float2)
232-
SET(baseSize, a_uv1 - a_uv0)
233231
SET(v_Col, vec4(a_colMul["rgb"] * a_colMul["a"], a_colMul["a"])) // Pre-multiply color here
234232
SET(v_TexId, a_texId)
235233

@@ -241,17 +239,16 @@ open class FSprites(val maxSize: Int) {
241239
mix(a_uv0.y, a_uv1.y, a_xy.y),
242240
) * texSize)
243241

244-
val cos = TEMP(VarType.Float1)
245-
val sin = TEMP(VarType.Float1)
246-
SET(cos, cos(a_angle))
247-
SET(sin, sin(a_angle))
242+
val cos = TEMP(cos(a_angle))
243+
val sin = TEMP(sin(a_angle))
248244
SET(t_TempMat2, mat2(
249245
cos, -sin,
250246
sin, cos,
251247
))
252248
val size = t_Temp0["zw"]
253249
val localPos = t_Temp0["xy"]
254250

251+
val baseSize = a_uv1 - a_uv0
255252
SET(size, baseSize * a_scale)
256253
SET(localPos, t_TempMat2 * ((a_xy - a_anchor) * size))
257254
SET(out, (u_ProjMat * u_ViewMat) * vec4(localPos + vec2(a_pos.x, a_pos.y), 0f.lit, 1f.lit))

korge/src/korlibs/korge/view/filter/DitheringFilter.kt

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,12 @@ class DitheringFilter(
3333
63, 31, 55, 23, 61, 29, 53, 21
3434
)
3535
val indexValue by FUNC(Float2, returns = Float1) { coords ->
36-
val index = TEMP(Float1)
3736
val matrix = indexMatrix8x8
3837
//val matrix = indexMatrix4x4
3938
val width = kotlin.math.sqrt(matrix.size.toDouble()).toInt()
4039
val x = int(mod(coords.x, width.toFloat().lit))
4140
val y = int(mod(coords.y, width.toFloat().lit))
42-
SET(index, float(x + y * width.lit))
41+
val index = TEMP(float(x + y * width.lit))
4342
IF_ELSE_BINARY_LOOKUP(index, 0, matrix.size - 1) {
4443
RETURN((matrix[it].toFloat() / matrix.size.toFloat()).lit)
4544
}
@@ -48,26 +47,23 @@ class DitheringFilter(
4847
}
4948

5049
override val fragment: FragmentShader = FragmentShaderDefault {
51-
val COL = TEMP(Float4)
52-
val COL1 = TEMP(Float4)
53-
val COL2 = TEMP(Float4)
54-
val DIST1 = TEMP(Float4)
55-
val DIST3 = TEMP(Float4)
56-
val INDEX1 = TEMP(Float1)
57-
val STEPS = DitherUB.u_Levels
58-
val hueDiff = TEMP(Float4)
59-
SET(COL, tex(fragmentCoords))
60-
SET(COL1, vec4(floor(COL * STEPS)) / STEPS)
61-
SET(COL2, vec4(ceil(COL * STEPS)) / STEPS)
62-
SET(DIST1, abs(COL1 - COL))
63-
SET(DIST3, abs(COL2 - COL1))
64-
SET(INDEX1, DitheringTools.indexValue(fragmentCoords))
65-
SET(hueDiff , DIST1 / DIST3)
50+
val steps = DitherUB.u_Levels
51+
52+
val col = TEMP(tex(fragmentCoords))
53+
val col1 = TEMP(vec4(floor(col * steps)) / steps)
54+
val col2 = TEMP(vec4(ceil(col * steps)) / steps)
55+
56+
val dist1 = TEMP(abs(col1 - col))
57+
val dist3 = TEMP(abs(col2 - col1))
58+
59+
val index1 = TEMP(DitheringTools.indexValue(fragmentCoords))
60+
val hueDiff = TEMP(dist1 / dist3)
61+
6662
SET(out, vec4(
67-
TERNARY(hueDiff.x lt INDEX1, COL1.x, COL2.x),
68-
TERNARY(hueDiff.y lt INDEX1, COL1.y, COL2.y),
69-
TERNARY(hueDiff.z lt INDEX1, COL1.z, COL2.z),
70-
TERNARY(hueDiff.w lt INDEX1, COL1.w, COL2.w),
63+
TERNARY(hueDiff.x lt index1, col1.x, col2.x),
64+
TERNARY(hueDiff.y lt index1, col1.y, col2.y),
65+
TERNARY(hueDiff.z lt index1, col1.z, col2.z),
66+
TERNARY(hueDiff.w lt index1, col1.w, col2.w),
7167
))
7268
}
7369
}

0 commit comments

Comments
 (0)