yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
1300678a3
master
1//TEST:SIMPLE(filecheck=CHECK): -target spirv 2// CHECK: OpEntryPoint 3 4__generic <Scalar : __BuiltinFloatingPointType, int Mode> 5struct Spectrum 6{ 7 static const int Samples = Mode & 0xFF; 8 typealias VecT = vector<Scalar, Samples>; 9 VecT data; 10 11 static const bool IsRGB = (Mode & 0x100) != 0; 12 13 __generic <Float : __BuiltinFloatingPointType> 14 __init(vector<Float, Samples> v) 15 { 16 this.data = VecT(v); 17 } 18 19 static This MakeFromRGB<Float : __BuiltinFloatingPointType>(vector<Float, 3> rgb) 20 { 21 if(IsRGB) 22 { 23 return (Spectrum<Scalar, 0x103>(rgb) as This).value; 24 } 25 else 26 { 27 return {}; 28 } 29 } 30} 31 32static const int DefaultMode = 0x103; 33typealias Spec = Spectrum<float, DefaultMode>; 34 35[shader("vertex")] 36Spec main(float3 vertex_color : COLOR0) : COLOR0 37{ 38 return Spec::MakeFromRGB(vertex_color); 39}