mad fractal action

This commit is contained in:
ntr committed 2022-05-06 13:33:26 +10:00
1 parent 55bc4aaa89
commit 9fea0bdab6
60 files changed
+30775 -3747

No files matched your search

@@ -0,0 +1,93 @@
using UnityEngine;
using System.Collections.Generic;
using Assets.WasapiAudio.Scripts.Unity;
[RequireComponent(typeof(Material))]
public class SpectrumFullscreenPassBinder : MonoBehaviour
{
public WasapiAudioSource source;
private Texture2D _texture;
private Color[] _colorCache;
public Material material;
public Preferences preferences;
[SerializeReference]
[SerializeReferenceButton]
public List<SpectrumTransformer> Transformers = new List<SpectrumTransformer>();
[SpectrumDataPreview]
public SpectrumData Preview;
private void Start() {
if (source == null) {
Debug.Log("Material Binder needs WASAPI Source.");
gameObject.SetActive(false);
}
if (preferences == null) {
Debug.Log("Material Binder needs Preferences.");
gameObject.SetActive(false);
}
}
private void Update() {
UpdateTexture();
UpdateBinding();
}
private void InitialiseTexture() {
Debug.Log("Reinitialising spectrum texture...");
// material = gameObject.GetComponent<Material>();
_texture = new Texture2D(source.SpectrumSize, 1, TextureFormat.RFloat, false);
_colorCache = new Color[source.SpectrumSize];
_texture.name = $"AudioSpectrumData{source.SpectrumSize}";
}
private float[] GetSpectrumData() {
// Get raw / unmodified spectrum data
var spectrumData = source.GetSpectrumData();
// Run spectrum data through all configured transformers
if (Transformers != null && Transformers.Count > 0) {
foreach (var transformer in Transformers) {
spectrumData = transformer.Transform(spectrumData);
}
}
Preview.Values = spectrumData;
return spectrumData;
}
private void UpdateTexture() {
// init
if (_texture == null) InitialiseTexture();
var spectrumData = GetSpectrumData();
for (int i = 0; i < source.SpectrumSize; i++) {
_colorCache[i] = new Color(spectrumData[i], 0, 0, 0);
}
_texture.SetPixels(_colorCache);
_texture.Apply();
}
public void UpdateBinding() {
UpdateTexture();
// !!!!
// you must set these via a literal string for some raeson
// having them as a public property didn't work
material.SetFloat("_SpectrumSize", source.SpectrumSize);
material.SetTexture("_SpectrumDataTexture", _texture);
material.SetColor("_ThemeStart", preferences.Theme().Evaluate(0.0f));
material.SetColor("_ThemeEnd", preferences.Theme().Evaluate(0.0f));
}
public string ToString() {
return "Spectrum Material Binder";
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4d37d4f6cfd7c434b96f0de8adbdf88d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+87
View File
@@ -0,0 +1,87 @@
using UnityEngine;
using System.Collections.Generic;
using Assets.WasapiAudio.Scripts.Unity;
// only slightly different from the SpectrumMaterialBinder
// in that it modifies a single material for a shader
// instead of the renderer's instance of that material
[RequireComponent(typeof(Material))]
public class SpectrumShaderBinder : MonoBehaviour
{
public WasapiAudioSource source;
public Material material;
private Texture2D _texture;
private Color[] _colorCache;
[SerializeReference]
[SerializeReferenceButton]
public List<SpectrumTransformer> Transformers = new List<SpectrumTransformer>();
[SpectrumDataPreview]
public SpectrumData Preview;
private void Start() {
if (source == null) {
Debug.Log("Material Binder needs WASAPI Source.");
gameObject.SetActive(false);
}
}
private void Update() {
UpdateTexture();
UpdateBinding();
}
private void InitialiseTexture() {
Debug.Log("Reinitialising spectrum texture...");
_texture = new Texture2D(source.SpectrumSize, 1, TextureFormat.RFloat, false);
_colorCache = new Color[source.SpectrumSize];
_texture.name = $"AudioSpectrum{source.SpectrumSize}";
}
private float[] GetSpectrumData() {
// Get raw / unmodified spectrum data
var spectrumData = source.GetSpectrumData();
// Run spectrum data through all configured transformers
if (Transformers != null && Transformers.Count > 0) {
foreach (var transformer in Transformers) {
spectrumData = transformer.Transform(spectrumData);
}
}
Preview.Values = spectrumData;
return spectrumData;
}
private void UpdateTexture() {
// init
if (_texture == null) InitialiseTexture();
var spectrumData = GetSpectrumData();
for (int i = 0; i < source.SpectrumSize; i++) {
_colorCache[i] = new Color(spectrumData[i], 0, 0, 0);
}
_texture.SetPixels(_colorCache);
_texture.Apply();
}
public void UpdateBinding() {
UpdateTexture();
// !!!!
// you must set these via a literal string for some raeson
// having them as a public property didn't work
material.SetFloat("_SpectrumSize", source.SpectrumSize);
material.SetTexture("_SpectrumTexture", _texture);
}
public string ToString() {
return "Spectrum Material Binder";
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 957c1af5e7f10154487ed1389b1086e2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+52
View File
@@ -0,0 +1,52 @@
using UnityEngine;
using System.Collections.Generic;
using Assets.WasapiAudio.Scripts.Unity;
[RequireComponent(typeof(Material))]
public class ThemeShaderBinder : MonoBehaviour
{
public Material material;
public Preferences preferences;
private Texture2D _texture;
private Color[] _colorCache;
private int textureSize = 128;
private void Start() {
if (preferences == null) {
Debug.Log("Theme Shader Binder needs Preferences.");
gameObject.SetActive(false);
}
}
private void Update() {
UpdateTexture();
UpdateBinding();
}
private void InitialiseTexture() {
Debug.Log("Reinitialising spectrum texture...");
_texture = new Texture2D(textureSize, 1);
_colorCache = new Color[textureSize];
_texture.name = $"ThemeTexture{textureSize}";
}
private void UpdateTexture() {
// init
if (_texture == null) InitialiseTexture();
Gradient theme = preferences.Theme();
for (int i = 0; i < textureSize; i++) {
_colorCache[i] = theme.Evaluate(1.0f / i);
}
_texture.SetPixels(_colorCache);
_texture.Apply();
}
public void UpdateBinding() {
UpdateTexture();
material.SetFloat("_ThemeSize", textureSize);
material.SetTexture("_ThemeTexture", _texture);
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ae68405d5c7c9594ebcd0922c0389f8f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: