Полностью процедурные волны в реальном времени, никаких текстур
https://www.shadertoy.com/view/Ms2SD1Подробнее
Shadertoy Seascape Tags: procedural, noise, waves, sea, water, subsurface <§> 307584 V 1009 W 96 Created by TDM in 2014-Sep-26 fully-procedural sea surface computing, without textures. Android version: https://play.google.com/store/apps/details?id=com.nature.seascape Comments Browse New Sign In + Q a Shader Inputs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - 26 27 28 29 30 31 32 33 34 35 » 36 37 38 39 » 40 41 42 43 44 45 46 /* * "Seascape" by Alexander Alekseev aka TDM - 2014 * License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Licens * Contact: tdmaav@gmail.com const int NUM_STEPS = 8; const float PI = 3.141592; const float EPSILON = le-3; »define EPSILON_NRM (0.1 / iResolution.x) // sea const int ITER_GEOMETRY = 3; const int ITER_FRAGMENT = 5, const float SEA_HEIGHT =0.6; const float SEA_CHOPPY =4.0 const float SEA_SPEED =0.8; const float SEA_FREQ = 0.16; const vec3 SEA_BASE = vec3(0.1,0.19,0.22); const vec3 SEA_WATER_COLOR = vec3(0.8,0.9,0.6); »define SEA_TIME (1.0 + iTime * SEA_SPEED) const mat2 octavem = mat2(1.6,1.2,-1.2,1.6); // math mat3 fromEuler(vec3 ang) { vec2 al = vec2 sin ang x cos ang x vec2 a2 = vec2 sin ang y cos ang y vec2 a3 = vec2(sin ang z cos(ang z)); mat3 m; m 0 = vec3 al y*a3 y+al x*a2 x*a3,x,al y*a2.x*a3.x+a3.y*al.x,-a2y*a3,x); m 1] = vec3(-a2 y*al x al y*a2.y a2 x); m 2] = vec3 a3=y*al.x*a2.x+al,y*a3,x al,x*a3 x-al y*a3=y*a2.x,a2 y*a3,y); return m; \ float hash( vec2 p ) { float h = dot(p,vec2(127.1,311.7)); return fract(sin(h)*43758.5453123); float noise( in vec2 p ) { vec2 i = floori p vec2 f = fract p vec2 u = f*f*(3.0-2.0*f); return -1.0+2.0*mix( mix( hash( i + vec2(0.0,0.0) ), hashf i + vec2(l.0,0.0) ), u.x), — - A < >
3D анимация,3d графика
В лисе сразу включена поддержка видюхи.
Вот мое процедурное море:
значок реактора:
https://www.shadertoy.com/view/XsBfDK
Я еще вот такое делал: https://www.shadertoy.com/view/MtjcWD , но это лучше не открывать если видеокарта не очень.
Но чтобы это дело запустить, нужен дополнительный код уровня приложения, который бы создал окно, создал OpenGl контекст. Еще нудно скомпилировать шейдеры, создал дополнительные объекты для отрисовки двух треугольников на весь вьюпорт и повесить на них этот шейдер. На самом деле совсем немного.
Наверняка, можно заюзать unity для этих целей, но нужно будет GLSL в HLSL перевести. Можно заюзать bgfx. Я туда добавлял пример с небом, там просто нужно будет заменить шейдер неба, на этот шейдер, обернув его немножко.
sudo pacman -S freebasic
там код
https://www.freebasic.net/forum/viewtopic.php?t=24462#
вроде бекдоров нету
мне пришлось закоментить все где есть "glActiveTexture" (строчка 27 и 63)
потом
> fbc shadertoy.bas
потом
> ./shadertoy имя_файла.glsl
только проблема если шейдер состоит из картинки и буферов (я не знаю что это)
например этот https://www.shadertoy.com/view/llK3Dy
я его смог запустить только как
> ./shadertoy код_из_buf_A.glsl
както так
https://drive.google.com/uc?id=0ByQCs8WA2qnceXZDYVFCNFZVZU0&export=download
Чтобы собрать, нужен cmake и компилятор умеющий С++11.
Для линукс и мак ос:
из корневой папки с CMakeList.txt
mkdir build
cd build
cmake ../
make
Ссылка : http://www.geeks3d.com/dl/get/530
Монитор 4k.