Skip to content

Instantly share code, notes, and snippets.

View whoisryosuke's full-sized avatar
👾
Going deep with game development

Ryosuke whoisryosuke

👾
Going deep with game development
View GitHub Profile
@whoisryosuke
whoisryosuke / MultipleMaterials.tsx
Created August 1, 2022 21:19
R3F / ThreeJS - Multiple materials on each cube face. ThreeJS does not support stacking materials -- see instanced geometry + groups.
import * as THREE from "three";
import { MeshProps, useFrame } from "@react-three/fiber";
import { Mesh } from "three";
import { useRef } from "react";
type MultiMaterialMeshProps = MeshProps & {};
export default function MultiMaterialMesh({}: MultiMaterialMeshProps) {
const geom = useRef<Mesh>();
@whoisryosuke
whoisryosuke / CustomShaderWithUniforms.tsx
Created August 1, 2022 21:18
R3F / ThreeJS / Typescript - Custom shader types that support Uniform
import * as THREE from "three";
import { MeshProps, Object3DNode, useFrame } from "@react-three/fiber";
import { GlassViewMaterial } from "./shaders/GlassViewShader";
import { Mesh } from "three";
import { useRef } from "react";
// We extend Mesh and replace material with ShaderMaterial - which our custom shader is based off
interface GlassViewMesh extends THREE.Mesh {
material: THREE.ShaderMaterial;
}
@whoisryosuke
whoisryosuke / Example.tsx
Last active July 7, 2022 00:34
React - Frame/Game loop using requestAnimationFrame
import React, { useEffect, useRef } from "react"
import useLoop from "../hooks/useLoop"
import playerInput from "../utils/playerInput"
type Props = {
}
const Gamepad = ({ }: Props) => {
// The frame/game loop
// We run this 60fps (max) to sync gamepad input to Input class/store
@whoisryosuke
whoisryosuke / Ryo-Blue.xml
Created June 10, 2022 05:52
Blender Theme - Ryo Blue #005cdd -- Save somewhere, go to Blender Preferences > Themes > Install and select XML file.
<bpy>
<Theme>
<user_interface>
<ThemeUserInterface
>
<wcol_regular>
<ThemeWidgetColors
inner_sel="#005cdd"
>
</ThemeWidgetColors>
@whoisryosuke
whoisryosuke / TwitchChatExamplePage.tsx
Created June 9, 2022 01:34
Twitch API + NextJS example. Requires OAuth secret key (see: https://dev.twitch.tv/docs/irc/get-started)
import { useState, useEffect } from "react"
import Head from 'next/head'
import Image from 'next/image'
import styles from '../styles/Home.module.css'
// Example from Twitch API docs
// @see: https://dev.twitch.tv/docs/irc/get-started
import tmi from 'tmi.js';
// Define configuration options
@whoisryosuke
whoisryosuke / Box.tsx
Created May 27, 2022 02:04
Shader / GLSL / OpenGL - Inner border fragment shader (better version with lighter grid inside). Resembles a "prototype" box for "grid"-like level debugging in game development.
import * as THREE from 'three'
import { useFrame, extend, MeshProps } from '@react-three/fiber'
import { useRef, useState } from 'react'
import useStore from '@/helpers/store'
import { shaderMaterial } from '@react-three/drei'
import { Color, Mesh } from "three"
import vertex from './glsl/shader.vert'
import fragment from './glsl/shader.frag'
@whoisryosuke
whoisryosuke / Box.tsx
Created May 27, 2022 00:24
Shader / GLSL / OpenGL - Inner border fragment shader. Resembles a "prototype" box for "grid"-like level debugging in game development.
import * as THREE from 'three'
import { useFrame, extend } from '@react-three/fiber'
import { useRef, useState } from 'react'
import useStore from '@/helpers/store'
import { shaderMaterial } from '@react-three/drei'
import { Mesh } from "three"
import vertex from './glsl/shader.vert'
import fragment from './glsl/shader.frag'
@whoisryosuke
whoisryosuke / border.frag
Created May 27, 2022 00:17
Shader / GLSL / OpenGL - Inner border fragment shader - only border color (not inside)
uniform vec3 color;
uniform float borderWidth;
varying vec2 vUv;
void main() {
// We basically go through the X and Y values to see if they're less than the threshold
// UV goes from 0 to 1, so as X travels from 0 to 1
// we "limit" the color to when X is less than the borderWidth
@whoisryosuke
whoisryosuke / whoisryosuke-v1.osm.json
Created May 17, 2022 19:24
Oh My Posh - My Custom Theme (based on powerlevel10k + night-owl)
{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"blocks": [
{
"alignment": "left",
"segments": [
{
"background": "#ffffff",
"foreground": "#000000",
"leading_diamond": "",