Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
skiko
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuqiang
skiko
Commits
dc80eb4d
Unverified
Commit
dc80eb4d
authored
Aug 14, 2024
by
Niclas
Committed by
GitHub
Aug 14, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RuntimeShaderBuilder uniform float array api (#978)
parent
f34519d8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
0 deletions
+43
-0
RuntimeShaderBuilder.kt
...monMain/kotlin/org/jetbrains/skia/RuntimeShaderBuilder.kt
+12
-0
RuntimeShaderBuilderTest.kt
...est/kotlin/org/jetbrains/skia/RuntimeShaderBuilderTest.kt
+16
-0
RuntimeShaderBuilder.cc
skiko/src/jvmMain/cpp/common/RuntimeShaderBuilder.cc
+9
-0
RuntimeShaderBuilder.cc
skiko/src/nativeJsMain/cpp/RuntimeShaderBuilder.cc
+6
-0
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/RuntimeShaderBuilder.kt
View file @
dc80eb4d
...
@@ -80,6 +80,14 @@ class RuntimeShaderBuilder internal constructor(ptr: NativePointer) : Managed(pt
...
@@ -80,6 +80,14 @@ class RuntimeShaderBuilder internal constructor(ptr: NativePointer) : Managed(pt
}
}
}
}
fun
uniform
(
name
:
String
,
value
:
FloatArray
)
{
Stats
.
onNativeCall
()
interopScope
{
_nUniformFloatArray
(
_ptr
,
toInterop
(
name
),
toInterop
(
value
),
value
.
size
)
}
}
fun
uniform
(
name
:
String
,
value
:
Matrix22
)
{
fun
uniform
(
name
:
String
,
value
:
Matrix22
)
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
interopScope
{
interopScope
{
...
@@ -177,6 +185,10 @@ private external fun _nUniformFloat3(builderPtr: NativePointer, uniformName: Int
...
@@ -177,6 +185,10 @@ private external fun _nUniformFloat3(builderPtr: NativePointer, uniformName: Int
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloat4"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloat4"
)
private
external
fun
_nUniformFloat4
(
builderPtr
:
NativePointer
,
uniformName
:
InteropPointer
,
uniformValue1
:
Float
,
uniformValue2
:
Float
,
uniformValue3
:
Float
,
uniformValue4
:
Float
)
private
external
fun
_nUniformFloat4
(
builderPtr
:
NativePointer
,
uniformName
:
InteropPointer
,
uniformValue1
:
Float
,
uniformValue2
:
Float
,
uniformValue3
:
Float
,
uniformValue4
:
Float
)
@ExternalSymbolName
(
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatArray"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatArray"
)
private
external
fun
_nUniformFloatArray
(
builderPtr
:
NativePointer
,
uniformName
:
InteropPointer
,
uniformFloatArray
:
InteropPointer
,
length
:
Int
)
@ExternalSymbolName
(
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22"
)
@ExternalSymbolName
(
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22"
)
private
external
fun
_nUniformFloatMatrix22
(
builderPtr
:
NativePointer
,
uniformName
:
InteropPointer
,
uniformMatrix22
:
InteropPointer
)
private
external
fun
_nUniformFloatMatrix22
(
builderPtr
:
NativePointer
,
uniformName
:
InteropPointer
,
uniformMatrix22
:
InteropPointer
)
...
...
skiko/src/commonTest/kotlin/org/jetbrains/skia/RuntimeShaderBuilderTest.kt
View file @
dc80eb4d
...
@@ -51,6 +51,22 @@ class RuntimeShaderBuilderTest {
...
@@ -51,6 +51,22 @@ class RuntimeShaderBuilderTest {
runtimeShaderBuilder
.
makeShader
()
runtimeShaderBuilder
.
makeShader
()
}
}
@Test
fun
customShaderWithFloatArray
()
=
shaderTest
{
val
shaderSksl
=
"""
uniform float array[4];
half4 main(vec2 coord) {
return half4(array[0], array[1], array[2], array[3]);
}
"""
.
trimIndent
()
val
runtimeEffect
=
RuntimeEffect
.
makeForShader
(
shaderSksl
)
val
runtimeShaderBuilder
=
RuntimeShaderBuilder
(
runtimeEffect
)
runtimeShaderBuilder
.
uniform
(
"array"
,
floatArrayOf
(
0.1f
,
0.2f
,
0.3f
,
0.4f
))
runtimeShaderBuilder
.
makeShader
()
}
@Test
@Test
fun
customShaderWithMatrix
()
=
shaderTest
{
fun
customShaderWithMatrix
()
=
shaderTest
{
val
shaderSksl
=
"""
val
shaderSksl
=
"""
...
...
skiko/src/jvmMain/cpp/common/RuntimeShaderBuilder.cc
View file @
dc80eb4d
...
@@ -82,6 +82,15 @@ Java_org_jetbrains_skia_RuntimeShaderBuilderKt__1nUniformFloat4
...
@@ -82,6 +82,15 @@ Java_org_jetbrains_skia_RuntimeShaderBuilderKt__1nUniformFloat4
runtimeShaderBuilder
->
uniform
(
skString
(
env
,
uniformName
).
c_str
())
=
float4
{
uniformValue1
,
uniformValue2
,
uniformValue3
,
uniformValue4
};
runtimeShaderBuilder
->
uniform
(
skString
(
env
,
uniformName
).
c_str
())
=
float4
{
uniformValue1
,
uniformValue2
,
uniformValue3
,
uniformValue4
};
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_RuntimeShaderBuilderKt__1nUniformFloatArray
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
builderPtr
,
jstring
uniformName
,
jfloatArray
uniformFloatArray
,
jint
length
)
{
SkRuntimeShaderBuilder
*
runtimeShaderBuilder
=
jlongToPtr
<
SkRuntimeShaderBuilder
*>
(
builderPtr
);
jfloat
*
floatArray
=
static_cast
<
jfloat
*>
(
env
->
GetPrimitiveArrayCritical
(
uniformFloatArray
,
0
));
runtimeShaderBuilder
->
uniform
(
skString
(
env
,
uniformName
).
c_str
()).
set
(
floatArray
,
length
);
env
->
ReleasePrimitiveArrayCritical
(
uniformFloatArray
,
floatArray
,
0
);
}
extern
"C"
JNIEXPORT
void
JNICALL
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_RuntimeShaderBuilderKt__1nUniformFloatMatrix22
Java_org_jetbrains_skia_RuntimeShaderBuilderKt__1nUniformFloatMatrix22
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
builderPtr
,
jstring
uniformName
,
jfloatArray
uniformMatrix22
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
builderPtr
,
jstring
uniformName
,
jfloatArray
uniformMatrix22
)
{
...
...
skiko/src/nativeJsMain/cpp/RuntimeShaderBuilder.cc
View file @
dc80eb4d
...
@@ -72,6 +72,12 @@ SKIKO_EXPORT void org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloat4
...
@@ -72,6 +72,12 @@ SKIKO_EXPORT void org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloat4
runtimeShaderBuilder
->
uniform
(
skString
(
uniformName
).
c_str
())
=
float4
{
uniformValue1
,
uniformValue2
,
uniformValue3
,
uniformValue4
};
runtimeShaderBuilder
->
uniform
(
skString
(
uniformName
).
c_str
())
=
float4
{
uniformValue1
,
uniformValue2
,
uniformValue3
,
uniformValue4
};
}
}
SKIKO_EXPORT
void
org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatArray
(
KNativePointer
builderPtr
,
KInteropPointer
uniformName
,
KFloat
*
uniformFloatArray
,
int32_t
length
)
{
SkRuntimeShaderBuilder
*
runtimeShaderBuilder
=
reinterpret_cast
<
SkRuntimeShaderBuilder
*>
(
builderPtr
);
runtimeShaderBuilder
->
uniform
(
skString
(
uniformName
).
c_str
()).
set
(
uniformFloatArray
,
length
);
}
SKIKO_EXPORT
void
org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22
SKIKO_EXPORT
void
org_jetbrains_skia_RuntimeShaderBuilder__1nUniformFloatMatrix22
(
KNativePointer
builderPtr
,
KInteropPointer
uniformName
,
KFloat
*
uniformMatrix22
)
{
(
KNativePointer
builderPtr
,
KInteropPointer
uniformName
,
KFloat
*
uniformMatrix22
)
{
SkRuntimeShaderBuilder
*
runtimeShaderBuilder
=
reinterpret_cast
<
SkRuntimeShaderBuilder
*>
(
builderPtr
);
SkRuntimeShaderBuilder
*
runtimeShaderBuilder
=
reinterpret_cast
<
SkRuntimeShaderBuilder
*>
(
builderPtr
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment