mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-08 13:14:56 +00:00
Implement addition and subtraction of float matrices
Bug: tint:316 Change-Id: I3a1082c41c47daacf0220d029cb2a5f118684959 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52580 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Commit-Queue: David Neto <dneto@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
34c58a932c
commit
c91f8f2822
@@ -64,6 +64,19 @@ fn scalar_vector_u32() {
|
||||
r = s % v;
|
||||
}
|
||||
|
||||
fn matrix_matrix_f32() {
|
||||
var m34 : mat3x4<f32>;
|
||||
var m43 : mat4x3<f32>;
|
||||
var m33 : mat3x3<f32>;
|
||||
var m44 : mat4x4<f32>;
|
||||
|
||||
m34 = m34 + m34;
|
||||
m34 = m34 - m34;
|
||||
|
||||
m33 = m43 * m34;
|
||||
m44 = m34 * m43;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main() -> [[location(0)]] vec4<f32> {
|
||||
return vec4<f32>(0.0,0.0,0.0,0.0);
|
||||
|
||||
@@ -66,6 +66,17 @@ void scalar_vector_u32() {
|
||||
r = (s % v);
|
||||
}
|
||||
|
||||
void matrix_matrix_f32() {
|
||||
float3x4 m34 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
float4x3 m43 = float4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
float3x3 m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
float4x4 m44 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
m34 = (m34 + m34);
|
||||
m34 = (m34 - m34);
|
||||
m33 = mul(m34, m43);
|
||||
m44 = mul(m43, m34);
|
||||
}
|
||||
|
||||
tint_symbol main() {
|
||||
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
||||
return tint_symbol_1;
|
||||
|
||||
@@ -69,6 +69,17 @@ void scalar_vector_u32() {
|
||||
r = (s % v);
|
||||
}
|
||||
|
||||
void matrix_matrix_f32() {
|
||||
float3x4 m34 = float3x4(0.0f);
|
||||
float4x3 m43 = float4x3(0.0f);
|
||||
float3x3 m33 = float3x3(0.0f);
|
||||
float4x4 m44 = float4x4(0.0f);
|
||||
m34 = (m34 + m34);
|
||||
m34 = (m34 - m34);
|
||||
m33 = (m43 * m34);
|
||||
m44 = (m34 * m43);
|
||||
}
|
||||
|
||||
fragment tint_symbol_1 tint_symbol() {
|
||||
return {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
; Bound: 200
|
||||
; Bound: 250
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical GLSL450
|
||||
@@ -32,6 +32,11 @@
|
||||
OpName %v_4 "v"
|
||||
OpName %s_4 "s"
|
||||
OpName %r_4 "r"
|
||||
OpName %matrix_matrix_f32 "matrix_matrix_f32"
|
||||
OpName %m34 "m34"
|
||||
OpName %m43 "m43"
|
||||
OpName %m33 "m33"
|
||||
OpName %m44 "m44"
|
||||
OpName %tint_symbol_2 "tint_symbol_2"
|
||||
OpName %tint_symbol "tint_symbol"
|
||||
OpName %main "main"
|
||||
@@ -60,9 +65,21 @@
|
||||
%78 = OpConstantNull %v3uint
|
||||
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||
%81 = OpConstantNull %uint
|
||||
%191 = OpTypeFunction %void %v4float
|
||||
%mat3v4float = OpTypeMatrix %v4float 3
|
||||
%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
|
||||
%196 = OpConstantNull %mat3v4float
|
||||
%mat4v3float = OpTypeMatrix %v3float 4
|
||||
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
|
||||
%200 = OpConstantNull %mat4v3float
|
||||
%mat3v3float = OpTypeMatrix %v3float 3
|
||||
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
|
||||
%204 = OpConstantNull %mat3v3float
|
||||
%mat4v4float = OpTypeMatrix %v4float 4
|
||||
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
|
||||
%208 = OpConstantNull %mat4v4float
|
||||
%241 = OpTypeFunction %void %v4float
|
||||
%float_0 = OpConstant %float 0
|
||||
%199 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%249 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%vector_scalar_f32 = OpFunction %void None %6
|
||||
%9 = OpLabel
|
||||
%v = OpVariable %_ptr_Function_v3float Function %13
|
||||
@@ -269,14 +286,56 @@
|
||||
OpStore %r_4 %188
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%tint_symbol_2 = OpFunction %void None %191
|
||||
%matrix_matrix_f32 = OpFunction %void None %6
|
||||
%192 = OpLabel
|
||||
%m34 = OpVariable %_ptr_Function_mat3v4float Function %196
|
||||
%m43 = OpVariable %_ptr_Function_mat4v3float Function %200
|
||||
%m33 = OpVariable %_ptr_Function_mat3v3float Function %204
|
||||
%m44 = OpVariable %_ptr_Function_mat4v4float Function %208
|
||||
%209 = OpLoad %mat3v4float %m34
|
||||
%210 = OpLoad %mat3v4float %m34
|
||||
%212 = OpCompositeExtract %v4float %209 0
|
||||
%213 = OpCompositeExtract %v4float %210 0
|
||||
%214 = OpFAdd %v4float %212 %213
|
||||
%215 = OpCompositeExtract %v4float %209 1
|
||||
%216 = OpCompositeExtract %v4float %210 1
|
||||
%217 = OpFAdd %v4float %215 %216
|
||||
%218 = OpCompositeExtract %v4float %209 2
|
||||
%219 = OpCompositeExtract %v4float %210 2
|
||||
%220 = OpFAdd %v4float %218 %219
|
||||
%221 = OpCompositeConstruct %mat3v4float %214 %217 %220
|
||||
OpStore %m34 %221
|
||||
%222 = OpLoad %mat3v4float %m34
|
||||
%223 = OpLoad %mat3v4float %m34
|
||||
%225 = OpCompositeExtract %v4float %222 0
|
||||
%226 = OpCompositeExtract %v4float %223 0
|
||||
%227 = OpFSub %v4float %225 %226
|
||||
%228 = OpCompositeExtract %v4float %222 1
|
||||
%229 = OpCompositeExtract %v4float %223 1
|
||||
%230 = OpFSub %v4float %228 %229
|
||||
%231 = OpCompositeExtract %v4float %222 2
|
||||
%232 = OpCompositeExtract %v4float %223 2
|
||||
%233 = OpFSub %v4float %231 %232
|
||||
%234 = OpCompositeConstruct %mat3v4float %227 %230 %233
|
||||
OpStore %m34 %234
|
||||
%235 = OpLoad %mat4v3float %m43
|
||||
%236 = OpLoad %mat3v4float %m34
|
||||
%237 = OpMatrixTimesMatrix %mat3v3float %235 %236
|
||||
OpStore %m33 %237
|
||||
%238 = OpLoad %mat3v4float %m34
|
||||
%239 = OpLoad %mat4v3float %m43
|
||||
%240 = OpMatrixTimesMatrix %mat4v4float %238 %239
|
||||
OpStore %m44 %240
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%tint_symbol_2 = OpFunction %void None %241
|
||||
%tint_symbol = OpFunctionParameter %v4float
|
||||
%194 = OpLabel
|
||||
%244 = OpLabel
|
||||
OpStore %tint_symbol_1 %tint_symbol
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %void None %6
|
||||
%196 = OpLabel
|
||||
%197 = OpFunctionCall %void %tint_symbol_2 %199
|
||||
%246 = OpLabel
|
||||
%247 = OpFunctionCall %void %tint_symbol_2 %249
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -62,6 +62,17 @@ fn scalar_vector_u32() {
|
||||
r = (s % v);
|
||||
}
|
||||
|
||||
fn matrix_matrix_f32() {
|
||||
var m34 : mat3x4<f32>;
|
||||
var m43 : mat4x3<f32>;
|
||||
var m33 : mat3x3<f32>;
|
||||
var m44 : mat4x4<f32>;
|
||||
m34 = (m34 + m34);
|
||||
m34 = (m34 - m34);
|
||||
m33 = (m43 * m34);
|
||||
m44 = (m34 * m43);
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn main() -> [[location(0)]] vec4<f32> {
|
||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
Reference in New Issue
Block a user