11using System ;
22using System . Collections . Generic ;
3+ using System . Drawing ;
34using System . Linq ;
45using System . Numerics ;
56using System . Runtime . CompilerServices ;
@@ -374,9 +375,26 @@ internal static bool CanStoreUniformData((int, byte[]) data, int size)
374375 return data . Item1 >= 0 && data . Item1 + size <= data . Item2 . Length ;
375376 }
376377
378+ private static void SetValueInternal ( Span < byte > source , ( int , byte [ ] ) ? vertexData , ( int , byte [ ] ) ? fragmentData )
379+ {
380+ if ( vertexData != null && CanStoreUniformData ( vertexData . Value , source . Length ) )
381+ {
382+ var target = new Span < byte > ( vertexData . Value . Item2 , vertexData . Value . Item1 , source . Length ) ;
383+
384+ source . CopyTo ( target ) ;
385+ }
386+
387+ if ( fragmentData != null && CanStoreUniformData ( fragmentData . Value , source . Length ) )
388+ {
389+ var target = new Span < byte > ( fragmentData . Value . Item2 , fragmentData . Value . Item1 , source . Length ) ;
390+
391+ source . CopyTo ( target ) ;
392+ }
393+ }
394+
377395 private void SetValue < T > ( string variantKey , ShaderHandle handle , T value ) where T : unmanaged
378396 {
379- if ( TryGetUniformData ( variantKey , handle , out var uniform , out var vertexData , out var fragmentData ) == false )
397+ if ( TryGetUniformData ( variantKey , handle , out _ , out var vertexData , out var fragmentData ) == false )
380398 {
381399 return ;
382400 }
@@ -387,19 +405,7 @@ private void SetValue<T>(string variantKey, ShaderHandle handle, T value) where
387405 {
388406 var source = new Span < byte > ( & value , size ) ;
389407
390- if ( vertexData != null && CanStoreUniformData ( vertexData . Value , size ) )
391- {
392- var target = new Span < byte > ( vertexData . Value . Item2 , vertexData . Value . Item1 , size ) ;
393-
394- source . CopyTo ( target ) ;
395- }
396-
397- if ( fragmentData != null && CanStoreUniformData ( fragmentData . Value , size ) )
398- {
399- var target = new Span < byte > ( fragmentData . Value . Item2 , fragmentData . Value . Item1 , size ) ;
400-
401- source . CopyTo ( target ) ;
402- }
408+ SetValueInternal ( source , vertexData , fragmentData ) ;
403409 }
404410 }
405411
@@ -418,19 +424,7 @@ private void SetValue<T>(string variantKey, ShaderHandle handle, ReadOnlySpan<T>
418424 var size = Marshal . SizeOf < T > ( ) * count ;
419425 var source = new Span < byte > ( ptr , size ) ;
420426
421- if ( vertexData != null && CanStoreUniformData ( vertexData . Value , size ) )
422- {
423- var target = new Span < byte > ( vertexData . Value . Item2 , vertexData . Value . Item1 , size ) ;
424-
425- source . CopyTo ( target ) ;
426- }
427-
428- if ( fragmentData != null && CanStoreUniformData ( fragmentData . Value , size ) )
429- {
430- var target = new Span < byte > ( fragmentData . Value . Item2 , fragmentData . Value . Item1 , size ) ;
431-
432- source . CopyTo ( target ) ;
433- }
427+ SetValueInternal ( source , vertexData , fragmentData ) ;
434428 }
435429 }
436430 }
0 commit comments