mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-27 09:14:01 +00:00
[spv-out] cache access index constants
This commit is contained in:
parent
5673603bab
commit
100c2f42ed
@ -11,6 +11,7 @@ use std::{collections::hash_map::Entry, ops};
|
||||
use thiserror::Error;
|
||||
|
||||
const BITS_PER_BYTE: crate::Bytes = 8;
|
||||
const CACHED_CONSTANT_INDICES: usize = 8;
|
||||
|
||||
#[derive(Clone, Debug, Error)]
|
||||
pub enum Error {
|
||||
@ -269,7 +270,8 @@ pub struct Writer {
|
||||
lookup_function: crate::FastHashMap<Handle<crate::Function>, Word>,
|
||||
lookup_function_type: crate::FastHashMap<LookupFunctionType, Word>,
|
||||
lookup_function_call: crate::FastHashMap<Handle<crate::Expression>, Word>,
|
||||
lookup_constant: crate::FastHashMap<Handle<crate::Constant>, Word>,
|
||||
constant_ids: Vec<Word>,
|
||||
index_constant_ids: Vec<Word>,
|
||||
global_variables: Vec<GlobalVariable>,
|
||||
cached: CachedExpressions,
|
||||
gl450_ext_inst_id: Word,
|
||||
@ -300,7 +302,8 @@ impl Writer {
|
||||
lookup_function: crate::FastHashMap::default(),
|
||||
lookup_function_type: crate::FastHashMap::default(),
|
||||
lookup_function_call: crate::FastHashMap::default(),
|
||||
lookup_constant: crate::FastHashMap::default(),
|
||||
constant_ids: Vec::new(),
|
||||
index_constant_ids: Vec::new(),
|
||||
global_variables: Vec::new(),
|
||||
cached: CachedExpressions::default(),
|
||||
gl450_ext_inst_id,
|
||||
@ -372,6 +375,14 @@ impl Writer {
|
||||
index: Word,
|
||||
types: &Arena<crate::Type>,
|
||||
) -> Result<Word, Error> {
|
||||
while self.index_constant_ids.len() <= index as usize {
|
||||
self.index_constant_ids.push(0);
|
||||
}
|
||||
let cached = self.index_constant_ids[index as usize];
|
||||
if cached != 0 {
|
||||
return Ok(cached);
|
||||
}
|
||||
|
||||
let type_id = self.get_type_id(
|
||||
types,
|
||||
LookupType::Local(LocalType::Value {
|
||||
@ -381,8 +392,10 @@ impl Writer {
|
||||
pointer_class: None,
|
||||
}),
|
||||
)?;
|
||||
//TODO: cache this
|
||||
Ok(self.create_constant(type_id, &[index]))
|
||||
|
||||
let id = self.create_constant(type_id, &[index]);
|
||||
self.index_constant_ids[index as usize] = id;
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
fn write_function(
|
||||
@ -405,7 +418,7 @@ impl Writer {
|
||||
|
||||
let init_word = variable
|
||||
.init
|
||||
.map(|constant| self.lookup_constant[&constant]);
|
||||
.map(|constant| self.constant_ids[constant.index()]);
|
||||
let pointer_type_id =
|
||||
self.get_pointer_id(&ir_module.types, variable.ty, spirv::StorageClass::Function)?;
|
||||
let instruction = Instruction::variable(
|
||||
@ -841,7 +854,7 @@ impl Writer {
|
||||
let type_id = self.get_type_id(arena, LookupType::Handle(base))?;
|
||||
match size {
|
||||
crate::ArraySize::Constant(const_handle) => {
|
||||
let length_id = self.lookup_constant[&const_handle];
|
||||
let length_id = self.constant_ids[const_handle.index()];
|
||||
Instruction::type_array(id, type_id, length_id)
|
||||
}
|
||||
crate::ArraySize::Dynamic => Instruction::type_runtime_array(id, type_id),
|
||||
@ -935,8 +948,14 @@ impl Writer {
|
||||
id: Word,
|
||||
value: &crate::ScalarValue,
|
||||
width: crate::Bytes,
|
||||
debug_name: Option<&String>,
|
||||
types: &Arena<crate::Type>,
|
||||
) -> Result<(), Error> {
|
||||
if self.flags.contains(WriterFlags::DEBUG) {
|
||||
if let Some(name) = debug_name {
|
||||
self.debugs.push(Instruction::name(id, name));
|
||||
}
|
||||
}
|
||||
let type_id = self.get_type_id(
|
||||
types,
|
||||
LookupType::Local(LocalType::Value {
|
||||
@ -951,6 +970,17 @@ impl Writer {
|
||||
crate::ScalarValue::Sint(val) => {
|
||||
let words = match width {
|
||||
4 => {
|
||||
if debug_name.is_none()
|
||||
&& 0 <= val
|
||||
&& val < CACHED_CONSTANT_INDICES as i64
|
||||
&& self.index_constant_ids.get(val as usize).unwrap_or(&0) == &0
|
||||
{
|
||||
// cache this as an indexing constant
|
||||
while self.index_constant_ids.len() <= val as usize {
|
||||
self.index_constant_ids.push(0);
|
||||
}
|
||||
self.index_constant_ids[val as usize] = id;
|
||||
}
|
||||
solo = [val as u32];
|
||||
&solo[..]
|
||||
}
|
||||
@ -1008,7 +1038,7 @@ impl Writer {
|
||||
) -> Result<(), Error> {
|
||||
let mut constituent_ids = Vec::with_capacity(components.len());
|
||||
for constituent in components.iter() {
|
||||
let constituent_id = self.lookup_constant[constituent];
|
||||
let constituent_id = self.constant_ids[constituent.index()];
|
||||
constituent_ids.push(constituent_id);
|
||||
}
|
||||
|
||||
@ -1109,7 +1139,7 @@ impl Writer {
|
||||
|
||||
let init_word = global_variable
|
||||
.init
|
||||
.map(|constant| self.lookup_constant[&constant]);
|
||||
.map(|constant| self.constant_ids[constant.index()]);
|
||||
let pointer_type_id = self.get_pointer_id(&ir_module.types, global_variable.ty, class)?;
|
||||
let instruction = Instruction::variable(pointer_type_id, id, class, init_word);
|
||||
|
||||
@ -1345,7 +1375,7 @@ impl Writer {
|
||||
}
|
||||
}
|
||||
crate::Expression::GlobalVariable(handle) => self.global_variables[handle.index()].id,
|
||||
crate::Expression::Constant(handle) => self.lookup_constant[&handle],
|
||||
crate::Expression::Constant(handle) => self.constant_ids[handle.index()],
|
||||
crate::Expression::Compose {
|
||||
ty: _,
|
||||
ref components,
|
||||
@ -1794,6 +1824,7 @@ impl Writer {
|
||||
zero_id,
|
||||
&crate::ScalarValue::Float(0.0),
|
||||
4,
|
||||
None,
|
||||
&ir_module.types,
|
||||
)?;
|
||||
inst.add_operand(spirv::ImageOperands::LOD.bits());
|
||||
@ -1862,7 +1893,7 @@ impl Writer {
|
||||
};
|
||||
|
||||
if let Some(offset_const) = offset {
|
||||
let offset_id = self.lookup_constant[&offset_const];
|
||||
let offset_id = self.constant_ids[offset_const.index()];
|
||||
main_instruction.add_operand(spirv::ImageOperands::CONST_OFFSET.bits());
|
||||
main_instruction.add_operand(offset_id);
|
||||
}
|
||||
@ -2419,19 +2450,22 @@ impl Writer {
|
||||
.push(Instruction::source(spirv::SourceLanguage::GLSL, 450));
|
||||
}
|
||||
|
||||
self.constant_ids.clear();
|
||||
self.constant_ids.resize(ir_module.constants.len(), 0);
|
||||
// first, output all the scalar constants
|
||||
for (handle, constant) in ir_module.constants.iter() {
|
||||
match constant.inner {
|
||||
crate::ConstantInner::Composite { .. } => continue,
|
||||
crate::ConstantInner::Scalar { width, ref value } => {
|
||||
let id = self.id_gen.next();
|
||||
self.lookup_constant.insert(handle, id);
|
||||
if self.flags.contains(WriterFlags::DEBUG) {
|
||||
if let Some(ref name) = constant.name {
|
||||
self.debugs.push(Instruction::name(id, name));
|
||||
}
|
||||
}
|
||||
self.write_constant_scalar(id, value, width, &ir_module.types)?;
|
||||
self.constant_ids[handle.index()] = id;
|
||||
self.write_constant_scalar(
|
||||
id,
|
||||
value,
|
||||
width,
|
||||
constant.name.as_ref(),
|
||||
&ir_module.types,
|
||||
)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2447,7 +2481,7 @@ impl Writer {
|
||||
crate::ConstantInner::Scalar { .. } => continue,
|
||||
crate::ConstantInner::Composite { ty, ref components } => {
|
||||
let id = self.id_gen.next();
|
||||
self.lookup_constant.insert(handle, id);
|
||||
self.constant_ids[handle.index()] = id;
|
||||
if self.flags.contains(WriterFlags::DEBUG) {
|
||||
if let Some(ref name) = constant.name {
|
||||
self.debugs.push(Instruction::name(id, name));
|
||||
@ -2457,6 +2491,7 @@ impl Writer {
|
||||
}
|
||||
}
|
||||
}
|
||||
debug_assert_eq!(self.constant_ids.iter().position(|&id| id == 0), None);
|
||||
|
||||
// now write all globals
|
||||
self.global_variables.clear();
|
||||
|
@ -5,7 +5,7 @@ expression: dis
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: rspirv
|
||||
; Bound: 221
|
||||
; Bound: 203
|
||||
OpCapability Shader
|
||||
OpExtension "SPV_KHR_storage_buffer_storage_class"
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
@ -98,31 +98,13 @@ OpDecorate %40 BuiltIn GlobalInvocationId
|
||||
%51 = OpTypePointer StorageBuffer %18
|
||||
%52 = OpTypePointer StorageBuffer %16
|
||||
%53 = OpTypePointer StorageBuffer %15
|
||||
%54 = OpConstant %8 0
|
||||
%55 = OpConstant %8 0
|
||||
%58 = OpConstant %8 1
|
||||
%59 = OpConstant %8 0
|
||||
%78 = OpConstant %8 0
|
||||
%79 = OpConstant %8 0
|
||||
%83 = OpConstant %8 1
|
||||
%84 = OpConstant %8 0
|
||||
%90 = OpTypePointer Uniform %6
|
||||
%91 = OpConstant %8 1
|
||||
%105 = OpConstant %8 2
|
||||
%119 = OpConstant %8 3
|
||||
%154 = OpConstant %8 4
|
||||
%160 = OpConstant %8 5
|
||||
%166 = OpConstant %8 6
|
||||
%179 = OpConstant %8 0
|
||||
%189 = OpTypePointer Function %6
|
||||
%190 = OpConstant %8 0
|
||||
%197 = OpConstant %8 0
|
||||
%204 = OpConstant %8 1
|
||||
%211 = OpConstant %8 1
|
||||
%214 = OpConstant %8 0
|
||||
%215 = OpConstant %8 0
|
||||
%218 = OpConstant %8 1
|
||||
%219 = OpConstant %8 0
|
||||
%82 = OpTypePointer Uniform %6
|
||||
%96 = OpConstant %8 2
|
||||
%110 = OpConstant %8 3
|
||||
%145 = OpConstant %8 4
|
||||
%151 = OpConstant %8 5
|
||||
%157 = OpConstant %8 6
|
||||
%179 = OpTypePointer Function %6
|
||||
%43 = OpFunction %2 None %44
|
||||
%39 = OpLabel
|
||||
%37 = OpVariable %38 Function %9
|
||||
@ -145,209 +127,209 @@ OpBranchConditional %48 %50 %49
|
||||
%50 = OpLabel
|
||||
OpReturn
|
||||
%49 = OpLabel
|
||||
%56 = OpAccessChain %53 %23 %55 %46 %54
|
||||
%54 = OpAccessChain %53 %23 %7 %46 %7
|
||||
%55 = OpLoad %15 %54
|
||||
OpStore %26 %55
|
||||
%56 = OpAccessChain %53 %23 %7 %46 %10
|
||||
%57 = OpLoad %15 %56
|
||||
OpStore %26 %57
|
||||
%60 = OpAccessChain %53 %23 %59 %46 %58
|
||||
%61 = OpLoad %15 %60
|
||||
OpStore %28 %61
|
||||
%62 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %29 %62
|
||||
%63 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %30 %63
|
||||
%64 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %31 %64
|
||||
OpBranch %65
|
||||
%65 = OpLabel
|
||||
OpLoopMerge %66 %68 None
|
||||
OpBranch %67
|
||||
OpStore %28 %57
|
||||
%58 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %29 %58
|
||||
%59 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %30 %59
|
||||
%60 = OpCompositeConstruct %15 %5 %5
|
||||
OpStore %31 %60
|
||||
OpBranch %61
|
||||
%61 = OpLabel
|
||||
OpLoopMerge %62 %64 None
|
||||
OpBranch %63
|
||||
%63 = OpLabel
|
||||
%65 = OpLoad %4 %37
|
||||
%66 = OpUGreaterThanEqual %47 %65 %3
|
||||
OpSelectionMerge %67 None
|
||||
OpBranchConditional %66 %68 %67
|
||||
%68 = OpLabel
|
||||
OpBranch %62
|
||||
%67 = OpLabel
|
||||
%69 = OpLoad %4 %37
|
||||
%70 = OpUGreaterThanEqual %47 %69 %3
|
||||
%70 = OpIEqual %47 %69 %46
|
||||
OpSelectionMerge %71 None
|
||||
OpBranchConditional %70 %72 %71
|
||||
%72 = OpLabel
|
||||
OpBranch %66
|
||||
OpBranch %64
|
||||
%71 = OpLabel
|
||||
%73 = OpLoad %4 %37
|
||||
%74 = OpIEqual %47 %73 %46
|
||||
OpSelectionMerge %75 None
|
||||
OpBranchConditional %74 %76 %75
|
||||
%76 = OpLabel
|
||||
OpBranch %68
|
||||
%75 = OpLabel
|
||||
%77 = OpLoad %4 %37
|
||||
%80 = OpAccessChain %53 %23 %79 %77 %78
|
||||
%81 = OpLoad %15 %80
|
||||
OpStore %35 %81
|
||||
%82 = OpLoad %4 %37
|
||||
%85 = OpAccessChain %53 %23 %84 %82 %83
|
||||
%86 = OpLoad %15 %85
|
||||
OpStore %36 %86
|
||||
%87 = OpLoad %15 %35
|
||||
%88 = OpLoad %15 %26
|
||||
%89 = OpExtInst %6 %1 Distance %87 %88
|
||||
%92 = OpAccessChain %90 %21 %91
|
||||
%93 = OpLoad %6 %92
|
||||
%94 = OpFOrdLessThan %47 %89 %93
|
||||
OpSelectionMerge %95 None
|
||||
OpBranchConditional %94 %96 %95
|
||||
%96 = OpLabel
|
||||
%97 = OpLoad %15 %29
|
||||
%98 = OpLoad %15 %35
|
||||
%99 = OpFAdd %15 %97 %98
|
||||
OpStore %29 %99
|
||||
%100 = OpLoad %8 %32
|
||||
%101 = OpIAdd %8 %100 %10
|
||||
OpStore %32 %101
|
||||
OpBranch %95
|
||||
%95 = OpLabel
|
||||
%102 = OpLoad %15 %35
|
||||
%103 = OpLoad %15 %26
|
||||
%104 = OpExtInst %6 %1 Distance %102 %103
|
||||
%106 = OpAccessChain %90 %21 %105
|
||||
%107 = OpLoad %6 %106
|
||||
%108 = OpFOrdLessThan %47 %104 %107
|
||||
OpSelectionMerge %109 None
|
||||
OpBranchConditional %108 %110 %109
|
||||
%110 = OpLabel
|
||||
%111 = OpLoad %15 %31
|
||||
%112 = OpLoad %15 %35
|
||||
%113 = OpLoad %15 %26
|
||||
%114 = OpFSub %15 %112 %113
|
||||
%115 = OpFSub %15 %111 %114
|
||||
OpStore %31 %115
|
||||
OpBranch %109
|
||||
%109 = OpLabel
|
||||
%116 = OpLoad %15 %35
|
||||
%117 = OpLoad %15 %26
|
||||
%118 = OpExtInst %6 %1 Distance %116 %117
|
||||
%120 = OpAccessChain %90 %21 %119
|
||||
%121 = OpLoad %6 %120
|
||||
%122 = OpFOrdLessThan %47 %118 %121
|
||||
OpSelectionMerge %123 None
|
||||
OpBranchConditional %122 %124 %123
|
||||
%124 = OpLabel
|
||||
%125 = OpLoad %15 %30
|
||||
%126 = OpLoad %15 %36
|
||||
%127 = OpFAdd %15 %125 %126
|
||||
OpStore %30 %127
|
||||
%128 = OpLoad %8 %34
|
||||
%129 = OpIAdd %8 %128 %10
|
||||
OpStore %34 %129
|
||||
OpBranch %123
|
||||
%123 = OpLabel
|
||||
OpBranch %68
|
||||
%68 = OpLabel
|
||||
%130 = OpLoad %4 %37
|
||||
%131 = OpIAdd %4 %130 %11
|
||||
OpStore %37 %131
|
||||
OpBranch %65
|
||||
%66 = OpLabel
|
||||
%132 = OpLoad %8 %32
|
||||
%133 = OpSGreaterThan %47 %132 %7
|
||||
OpSelectionMerge %134 None
|
||||
OpBranchConditional %133 %135 %134
|
||||
%135 = OpLabel
|
||||
%136 = OpLoad %15 %29
|
||||
%137 = OpLoad %8 %32
|
||||
%138 = OpConvertSToF %6 %137
|
||||
%139 = OpFDiv %6 %12 %138
|
||||
%140 = OpVectorTimesScalar %15 %136 %139
|
||||
%141 = OpLoad %15 %26
|
||||
%142 = OpFSub %15 %140 %141
|
||||
OpStore %29 %142
|
||||
OpBranch %134
|
||||
%134 = OpLabel
|
||||
%143 = OpLoad %8 %34
|
||||
%144 = OpSGreaterThan %47 %143 %7
|
||||
OpSelectionMerge %145 None
|
||||
OpBranchConditional %144 %146 %145
|
||||
%146 = OpLabel
|
||||
%147 = OpLoad %15 %30
|
||||
%148 = OpLoad %8 %34
|
||||
%149 = OpConvertSToF %6 %148
|
||||
%150 = OpFDiv %6 %12 %149
|
||||
%151 = OpVectorTimesScalar %15 %147 %150
|
||||
OpStore %30 %151
|
||||
OpBranch %145
|
||||
%145 = OpLabel
|
||||
%152 = OpLoad %15 %28
|
||||
%153 = OpLoad %15 %29
|
||||
%155 = OpAccessChain %90 %21 %154
|
||||
%156 = OpLoad %6 %155
|
||||
%157 = OpVectorTimesScalar %15 %153 %156
|
||||
%158 = OpFAdd %15 %152 %157
|
||||
%159 = OpLoad %15 %31
|
||||
%161 = OpAccessChain %90 %21 %160
|
||||
%162 = OpLoad %6 %161
|
||||
%163 = OpVectorTimesScalar %15 %159 %162
|
||||
%164 = OpFAdd %15 %158 %163
|
||||
%165 = OpLoad %15 %30
|
||||
%167 = OpAccessChain %90 %21 %166
|
||||
%168 = OpLoad %6 %167
|
||||
%169 = OpVectorTimesScalar %15 %165 %168
|
||||
%170 = OpFAdd %15 %164 %169
|
||||
OpStore %28 %170
|
||||
%171 = OpLoad %15 %28
|
||||
%172 = OpExtInst %15 %1 Normalize %171
|
||||
%173 = OpLoad %15 %28
|
||||
%174 = OpExtInst %6 %1 Length %173
|
||||
%175 = OpExtInst %6 %1 FClamp %174 %5 %13
|
||||
%176 = OpVectorTimesScalar %15 %172 %175
|
||||
OpStore %28 %176
|
||||
%177 = OpLoad %15 %26
|
||||
%178 = OpLoad %15 %28
|
||||
%180 = OpAccessChain %90 %21 %179
|
||||
%181 = OpLoad %6 %180
|
||||
%182 = OpVectorTimesScalar %15 %178 %181
|
||||
%183 = OpFAdd %15 %177 %182
|
||||
OpStore %26 %183
|
||||
%184 = OpLoad %15 %26
|
||||
%185 = OpCompositeExtract %6 %184 0
|
||||
%186 = OpFOrdLessThan %47 %185 %14
|
||||
OpSelectionMerge %187 None
|
||||
OpBranchConditional %186 %188 %187
|
||||
%188 = OpLabel
|
||||
%191 = OpAccessChain %189 %26 %190
|
||||
OpStore %191 %12
|
||||
OpBranch %187
|
||||
%187 = OpLabel
|
||||
%192 = OpLoad %15 %26
|
||||
%193 = OpCompositeExtract %6 %192 0
|
||||
%194 = OpFOrdGreaterThan %47 %193 %12
|
||||
OpSelectionMerge %195 None
|
||||
OpBranchConditional %194 %196 %195
|
||||
%196 = OpLabel
|
||||
%198 = OpAccessChain %189 %26 %197
|
||||
%74 = OpAccessChain %53 %23 %7 %73 %7
|
||||
%75 = OpLoad %15 %74
|
||||
OpStore %35 %75
|
||||
%76 = OpLoad %4 %37
|
||||
%77 = OpAccessChain %53 %23 %7 %76 %10
|
||||
%78 = OpLoad %15 %77
|
||||
OpStore %36 %78
|
||||
%79 = OpLoad %15 %35
|
||||
%80 = OpLoad %15 %26
|
||||
%81 = OpExtInst %6 %1 Distance %79 %80
|
||||
%83 = OpAccessChain %82 %21 %10
|
||||
%84 = OpLoad %6 %83
|
||||
%85 = OpFOrdLessThan %47 %81 %84
|
||||
OpSelectionMerge %86 None
|
||||
OpBranchConditional %85 %87 %86
|
||||
%87 = OpLabel
|
||||
%88 = OpLoad %15 %29
|
||||
%89 = OpLoad %15 %35
|
||||
%90 = OpFAdd %15 %88 %89
|
||||
OpStore %29 %90
|
||||
%91 = OpLoad %8 %32
|
||||
%92 = OpIAdd %8 %91 %10
|
||||
OpStore %32 %92
|
||||
OpBranch %86
|
||||
%86 = OpLabel
|
||||
%93 = OpLoad %15 %35
|
||||
%94 = OpLoad %15 %26
|
||||
%95 = OpExtInst %6 %1 Distance %93 %94
|
||||
%97 = OpAccessChain %82 %21 %96
|
||||
%98 = OpLoad %6 %97
|
||||
%99 = OpFOrdLessThan %47 %95 %98
|
||||
OpSelectionMerge %100 None
|
||||
OpBranchConditional %99 %101 %100
|
||||
%101 = OpLabel
|
||||
%102 = OpLoad %15 %31
|
||||
%103 = OpLoad %15 %35
|
||||
%104 = OpLoad %15 %26
|
||||
%105 = OpFSub %15 %103 %104
|
||||
%106 = OpFSub %15 %102 %105
|
||||
OpStore %31 %106
|
||||
OpBranch %100
|
||||
%100 = OpLabel
|
||||
%107 = OpLoad %15 %35
|
||||
%108 = OpLoad %15 %26
|
||||
%109 = OpExtInst %6 %1 Distance %107 %108
|
||||
%111 = OpAccessChain %82 %21 %110
|
||||
%112 = OpLoad %6 %111
|
||||
%113 = OpFOrdLessThan %47 %109 %112
|
||||
OpSelectionMerge %114 None
|
||||
OpBranchConditional %113 %115 %114
|
||||
%115 = OpLabel
|
||||
%116 = OpLoad %15 %30
|
||||
%117 = OpLoad %15 %36
|
||||
%118 = OpFAdd %15 %116 %117
|
||||
OpStore %30 %118
|
||||
%119 = OpLoad %8 %34
|
||||
%120 = OpIAdd %8 %119 %10
|
||||
OpStore %34 %120
|
||||
OpBranch %114
|
||||
%114 = OpLabel
|
||||
OpBranch %64
|
||||
%64 = OpLabel
|
||||
%121 = OpLoad %4 %37
|
||||
%122 = OpIAdd %4 %121 %11
|
||||
OpStore %37 %122
|
||||
OpBranch %61
|
||||
%62 = OpLabel
|
||||
%123 = OpLoad %8 %32
|
||||
%124 = OpSGreaterThan %47 %123 %7
|
||||
OpSelectionMerge %125 None
|
||||
OpBranchConditional %124 %126 %125
|
||||
%126 = OpLabel
|
||||
%127 = OpLoad %15 %29
|
||||
%128 = OpLoad %8 %32
|
||||
%129 = OpConvertSToF %6 %128
|
||||
%130 = OpFDiv %6 %12 %129
|
||||
%131 = OpVectorTimesScalar %15 %127 %130
|
||||
%132 = OpLoad %15 %26
|
||||
%133 = OpFSub %15 %131 %132
|
||||
OpStore %29 %133
|
||||
OpBranch %125
|
||||
%125 = OpLabel
|
||||
%134 = OpLoad %8 %34
|
||||
%135 = OpSGreaterThan %47 %134 %7
|
||||
OpSelectionMerge %136 None
|
||||
OpBranchConditional %135 %137 %136
|
||||
%137 = OpLabel
|
||||
%138 = OpLoad %15 %30
|
||||
%139 = OpLoad %8 %34
|
||||
%140 = OpConvertSToF %6 %139
|
||||
%141 = OpFDiv %6 %12 %140
|
||||
%142 = OpVectorTimesScalar %15 %138 %141
|
||||
OpStore %30 %142
|
||||
OpBranch %136
|
||||
%136 = OpLabel
|
||||
%143 = OpLoad %15 %28
|
||||
%144 = OpLoad %15 %29
|
||||
%146 = OpAccessChain %82 %21 %145
|
||||
%147 = OpLoad %6 %146
|
||||
%148 = OpVectorTimesScalar %15 %144 %147
|
||||
%149 = OpFAdd %15 %143 %148
|
||||
%150 = OpLoad %15 %31
|
||||
%152 = OpAccessChain %82 %21 %151
|
||||
%153 = OpLoad %6 %152
|
||||
%154 = OpVectorTimesScalar %15 %150 %153
|
||||
%155 = OpFAdd %15 %149 %154
|
||||
%156 = OpLoad %15 %30
|
||||
%158 = OpAccessChain %82 %21 %157
|
||||
%159 = OpLoad %6 %158
|
||||
%160 = OpVectorTimesScalar %15 %156 %159
|
||||
%161 = OpFAdd %15 %155 %160
|
||||
OpStore %28 %161
|
||||
%162 = OpLoad %15 %28
|
||||
%163 = OpExtInst %15 %1 Normalize %162
|
||||
%164 = OpLoad %15 %28
|
||||
%165 = OpExtInst %6 %1 Length %164
|
||||
%166 = OpExtInst %6 %1 FClamp %165 %5 %13
|
||||
%167 = OpVectorTimesScalar %15 %163 %166
|
||||
OpStore %28 %167
|
||||
%168 = OpLoad %15 %26
|
||||
%169 = OpLoad %15 %28
|
||||
%170 = OpAccessChain %82 %21 %7
|
||||
%171 = OpLoad %6 %170
|
||||
%172 = OpVectorTimesScalar %15 %169 %171
|
||||
%173 = OpFAdd %15 %168 %172
|
||||
OpStore %26 %173
|
||||
%174 = OpLoad %15 %26
|
||||
%175 = OpCompositeExtract %6 %174 0
|
||||
%176 = OpFOrdLessThan %47 %175 %14
|
||||
OpSelectionMerge %177 None
|
||||
OpBranchConditional %176 %178 %177
|
||||
%178 = OpLabel
|
||||
%180 = OpAccessChain %179 %26 %7
|
||||
OpStore %180 %12
|
||||
OpBranch %177
|
||||
%177 = OpLabel
|
||||
%181 = OpLoad %15 %26
|
||||
%182 = OpCompositeExtract %6 %181 0
|
||||
%183 = OpFOrdGreaterThan %47 %182 %12
|
||||
OpSelectionMerge %184 None
|
||||
OpBranchConditional %183 %185 %184
|
||||
%185 = OpLabel
|
||||
%186 = OpAccessChain %179 %26 %7
|
||||
OpStore %186 %14
|
||||
OpBranch %184
|
||||
%184 = OpLabel
|
||||
%187 = OpLoad %15 %26
|
||||
%188 = OpCompositeExtract %6 %187 1
|
||||
%189 = OpFOrdLessThan %47 %188 %14
|
||||
OpSelectionMerge %190 None
|
||||
OpBranchConditional %189 %191 %190
|
||||
%191 = OpLabel
|
||||
%192 = OpAccessChain %179 %26 %10
|
||||
OpStore %192 %12
|
||||
OpBranch %190
|
||||
%190 = OpLabel
|
||||
%193 = OpLoad %15 %26
|
||||
%194 = OpCompositeExtract %6 %193 1
|
||||
%195 = OpFOrdGreaterThan %47 %194 %12
|
||||
OpSelectionMerge %196 None
|
||||
OpBranchConditional %195 %197 %196
|
||||
%197 = OpLabel
|
||||
%198 = OpAccessChain %179 %26 %10
|
||||
OpStore %198 %14
|
||||
OpBranch %195
|
||||
%195 = OpLabel
|
||||
OpBranch %196
|
||||
%196 = OpLabel
|
||||
%199 = OpLoad %15 %26
|
||||
%200 = OpCompositeExtract %6 %199 1
|
||||
%201 = OpFOrdLessThan %47 %200 %14
|
||||
OpSelectionMerge %202 None
|
||||
OpBranchConditional %201 %203 %202
|
||||
%203 = OpLabel
|
||||
%205 = OpAccessChain %189 %26 %204
|
||||
OpStore %205 %12
|
||||
OpBranch %202
|
||||
%202 = OpLabel
|
||||
%206 = OpLoad %15 %26
|
||||
%207 = OpCompositeExtract %6 %206 1
|
||||
%208 = OpFOrdGreaterThan %47 %207 %12
|
||||
OpSelectionMerge %209 None
|
||||
OpBranchConditional %208 %210 %209
|
||||
%210 = OpLabel
|
||||
%212 = OpAccessChain %189 %26 %211
|
||||
OpStore %212 %14
|
||||
OpBranch %209
|
||||
%209 = OpLabel
|
||||
%213 = OpLoad %15 %26
|
||||
%216 = OpAccessChain %53 %25 %215 %46 %214
|
||||
OpStore %216 %213
|
||||
%217 = OpLoad %15 %28
|
||||
%220 = OpAccessChain %53 %25 %219 %46 %218
|
||||
OpStore %220 %217
|
||||
%200 = OpAccessChain %53 %25 %7 %46 %7
|
||||
OpStore %200 %199
|
||||
%201 = OpLoad %15 %28
|
||||
%202 = OpAccessChain %53 %25 %7 %46 %10
|
||||
OpStore %202 %201
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -5,7 +5,7 @@ expression: dis
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: rspirv
|
||||
; Bound: 62
|
||||
; Bound: 61
|
||||
OpCapability Shader
|
||||
OpExtension "SPV_KHR_storage_buffer_storage_class"
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
@ -49,7 +49,6 @@ OpDecorate %45 BuiltIn GlobalInvocationId
|
||||
%53 = OpTypePointer StorageBuffer %4
|
||||
%55 = OpTypeInt 32 1
|
||||
%56 = OpConstant %55 0
|
||||
%60 = OpConstant %55 0
|
||||
%18 = OpFunction %4 None %19
|
||||
%17 = OpFunctionParameter %4
|
||||
%16 = OpLabel
|
||||
@ -107,7 +106,7 @@ OpBranch %50
|
||||
%57 = OpAccessChain %53 %11 %56 %54
|
||||
%58 = OpLoad %4 %57
|
||||
%59 = OpFunctionCall %4 %18 %58
|
||||
%61 = OpAccessChain %53 %11 %60 %52
|
||||
OpStore %61 %59
|
||||
%60 = OpAccessChain %53 %11 %56 %52
|
||||
OpStore %60 %59
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -5,13 +5,13 @@ expression: dis
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: rspirv
|
||||
; Bound: 66
|
||||
; Bound: 65
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint Vertex %28 "main" %19 %22 %24 %26
|
||||
OpEntryPoint Fragment %52 "main" %49 %51
|
||||
OpExecutionMode %52 OriginUpperLeft
|
||||
OpEntryPoint Fragment %51 "main" %48 %50
|
||||
OpExecutionMode %51 OriginUpperLeft
|
||||
OpSource GLSL 450
|
||||
OpName %3 "c_scale"
|
||||
OpName %9 "VertexOutput"
|
||||
@ -26,9 +26,9 @@ OpName %24 "uv"
|
||||
OpName %26 "position"
|
||||
OpName %28 "main"
|
||||
OpName %28 "main"
|
||||
OpName %49 "uv"
|
||||
OpName %52 "main"
|
||||
OpName %52 "main"
|
||||
OpName %48 "uv"
|
||||
OpName %51 "main"
|
||||
OpName %51 "main"
|
||||
OpMemberDecorate %9 0 Offset 0
|
||||
OpMemberDecorate %9 1 Offset 16
|
||||
OpDecorate %12 DescriptorSet 0
|
||||
@ -39,8 +39,8 @@ OpDecorate %19 Location 0
|
||||
OpDecorate %22 Location 1
|
||||
OpDecorate %24 Location 0
|
||||
OpDecorate %26 BuiltIn Position
|
||||
OpDecorate %49 Location 0
|
||||
OpDecorate %51 Location 0
|
||||
OpDecorate %48 Location 0
|
||||
OpDecorate %50 Location 0
|
||||
%2 = OpTypeVoid
|
||||
%4 = OpTypeFloat 32
|
||||
%3 = OpConstant %4 1.2
|
||||
@ -70,11 +70,10 @@ OpDecorate %51 Location 0
|
||||
%35 = OpTypePointer Function %8
|
||||
%38 = OpConstant %32 1
|
||||
%44 = OpTypePointer Output %4
|
||||
%45 = OpConstant %32 1
|
||||
%49 = OpVariable %20 Input
|
||||
%51 = OpVariable %27 Output
|
||||
%56 = OpTypeSampledImage %10
|
||||
%60 = OpTypeBool
|
||||
%48 = OpVariable %20 Input
|
||||
%50 = OpVariable %27 Output
|
||||
%55 = OpTypeSampledImage %10
|
||||
%59 = OpTypeBool
|
||||
%28 = OpFunction %2 None %29
|
||||
%18 = OpLabel
|
||||
%16 = OpVariable %17 Function
|
||||
@ -93,30 +92,30 @@ OpStore %39 %37
|
||||
OpStore %24 %41
|
||||
%42 = OpCompositeExtract %8 %40 1
|
||||
OpStore %26 %42
|
||||
%43 = OpAccessChain %44 %26 %45
|
||||
%46 = OpLoad %4 %43
|
||||
%47 = OpFNegate %4 %46
|
||||
OpStore %43 %47
|
||||
%43 = OpAccessChain %44 %26 %38
|
||||
%45 = OpLoad %4 %43
|
||||
%46 = OpFNegate %4 %45
|
||||
OpStore %43 %46
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%52 = OpFunction %2 None %29
|
||||
%48 = OpLabel
|
||||
%50 = OpLoad %7 %49
|
||||
%53 = OpLoad %10 %12
|
||||
%54 = OpLoad %11 %14
|
||||
OpBranch %55
|
||||
%55 = OpLabel
|
||||
%57 = OpSampledImage %56 %53 %54
|
||||
%58 = OpImageSampleImplicitLod %8 %57 %50
|
||||
%59 = OpCompositeExtract %4 %58 3
|
||||
%61 = OpFOrdEqual %60 %59 %5
|
||||
OpSelectionMerge %62 None
|
||||
OpBranchConditional %61 %63 %62
|
||||
%63 = OpLabel
|
||||
OpKill
|
||||
%51 = OpFunction %2 None %29
|
||||
%47 = OpLabel
|
||||
%49 = OpLoad %7 %48
|
||||
%52 = OpLoad %10 %12
|
||||
%53 = OpLoad %11 %14
|
||||
OpBranch %54
|
||||
%54 = OpLabel
|
||||
%56 = OpSampledImage %55 %52 %53
|
||||
%57 = OpImageSampleImplicitLod %8 %56 %49
|
||||
%58 = OpCompositeExtract %4 %57 3
|
||||
%60 = OpFOrdEqual %59 %58 %5
|
||||
OpSelectionMerge %61 None
|
||||
OpBranchConditional %60 %62 %61
|
||||
%62 = OpLabel
|
||||
%64 = OpCompositeExtract %4 %58 3
|
||||
%65 = OpVectorTimesScalar %8 %58 %64
|
||||
OpStore %51 %65
|
||||
OpKill
|
||||
%61 = OpLabel
|
||||
%63 = OpCompositeExtract %4 %57 3
|
||||
%64 = OpVectorTimesScalar %8 %57 %63
|
||||
OpStore %50 %64
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -5,7 +5,7 @@ expression: dis
|
||||
; SPIR-V
|
||||
; Version: 1.2
|
||||
; Generator: rspirv
|
||||
; Bound: 137
|
||||
; Bound: 136
|
||||
OpCapability Shader
|
||||
OpExtension "SPV_KHR_storage_buffer_storage_class"
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
@ -105,7 +105,6 @@ OpDecorate %79 Location 0
|
||||
%93 = OpConstant %56 0
|
||||
%101 = OpTypePointer StorageBuffer %18
|
||||
%103 = OpTypePointer StorageBuffer %17
|
||||
%104 = OpConstant %56 0
|
||||
%36 = OpFunction %4 None %37
|
||||
%34 = OpFunctionParameter %10
|
||||
%35 = OpFunctionParameter %16
|
||||
@ -170,44 +169,44 @@ OpBranchConditional %98 %100 %99
|
||||
OpBranch %88
|
||||
%99 = OpLabel
|
||||
%102 = OpLoad %10 %70
|
||||
%105 = OpAccessChain %103 %27 %104 %102
|
||||
%106 = OpLoad %17 %105
|
||||
%107 = OpLoad %10 %70
|
||||
%108 = OpCompositeExtract %15 %106 0
|
||||
%109 = OpMatrixTimesVector %16 %108 %78
|
||||
%110 = OpFunctionCall %4 %36 %107 %109
|
||||
%111 = OpCompositeExtract %16 %106 1
|
||||
%112 = OpCompositeExtract %4 %111 0
|
||||
%113 = OpCompositeExtract %4 %111 1
|
||||
%114 = OpCompositeExtract %4 %111 2
|
||||
%115 = OpCompositeConstruct %23 %112 %113 %114
|
||||
%116 = OpCompositeExtract %4 %78 0
|
||||
%117 = OpCompositeExtract %4 %78 1
|
||||
%118 = OpCompositeExtract %4 %78 2
|
||||
%119 = OpCompositeConstruct %23 %116 %117 %118
|
||||
%120 = OpFSub %23 %115 %119
|
||||
%121 = OpExtInst %23 %1 Normalize %120
|
||||
%122 = OpDot %4 %86 %121
|
||||
%123 = OpExtInst %4 %1 FMax %3 %122
|
||||
%124 = OpLoad %23 %68
|
||||
%125 = OpFMul %4 %110 %123
|
||||
%126 = OpCompositeExtract %16 %106 2
|
||||
%127 = OpCompositeExtract %4 %126 0
|
||||
%128 = OpCompositeExtract %4 %126 1
|
||||
%129 = OpCompositeExtract %4 %126 2
|
||||
%130 = OpCompositeConstruct %23 %127 %128 %129
|
||||
%131 = OpVectorTimesScalar %23 %130 %125
|
||||
%132 = OpFAdd %23 %124 %131
|
||||
OpStore %68 %132
|
||||
%104 = OpAccessChain %103 %27 %93 %102
|
||||
%105 = OpLoad %17 %104
|
||||
%106 = OpLoad %10 %70
|
||||
%107 = OpCompositeExtract %15 %105 0
|
||||
%108 = OpMatrixTimesVector %16 %107 %78
|
||||
%109 = OpFunctionCall %4 %36 %106 %108
|
||||
%110 = OpCompositeExtract %16 %105 1
|
||||
%111 = OpCompositeExtract %4 %110 0
|
||||
%112 = OpCompositeExtract %4 %110 1
|
||||
%113 = OpCompositeExtract %4 %110 2
|
||||
%114 = OpCompositeConstruct %23 %111 %112 %113
|
||||
%115 = OpCompositeExtract %4 %78 0
|
||||
%116 = OpCompositeExtract %4 %78 1
|
||||
%117 = OpCompositeExtract %4 %78 2
|
||||
%118 = OpCompositeConstruct %23 %115 %116 %117
|
||||
%119 = OpFSub %23 %114 %118
|
||||
%120 = OpExtInst %23 %1 Normalize %119
|
||||
%121 = OpDot %4 %86 %120
|
||||
%122 = OpExtInst %4 %1 FMax %3 %121
|
||||
%123 = OpLoad %23 %68
|
||||
%124 = OpFMul %4 %109 %122
|
||||
%125 = OpCompositeExtract %16 %105 2
|
||||
%126 = OpCompositeExtract %4 %125 0
|
||||
%127 = OpCompositeExtract %4 %125 1
|
||||
%128 = OpCompositeExtract %4 %125 2
|
||||
%129 = OpCompositeConstruct %23 %126 %127 %128
|
||||
%130 = OpVectorTimesScalar %23 %129 %124
|
||||
%131 = OpFAdd %23 %123 %130
|
||||
OpStore %68 %131
|
||||
OpBranch %90
|
||||
%90 = OpLabel
|
||||
%133 = OpLoad %10 %70
|
||||
%134 = OpIAdd %10 %133 %12
|
||||
OpStore %70 %134
|
||||
%132 = OpLoad %10 %70
|
||||
%133 = OpIAdd %10 %132 %12
|
||||
OpStore %70 %133
|
||||
OpBranch %87
|
||||
%88 = OpLabel
|
||||
%135 = OpLoad %23 %68
|
||||
%136 = OpCompositeConstruct %16 %135 %5
|
||||
OpStore %79 %136
|
||||
%134 = OpLoad %23 %68
|
||||
%135 = OpCompositeConstruct %16 %134 %5
|
||||
OpStore %79 %135
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -5,13 +5,13 @@ expression: dis
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: rspirv
|
||||
; Bound: 121
|
||||
; Bound: 115
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint Vertex %38 "vs_main" %31 %34 %36
|
||||
OpEntryPoint Fragment %113 "fs_main" %106 %109 %112
|
||||
OpExecutionMode %113 OriginUpperLeft
|
||||
OpEntryPoint Fragment %107 "fs_main" %100 %103 %106
|
||||
OpExecutionMode %107 OriginUpperLeft
|
||||
OpSource GLSL 450
|
||||
OpName %12 "VertexOutput"
|
||||
OpMemberName %12 0 "position"
|
||||
@ -30,10 +30,10 @@ OpName %34 "position"
|
||||
OpName %36 "uv"
|
||||
OpName %38 "vs_main"
|
||||
OpName %38 "vs_main"
|
||||
OpName %106 "position"
|
||||
OpName %109 "uv"
|
||||
OpName %113 "fs_main"
|
||||
OpName %113 "fs_main"
|
||||
OpName %100 "position"
|
||||
OpName %103 "uv"
|
||||
OpName %107 "fs_main"
|
||||
OpName %107 "fs_main"
|
||||
OpMemberDecorate %12 0 Offset 0
|
||||
OpMemberDecorate %12 1 Offset 16
|
||||
OpDecorate %14 Block
|
||||
@ -52,9 +52,9 @@ OpDecorate %23 Binding 2
|
||||
OpDecorate %31 BuiltIn VertexIndex
|
||||
OpDecorate %34 BuiltIn Position
|
||||
OpDecorate %36 Location 0
|
||||
OpDecorate %106 BuiltIn FragCoord
|
||||
OpDecorate %109 Location 0
|
||||
OpDecorate %112 Location 0
|
||||
OpDecorate %100 BuiltIn FragCoord
|
||||
OpDecorate %103 Location 0
|
||||
OpDecorate %106 Location 0
|
||||
%2 = OpTypeVoid
|
||||
%4 = OpTypeInt 32 1
|
||||
%3 = OpConstant %4 2
|
||||
@ -88,22 +88,16 @@ OpDecorate %112 Location 0
|
||||
%36 = OpVariable %37 Output
|
||||
%39 = OpTypeFunction %2
|
||||
%54 = OpTypePointer Uniform %13
|
||||
%55 = OpConstant %4 1
|
||||
%63 = OpConstant %4 1
|
||||
%71 = OpConstant %4 1
|
||||
%81 = OpConstant %4 0
|
||||
%85 = OpTypePointer Function %11
|
||||
%91 = OpConstant %4 1
|
||||
%93 = OpTypePointer Function %10
|
||||
%94 = OpConstant %4 0
|
||||
%99 = OpTypePointer Output %7
|
||||
%100 = OpConstant %4 1
|
||||
%107 = OpTypePointer Input %10
|
||||
%106 = OpVariable %107 Input
|
||||
%110 = OpTypePointer Input %11
|
||||
%109 = OpVariable %110 Input
|
||||
%112 = OpVariable %35 Output
|
||||
%118 = OpTypeSampledImage %17
|
||||
%78 = OpConstant %4 0
|
||||
%82 = OpTypePointer Function %11
|
||||
%89 = OpTypePointer Function %10
|
||||
%94 = OpTypePointer Output %7
|
||||
%101 = OpTypePointer Input %10
|
||||
%100 = OpVariable %101 Input
|
||||
%104 = OpTypePointer Input %11
|
||||
%103 = OpVariable %104 Input
|
||||
%106 = OpVariable %35 Output
|
||||
%112 = OpTypeSampledImage %17
|
||||
%38 = OpFunction %2 None %39
|
||||
%30 = OpLabel
|
||||
%25 = OpVariable %26 Function
|
||||
@ -127,64 +121,64 @@ OpStore %27 %44
|
||||
%51 = OpFMul %7 %50 %6
|
||||
%52 = OpFSub %7 %51 %8
|
||||
%53 = OpCompositeConstruct %10 %48 %52 %9 %8
|
||||
%56 = OpAccessChain %54 %19 %55
|
||||
%57 = OpLoad %13 %56
|
||||
%58 = OpCompositeExtract %10 %57 0
|
||||
%59 = OpCompositeExtract %7 %58 0
|
||||
%60 = OpCompositeExtract %7 %58 1
|
||||
%61 = OpCompositeExtract %7 %58 2
|
||||
%62 = OpCompositeConstruct %11 %59 %60 %61
|
||||
%64 = OpAccessChain %54 %19 %63
|
||||
%65 = OpLoad %13 %64
|
||||
%66 = OpCompositeExtract %10 %65 1
|
||||
%67 = OpCompositeExtract %7 %66 0
|
||||
%68 = OpCompositeExtract %7 %66 1
|
||||
%69 = OpCompositeExtract %7 %66 2
|
||||
%70 = OpCompositeConstruct %11 %67 %68 %69
|
||||
%72 = OpAccessChain %54 %19 %71
|
||||
%73 = OpLoad %13 %72
|
||||
%74 = OpCompositeExtract %10 %73 2
|
||||
%75 = OpCompositeExtract %7 %74 0
|
||||
%76 = OpCompositeExtract %7 %74 1
|
||||
%77 = OpCompositeExtract %7 %74 2
|
||||
%78 = OpCompositeConstruct %11 %75 %76 %77
|
||||
%79 = OpCompositeConstruct %16 %62 %70 %78
|
||||
%80 = OpTranspose %16 %79
|
||||
%82 = OpAccessChain %54 %19 %81
|
||||
%83 = OpLoad %13 %82
|
||||
%84 = OpMatrixTimesVector %10 %83 %53
|
||||
%86 = OpCompositeExtract %7 %84 0
|
||||
%87 = OpCompositeExtract %7 %84 1
|
||||
%88 = OpCompositeExtract %7 %84 2
|
||||
%89 = OpCompositeConstruct %11 %86 %87 %88
|
||||
%90 = OpMatrixTimesVector %11 %80 %89
|
||||
%92 = OpAccessChain %85 %28 %91
|
||||
OpStore %92 %90
|
||||
%95 = OpAccessChain %93 %28 %94
|
||||
OpStore %95 %53
|
||||
%96 = OpLoad %12 %28
|
||||
%97 = OpCompositeExtract %10 %96 0
|
||||
OpStore %34 %97
|
||||
%98 = OpAccessChain %99 %34 %100
|
||||
%101 = OpLoad %7 %98
|
||||
%102 = OpFNegate %7 %101
|
||||
OpStore %98 %102
|
||||
%103 = OpCompositeExtract %11 %96 1
|
||||
OpStore %36 %103
|
||||
%55 = OpAccessChain %54 %19 %5
|
||||
%56 = OpLoad %13 %55
|
||||
%57 = OpCompositeExtract %10 %56 0
|
||||
%58 = OpCompositeExtract %7 %57 0
|
||||
%59 = OpCompositeExtract %7 %57 1
|
||||
%60 = OpCompositeExtract %7 %57 2
|
||||
%61 = OpCompositeConstruct %11 %58 %59 %60
|
||||
%62 = OpAccessChain %54 %19 %5
|
||||
%63 = OpLoad %13 %62
|
||||
%64 = OpCompositeExtract %10 %63 1
|
||||
%65 = OpCompositeExtract %7 %64 0
|
||||
%66 = OpCompositeExtract %7 %64 1
|
||||
%67 = OpCompositeExtract %7 %64 2
|
||||
%68 = OpCompositeConstruct %11 %65 %66 %67
|
||||
%69 = OpAccessChain %54 %19 %5
|
||||
%70 = OpLoad %13 %69
|
||||
%71 = OpCompositeExtract %10 %70 2
|
||||
%72 = OpCompositeExtract %7 %71 0
|
||||
%73 = OpCompositeExtract %7 %71 1
|
||||
%74 = OpCompositeExtract %7 %71 2
|
||||
%75 = OpCompositeConstruct %11 %72 %73 %74
|
||||
%76 = OpCompositeConstruct %16 %61 %68 %75
|
||||
%77 = OpTranspose %16 %76
|
||||
%79 = OpAccessChain %54 %19 %78
|
||||
%80 = OpLoad %13 %79
|
||||
%81 = OpMatrixTimesVector %10 %80 %53
|
||||
%83 = OpCompositeExtract %7 %81 0
|
||||
%84 = OpCompositeExtract %7 %81 1
|
||||
%85 = OpCompositeExtract %7 %81 2
|
||||
%86 = OpCompositeConstruct %11 %83 %84 %85
|
||||
%87 = OpMatrixTimesVector %11 %77 %86
|
||||
%88 = OpAccessChain %82 %28 %5
|
||||
OpStore %88 %87
|
||||
%90 = OpAccessChain %89 %28 %78
|
||||
OpStore %90 %53
|
||||
%91 = OpLoad %12 %28
|
||||
%92 = OpCompositeExtract %10 %91 0
|
||||
OpStore %34 %92
|
||||
%93 = OpAccessChain %94 %34 %5
|
||||
%95 = OpLoad %7 %93
|
||||
%96 = OpFNegate %7 %95
|
||||
OpStore %93 %96
|
||||
%97 = OpCompositeExtract %11 %91 1
|
||||
OpStore %36 %97
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%113 = OpFunction %2 None %39
|
||||
%104 = OpLabel
|
||||
%108 = OpLoad %10 %106
|
||||
%111 = OpLoad %11 %109
|
||||
%105 = OpCompositeConstruct %12 %108 %111
|
||||
%114 = OpLoad %17 %21
|
||||
%115 = OpLoad %18 %23
|
||||
OpBranch %116
|
||||
%116 = OpLabel
|
||||
%117 = OpCompositeExtract %11 %105 1
|
||||
%119 = OpSampledImage %118 %114 %115
|
||||
%120 = OpImageSampleImplicitLod %10 %119 %117
|
||||
OpStore %112 %120
|
||||
%107 = OpFunction %2 None %39
|
||||
%98 = OpLabel
|
||||
%102 = OpLoad %10 %100
|
||||
%105 = OpLoad %11 %103
|
||||
%99 = OpCompositeConstruct %12 %102 %105
|
||||
%108 = OpLoad %17 %21
|
||||
%109 = OpLoad %18 %23
|
||||
OpBranch %110
|
||||
%110 = OpLabel
|
||||
%111 = OpCompositeExtract %11 %99 1
|
||||
%113 = OpSampledImage %112 %108 %109
|
||||
%114 = OpImageSampleImplicitLod %10 %113 %111
|
||||
OpStore %106 %114
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
Loading…
Reference in New Issue
Block a user