Skip to content

Instantly share code, notes, and snippets.

View uvolchyk's full-sized avatar
🪄
Crafting

Uladzislau Volchyk uvolchyk

🪄
Crafting
View GitHub Profile
@uvolchyk
uvolchyk / raytracing.py
Created March 8, 2020 19:43 — forked from rossant/raytracing.py
Very simple ray tracing engine in (almost) pure Python. Depends on NumPy and Matplotlib. Diffuse and specular lighting, simple shadows, reflections, no refraction. Purely sequential algorithm, slow execution.
"""
MIT License
Copyright (c) 2017 Cyrille Rossant
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
import UIKit
let kPadding: CGFloat = 20
let kAnimationDuration: TimeInterval = 0.3
let kAnimationDelay: TimeInterval = 0
let kTextSpacing: CGFloat = 10
let kFondSize: CGFloat = 20
class MagicCell: UITableViewCell {
struct News {
let title: String
let summary: String
let date: String
}
class ViewData {
private let raw: News
var expanded: Bool
var title: String { raw.title }
import UIKit
let reuseIdentifier = "cellIdentifier"
class MagicController: UIViewController {
let data: [ViewData] = DataProvider.data
lazy var tableView: UITableView = {
let view = UITableView()
import SwiftUI
// MARK: - Scroll Behavior
/// A structure that defines a snapping behavior for scroll targets, conforming to `ScrollTargetBehavior`.
struct SnapScrollTargetBehavior: ScrollTargetBehavior {
/// The step value to which the scroll target should snap.
let step: Double
/// Computes the closest multiple of `b` to the given value `a`.
import MetalKit
final class DissolveRenderer: NSObject {
private let device: MTLDevice
private let commandQueue: MTLCommandQueue
private let pipelineState: MTLRenderPipelineState
private var vertexBuffer: MTLBuffer!
private var vertexCount = 0
import SwiftUI
/// Represents Apple's "Hello" greeting.
/// Requires .frame(width: 1212, height: 401) canvas to display correctly
struct HelloShape: Shape {
func path(in rect: CGRect) -> Path {
var shape = Path()
shape.move(to: CGPoint(x: 18, y: 362.78))
shape.addCurve(to: CGPoint(x: 255.5, y: 72.78), control1: CGPoint(x: 123.36, y: 301.04), control2: CGPoint(x: 240.76, y: 204.38))
import MetalKit
struct ConstantBuffer<T> {
let length: Int
var data: UnsafeMutablePointer<T>
var position: Int
static var stepSize: Int {
MemoryLayout<T>.stride
}
import UIKit
public final class SpatialContainerView: UIVisualEffectView {
private lazy var borderLayer: CAShapeLayer = {
let layer = CAShapeLayer()
layer.strokeColor = UIColor.white.withAlphaComponent(0.2).cgColor
layer.fillColor = UIColor.clear.cgColor
layer.lineWidth = borderWidth
return layer
}()
import SwiftUI
struct BloomingFirework: View {
@State var time: Double = 0
let endPoint: CGPoint
let burstColor: Color
let timer = Timer.publish(
every: 1/120,
on: .main,