| 195 | } |
| 196 | |
| 197 | const Char* ShaderGraphUtilities::GenerateSamplers(TextWriterUnicode& writer, Array<SerializedMaterialParam>& parameters, int32 startRegister) |
| 198 | { |
| 199 | for (int32 i = 0; i < parameters.Count(); i++) |
| 200 | { |
| 201 | auto& param = parameters[i]; |
| 202 | const Char* format; |
| 203 | switch (param.Type) |
| 204 | { |
| 205 | case MaterialParameterType::TextureGroupSampler: |
| 206 | format = TEXT("sampler {0} : register(s{1});"); |
| 207 | break; |
| 208 | default: |
| 209 | format = nullptr; |
| 210 | break; |
| 211 | } |
| 212 | if (format) |
| 213 | { |
| 214 | param.Offset = 0; |
| 215 | param.RegisterIndex = (byte)startRegister; |
| 216 | writer.WriteLine(format, param.ShaderName, startRegister); |
| 217 | startRegister++; |
| 218 | if (param.RegisterIndex >= GPU_MAX_SAMPLER_BINDED) |
| 219 | { |
| 220 | return TEXT("Too many samplers used. The maximum supported amount is " MACRO_TO_STR(GPU_MAX_SAMPLER_BINDED) "."); |
| 221 | } |
| 222 | } |
| 223 | } |
| 224 | return nullptr; |
| 225 | } |
| 226 | |
| 227 | template<typename T> |
| 228 | const Char* GetTypename() |