// // Shaders.metal // Steve ][ // // Created by Tamas Rudnai on 9/27/19. // Copyright © 2019, 2020 Tamas Rudnai. All rights reserved. // // This file is part of Steve ][ -- The Apple ][ Emulator. // // Steve ][ is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Steve ][ is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Steve ][. If not, see . // #include using namespace metal; vertex float4 basic_vertex( // 1 const device packed_float3* vertex_array [[ buffer(0) ]], // 2 unsigned int vid [[ vertex_id ]]) { // 3 return float4(vertex_array[vid], 1.0); // 4 } fragment half4 basic_fragment() { // 1 return half4(0.7); // 2 } kernel void add_arrays(device const float* inA, device const float* inB, device float* result, uint index [[thread_position_in_grid]]) { // the for-loop is replaced with a collection of threads, each of which // calls this function. result[index] = inA[index] + inB[index] + 1; }