So here's a pretty neat thing, I use VHD's to organize the space on my computer. You can too!
-
Click Start
-
Type in the search bar "Disk par" =>
-
Click first result =>
-
In the program, click "Action" =>
| procedure TEngineMIDIEventList.FindInterval(const aResultList:TEngineMIDIEventDynamicArrayList;const aFromTime,aToTime:TEngineTime); | |
| var Lower,Upper,Mid,Index,StartIndex,MinIndex,MaxIndex, | |
| EventFromIndex,EventToIndex,NextStartIndex,TryIndex:SizeInt; | |
| Event,TemporaryEvent:TEngineMIDIEvent; | |
| FromTime,NextFromTime,EventFromTime,EventToTime, | |
| MinEventTime,MaxEventTime:TEngineTime; | |
| DoAdd:boolean; | |
| begin | |
| if fCount>0 then begin |
So here's a pretty neat thing, I use VHD's to organize the space on my computer. You can too!
Click Start
Type in the search bar "Disk par" =>
Click first result =>
In the program, click "Action" =>
| // Multisampled SDF for text rendering (4x AA with single texture lookup, 16x with four lookups) | |
| // It is for SDF text rendering with 16x antialiasing with only four texture lookups, where an | |
| // SDF texture texel in turn also has four individual SDF values in the RGBA color channels in | |
| // a 4-Rook/RGSS sampling pattern. | |
| // Copyright (C) 2022, Benjamin 'BeRo' Rosseaux - License: Unlicense ( http://unlicense.org/ ) | |
| const float SQRT_0_DOT_5 = sqrt(0.5); | |
| #if FILLTYPE == FILLTYPE_ATLAS_TEXTURE |
| // Fast date functions for FreePascal and Delphi - Pascal implementation by Benjamin Rosseaux - [email protected] - Public Domain | |
| // Based on: https://www.youtube.com/watch?v=J9KijLyP-yg - Implementing Fast Calendar Algorithms: Speeding Date - Cassio Neri - C++ on Sea 2023 | |
| unit PasFastDateUtils; | |
| {$ifdef fpc} | |
| {$mode delphi} | |
| {$endif} | |
| interface | |
| uses SysUtils,Math; |
| // GLSL Octahedral Texture Mapping with Edge Mirroring and Bilinear Interpolation (by Benjamin 'BeRo' Rosseaux) | |
| ivec2 wrapOctahedralTexelCoordinates(const in ivec2 texel, const in ivec2 texSize) { | |
| ivec2 wrapped = ((texel % texSize) + texSize) % texSize; | |
| return ((((abs(texel.x / texSize.x) + int(texel.x < 0)) ^ (abs(texel.y / texSize.y) + int(texel.y < 0))) & 1) != 0) ? (texSize - (wrapped + ivec2(1))) : wrapped; | |
| } | |
| vec4 textureOctahedralMap(const in sampler2D tex, vec3 direction) { | |
| direction = normalize(direction); // just for to make sure that it is normalized | |
| vec2 uv = direction.xy / (abs(direction.x) + abs(direction.y) + abs(direction.z)); |
| // GLSL Octahedral Texture Mapping with Edge Mirroring and Catmull-Rom Interpolation (by Benjamin 'BeRo' Rosseaux) | |
| ivec2 wrapOctahedralTexelCoordinates(const in ivec2 texel, const in ivec2 texSize) { | |
| ivec2 wrapped = ((texel % texSize) + texSize) % texSize; | |
| return ((((abs(texel.x / texSize.x) + int(texel.x < 0)) ^ (abs(texel.y / texSize.y) + int(texel.y < 0))) & 1) != 0) ? (texSize - (wrapped + ivec2(1))) : wrapped; | |
| } | |
| vec4 textureCatmullRomCoefficents(const in float v){ | |
| float t = v, tt = t * t, ttt = tt * t; | |
| return vec4((tt - (ttt * 0.5)) - (0.5 * t), ((ttt * 1.5) - (tt * 2.5)) + 1.0, ((tt * 2.0) - (ttt * 1.5)) + (t * 0.5), (ttt * 0.5) - (tt * 0.5)); |
| // Code (C) by Benjamin 'BeRo' Rosseaux - zlib licensed | |
| // Based on the ideas from Stephen Cameron's https://scaryreasoner.wordpress.com/2016/01/23/thoughts-on-tesselating-a-sphere/ blog post. | |
| // ... | |
| void getCubeSphereNormals(const in int face, in vec4 uv0011, out vec3 vectors[4]){ | |
| const float deltaAngle = 1.5707963267948966; // radians(90.0); | |
| const float startAngle = 0.7853981633974483; // radians(45.0); | |
| const vec3 normals[6] = vec3[6]( |
| // Code (C) by Benjamin 'BeRo' Rosseaux - zlib licensed | |
| // ... | |
| #extension GL_EXT_control_flow_attributes : enable | |
| // ... | |
| uint resolution = pushConstants.resolution; | |
| uint squaredResolution = pushConstants.resolution * pushConstants.resolution; |
| // Copyright 2024, Benjamin 'BeRo' Rosseaux - zlib licensed | |
| //////////////////////////// | |
| // QTangent based variant // | |
| //////////////////////////// | |
| // The qtangent based variant has a better precision than the octahedron/diamond based variant below. | |
| // 10bit 10bit 9bit for the 3 smaller components of the quaternion and 1bit for the sign of the bitangent and 2bit for the | |
| // largest component index for the reconstruction of the largest component of the quaternion. |