首页 > 其他分享 >shadertoy学习 第2课

shadertoy学习 第2课

时间:2023-03-03 17:25:36浏览次数:43  
标签:shadertoy 1.0 uv 学习 abs vec2 vec3 col

坐标系统绘制与fwidth函数

image

void mainImage( out vec4 fragColor, in vec2 fragCoord )

{

// Normalized pixel coordinates (from -1 to 1)

vec2 uv = (2.0*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);

vec3 col=vec3(0.);

if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色

    {

        col.r=1.0;

    }

if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是绿色

    {

        col.g=1.0;

    }

// Output to screen

    fragColor = vec4(col, 1.0);

}


二、画坐标格子

image

void mainImage( out vec4 fragColor, in vec2 fragCoord )

{

// Normalized pixel coordinates (from -1 to 1)

vec2 uv = 1.0*(2.0*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);

vec3 col=vec3(0.);

if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色

    {

        col.r=1.0;

    }

if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是绿色

    {

        col.g=1.0;

    }

vec2 cell = fract(uv);//取小数部分

// Output to screen

    fragColor = vec4(cell, 0, 1.0);

}


三、完整坐标轴

image


void mainImage( out vec4 fragColor, in vec2 fragCoord )

{

// Normalized pixel coordinates (from -1 to 1)

vec2 uv = 3.0*(2.0*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);

vec2 cell = fract(uv);//取小数部分

vec3 col=vec3(0.);

//网格绘制

if(abs(cell.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色

    {

        col.r=1.0;

    }

if(abs(cell.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是蓝色

    {

        col.b=1.0;

    }

//x y 坐标轴绘制

if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制

    {

        col=vec3(1,1,1);

    }

if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制

    {

        col=vec3(1,1,1);

    }

// Output to screen

    fragColor = vec4(col, 1.0);

}


进一步,封装函数


//封装绘制网格函数

vec3 grid(vec2 uv)

{

vec2 cell = fract(uv);//取小数部分

vec3 col=vec3(0.);

//网格绘制

if(abs(cell.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色

    {

        col.r=1.0;

    }

if(abs(cell.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是蓝色

    {

        col.b=1.0;

    }

//x y 坐标轴绘制

if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制

    {

        col=vec3(1,1,1);

    }

if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制

    {

        col=vec3(1,1,1);

    }

return col;

}

void mainImage( out vec4 fragColor, in vec2 fragCoord )

{

// Normalized pixel coordinates (from -1 to 1)

vec2 uv = 3.0*(2.0*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);

// Output to screen

    fragColor = vec4(grid(uv), 1.0);

}

标签:shadertoy,1.0,uv,学习,abs,vec2,vec3,col
From: https://www.cnblogs.com/cute/p/17176330.html

相关文章

  • Tomcat学习
    Tomcat中文件夹的作用bin文件中存放启动、关闭的脚本文件conf文件中存放配置文件lib文件中存放依赖的jar包log中存放日志webapps中存放网页信息(默认网站应用存放位置)......
  • PPT 学习笔记
    PPT使用前期建议更改默认设置1.更改默认保持时间+字体嵌入文件设置文件==》选项==》保存==》 2.常规设置——可更改主题/背景...   3.高级设置——设置默认......
  • javaWeb学习一
    web开发(web就是网页):静态webhtml、css提供给所有人看到数据不会改变动态web提供给所有人看到数据会改变,不同用户、不同时间和地点都会不同技术栈:Se......
  • unity学习笔记
    学习过程中的问题平面有碰撞检测但是关了MeshCollider还是有。碰撞检测一直找不到原因是自己不小心将自动巡航组件(NavMeshAgent)。添加到了Plane物体上。使得Pla......
  • Java应用【Ⅻ】使用Java实现机器学习算法:聚类、分类、预测
    一、引言1、机器学习算法概述机器学习是一种人工智能技术,旨在通过使用数据和统计分析来让计算机系统自动改进性能。机器学习算法可分为三大类:聚类、分类和预测。聚类算法用......
  • CA-SSL:用于检测和分割未知类的半监督学习
    论文作者|LuQi,JasonKuen,ZheLin,andetal论文来源|CVPR2022文章解读|William1、摘要为了提高检测/分割的性能,现有的自监督和半监督方法从未标记的数据中提取......
  • SSM框架-Spring学习日记4
    代理模式代理模式:静态代理动态代理静态代理抽象角色:一般使用接口或者抽象类来实现真实角色:被代理的角色代理角色:代理真实角色;代理真实角色后,一般会......
  • seleniumUI自动化学习记录
    2019.2.9尝试了一个启动浏览器并打开指定网址的程序:这里首先要注意的就是浏览器的版本和seleniumjar包的版本必须符合才行,不然会报错2019.9.16必须要下载相应的chrome......
  • 【学习笔记】dsu on tree
    看到了就来学一下。思想借鉴了一类启发式合并的思想?由于树的分叉结构有可以二分的性质,有重儿子的信息是可以直接从子树继承,轻儿子不超过\(log\)层。于是先计算轻儿子,......
  • 新手学习单片机的首选到底是什么?
    一、首先为什么要先学51单片机?​因为51单片发展最早,应用最广泛,特别是I/O口的操作非常简单,而且相关的学习资料最多、教材最成熟,学习起来得心应手,入门很快。有了这个基础再去......