Sobre GPU y fragment sheiders

Este sera un espacio para decir cual gpu es para desarrollar con ella y crear softwere de sheiders.
Ademas de podeis poner buestro codigo aqui.

1 me gusta

Una aclaracion para portatiles biejos como el n455, el modelo que tengo yo, no puede ejecutar numpy ya se ve que la librerias integradas en el mismo numpy no lo soporta el ISA de ese modelo de intel para esa misma cpu.

Asi que no se podria usar numpy, hay una alternatiba para utilizar aceleracion por hardwere?

Tipos de ejemplos: cpus de <Y2K tipos como i8086, 486, Ipentium(I II III)
aunque esos procesadores podian con DOOM(93s) o Quake con el ray-tracing o con los fragment sheder.

# By Jon M. GPLv3 (C)2026

from pathlib import Path

def parse_obj(path):
    '''
    this fn is a paser
    name `parse_obj`
    arguments `path`
    output `tuple`
    '''
    vertices = []
    uvs = []
    normals = []
    faces = []
    material_libraries = []

    with Path(path).open(encoding="utf-8") as file:
        for line_number, raw_line in enumerate(file, start=1):
            # Ignora comentarios y líneas vacías
            line = raw_line.split("#", 1)[0].strip()
            if not line:
                continue

            parts = line.split()
            kind, values = parts[0], parts[1:]

            if kind == "v":
                vertices.append(tuple(map(float, values[:3])))

            elif kind == "vt":
                uvs.append(tuple(map(float, values[:2])))

            elif kind == "vn":
                normals.append(tuple(map(float, values[:3])))

            elif kind == "f":
                face = []

                for token in values:
                    # Cada vértice de cara puede ser v, v/vt o v/vt/vn
                    indices = token.split("/")
                    vi = obj_index(indices[0], len(vertices))
                    ti = obj_index(indices[1], len(uvs)) if len(indices) > 1 and indices[1] else None
                    ni = obj_index(indices[2], len(normals)) if len(indices) > 2 and indices[2] else None
                    face.append((vi, ti, ni))

                faces.append(face)

            elif kind == "mtllib":
                material_libraries.extend(values)

    return vertices, uvs, normals, faces, material_libraries


def obj_index(text, current_count):
    """Convierte un índice OBJ a índice Python (base 0)."""
    index = int(text)

    if index == 0:
        raise ValueError("Los índices OBJ no pueden ser 0")

    result = index - 1 if index > 0 else current_count + index

    if not 0 <= result < current_count:
        raise ValueError(f"Índice OBJ fuera de rango: {index}")

    return result

if __name__=='__main__':
    src = Path(__file__).resolve().parent
    name = "test"
    obj_path = src / "modls" / name / f"{name}.obj"

    vs, uv, ns, faces, mtllibs = parse_obj(obj_path)

    print(f"Vértices: {len(vs)}")
    print(f"UVs: {len(uv)}")
    print(f"Normales: {len(ns)}")
    print(f"Caras: {len(faces)}")
    print(f"Bibliotecas de materiales: {mtllibs}")

Repositorio del git, nombre del proyecto mgme.
informacion vrebe:
un engine de 2D & 3D mediante python y en un futuro aceleración grafica.