Skip to content

Instantly share code, notes, and snippets.

View ektogamat's full-sized avatar
👋

Anderson Mancini ektogamat

👋
View GitHub Profile
@ektogamat
ektogamat / AnimateCamera.jsx
Created March 14, 2024 01:22
useGSAP with React Three Fiber Camera Animation
import { useThree } from '@react-three/fiber'
import { gsap } from 'gsap'
import { useGSAP } from '@gsap/react'
export default function AnimateCamera() {
// Accessing camera from Three.js
const { camera } = useThree()
useGSAP(() => { // The new hook will take care of context and life cicle.
gsap.fromTo( // Creates the animation
@ektogamat
ektogamat / FakeGlowMaterial.js
Created February 2, 2024 22:09
FakeGlowMaterialThreejs
/**
* FakeGlow material by Anderson Mancini - Fec 2024.
*/
import { ShaderMaterial, Uniform, Color, AdditiveBlending, FrontSide, BackSide, DoubleSide } from 'three';
class FakeGlowMaterial extends ShaderMaterial {
/**
* Create a FakeGlowMaterial.
*
@ektogamat
ektogamat / FakeGlowMaterial.ts
Created January 29, 2024 18:26
Fake Glow Material for React Three Fiber Type Script Version
import React, { useMemo } from "react";
import { shaderMaterial } from "@react-three/drei";
import type { Object3DNode } from "@react-three/fiber";
import { extend } from "@react-three/fiber";
import type { Material, Side } from "three";
import { AdditiveBlending, Color, FrontSide } from "three";
import type { ColorRepresentation } from "three";
/**
* @typedef {Object} FakeGlowMaterialProps
@ektogamat
ektogamat / FakeGlowMaterial.jsx
Last active March 21, 2024 04:57
Fake Glow Material for React Three Fiber
import React, { useMemo } from 'react'
import PropTypes from 'prop-types'
import { shaderMaterial } from '@react-three/drei'
import { extend } from '@react-three/fiber'
import { Color, DoubleSide, AdditiveBlending } from 'three'
/**
* @typedef {Object} FakeGlowMaterialProps
* @property {Number} [falloff=0.1] - Controls the value of the Falloff effect. Ranges from 0.0 to 1.0.
* @property {Number} [glowInternalRadius=6.0] - Controls the internal glow radius. Ranges from -1.0 to 1.0. Set a darker color to get the fresnel effect only.
@ektogamat
ektogamat / HolographicMaterialVanilla.js
Last active December 3, 2023 18:03
HolographicMaterial for Vanilla Three.js
/**
* Holographic material by Anderson Mancini - Dec 2023.
*/
import { ShaderMaterial, Clock, Uniform, Color, NormalBlending, AdditiveBlending, FrontSide, BackSide, DoubleSide } from 'three';
class HolographicMaterial extends ShaderMaterial {
/**
* Create a HolographicMaterial.
*
@ektogamat
ektogamat / HolographicMaterial.js
Last active January 27, 2024 10:25
HolographicMaterial for React Three Fiber
/**
* Holographic material component by Anderson Mancini - Dec 2023.
* Dec 7th - Added useMemo for better performance
*/
import React, { useRef, useMemo } from 'react'
import { shaderMaterial } from '@react-three/drei'
import { extend, useFrame } from '@react-three/fiber'
import {
Color,
@ektogamat
ektogamat / Confetti.js
Last active November 8, 2023 21:46
Confetti Component for React Three Fiber
// CONFETTI COMPONENT BY ANDERSON MANCINI AND ROMAIN HERAULT
// Based on: https://github.com/JamesChan21/threejs-confetti
// Based on: https://github.com/daniel-lundin/dom-confetti
// If you use, please credit it :)
import React, { useRef, useState } from 'react'
import { useFrame } from '@react-three/fiber'
import * as THREE from 'three'
/**
@ektogamat
ektogamat / LensFlare.js
Last active July 29, 2023 15:47
Lens Flare for Vanilla Three.js
/**
* Lens Flare by Anderson Mancini
* Based on: https://github.com/ektogamat/R3F-Ultimate-Lens-Flare
*/
import * as THREE from 'three'
import { easing } from 'maath'
export let LensFlareParams = {}
/**
* @param {Boolean | undefined} enabled Enable or disable the effect
@ektogamat
ektogamat / util.tsx
Last active May 21, 2023 04:55
Utility file for Ultimate LensFlare
// File copy pasted from https://github.com/pmndrs/react-postprocessing/blob/master/src/util.tsx
import React, { forwardRef, useMemo, useLayoutEffect, MutableRefObject } from 'react'
import { Vector2, Object3D } from 'three'
import { ReactThreeFiber, useThree } from '@react-three/fiber'
import { Effect, BlendFunction } from 'postprocessing'
type ObjectRef = MutableRefObject<Object3D>
type DefaultProps = Partial<{ blendFunction: BlendFunction; opacity: number }>
@ektogamat
ektogamat / UltimateLensFlare.jsx
Last active November 8, 2023 21:43
Ultimate Lens Flare Source Code
// Created by Anderson Mancini 2023
// React Three Fiber Ultimate LensFlare
// To be used Effect together with react-three/postprocessing
import { Uniform, Color, Vector3 } from 'three'
import { BlendFunction, Effect } from 'postprocessing'
import { wrapEffect } from './util.tsx'
import { useRef, useMemo, useEffect } from 'react'
import { useFrame, useThree } from '@react-three/fiber'
import { useTexture } from '@react-three/drei'