首页 > 其他分享 >cnblog_触发器

cnblog_触发器

时间:2023-06-04 12:13:57浏览次数:39  
标签:触发器 1.0 vPosition 0.0 pos location cnblog 坐标

webgpu的中的顶点插值

  1. 正常情况下,顶点着色器都是返回一个四维向量,如果要画一个三角形,呢么就是pos就是我们传入的三个顶点坐标,返回值就是将这些坐标转换成四维向量返回
// 顶点着色器代码
@vertex
fn main(@location(0) pos: vec3<f32>) -> @builtin(position) vec4<f32> {
    return vec4<f32>(pos,1.0);//缩放矩阵对顶点缩放变换
}
  1. 插值的意思,就是GPU会根据你的传入的三个点的坐标,在之内在生成其他的点,你可以理解一个大的三角形是有许许多多小的三角形组成的,所以自动会生出其他的点

  2. 这个时候顶点着色器就不能返回一个四维向量了,就必须定义一个结构体返回.
    结构体的第一个成员就是原来的那个四维向量,也就是我们输入的坐标,转换后的四维坐标.
    第二个成员就是自动生成的三维向量,也就是gpu根据你传入的两个点,然后生成的中间点的坐标.

struct Out{
    @builtin(position) position:vec4<f32>,
    // 位置变量vPosition表示顶点位置坐标插值后的坐标,vPosition用来表示每个片元的xyz坐标, 通过location标记改变量,location的参数可以是0、1、2等
    @location(0) vPosition:vec3<f32>,
}

@vertex
fn main(@location(0) pos: vec3<f32>) -> Out {
    var out:Out;//通过结构体声明一个变量
    out.position = vec4<f32>(pos,1.0);
    out.vPosition = pos;//插值计算,生成的每个片元对应的xyz坐标
    return out;
}
  1. 然后在片元着色器中绑定变量就是可以使用.
    需要注意的是,这个插值的值是基于webgpu 3d 标准设备坐标系的.
    即x和y的返回是-1到1,z的返回是0到1.

img

// 片元着色器代码
// main参数通过@location(0)声明一个变量,和顶点着色器中vPosition变量关联起来
@fragment
fn main(@location(0) vPosition:vec3<f32>) -> @location(0) vec4<f32> {
    // 根据x坐标设置片元颜色
    if(vPosition.x<0.5){
        return vec4<f32>(1.0, 0.0, 0.0, 1.0);
    }else{
        return vec4<f32>(0.0, 1.0, 0.0, 1.0);
    }
}

webgpu中不要考虑模型矩阵对顶点插值的影响

  1. 一开始我我也是怀疑这个模型既然对需要对原坐标产生影响,
    呢么我也需要对其插值坐标产生影响,才能够消除影响,
    实际上不需要这样,模型矩形的变换,直接作用于原坐标就行了,
    插值的坐标会自动的收到影响,
    原因么,可能插值的坐标采用的相对的坐标.
// 顶点着色器代码
const vertexShader = /* wgsl */ `
struct Out{
    @builtin(position) position:vec4<f32>,
    @location(0) vPosition:vec3<f32>,
}
@vertex
fn main(@location(0) pos: vec3<f32>) -> Out {
    var out:Out;//通过结构体声明一个变量

    var T = mat4x4<f32>(1.0,0.0,0.0,0.0,  0.0,1.0,0.0,0.0,  0.0,0.0,1.0,0.0,  -0.5,-0.5,0.0,1.0);

    // 平移矩阵肯定是对position,也就是我们传入的坐标值是产生影响的,所以这里肯定要计算
    out.position = T * vec4<f32>(pos,1.0);

    // 但是对插值就是不要写一遍了,直接赋值就行,但是当我们再次进行矩阵影响的时候,反倒不起作用了.
    // out.vPosition = (T* vec4<f32>(pos,1.0)).xyz;
    out.vPosition = pos; 

    return out;
}

标签:触发器,1.0,vPosition,0.0,pos,location,cnblog,坐标
From: https://www.cnblogs.com/zhuoss/p/17455461.html

相关文章

  • 触发器
    触发器一、介绍触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据......
  • 数据库应用2023-06-03 触发器
    Mysql触发器实例详解-Mr_Echo-博客园(cnblogs.com)CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtb_nameFOREACHROWtrigger_stmttrigger_name:触发器的名称tirgger_time:触发时机,为BEFORE或者AFTERtrigger_event:触发事件,为INSERT、DELETE或者UPDATEtb_......
  • MySQL之视图,索引,存储过程,触发器--实操
    一.视图什么是视图?视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含系列带有名称的列和行数据。行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由select结果组成的表。视图的出现其实优化了MySQL对用户权限的管理,我们在以......
  • /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器
    LINUX远程强制重启/proc/sys/kernel/sysrq/proc/sysrq-trigger----触发器ttp://blog.csdn.net/beckdon/article/details/41313713http://blog.csdn.net/chinaclock/article/details/50499530http://www.cnblogs.com/justin-y-lin/p/5424555.htmlhttps://www.cnblogs.com/yang......
  • 15)触发器
    1、触发事件:触发器定义了一系列操作,称为触发程序,当触发事件发生时,触发程序会自动运行;格式如下:createtrigger触发器名触发时间触发事件on表名foreachrowbegin触发程序end;触发时间:before、after;触发事件:insert、update、delete;foreachnow:表示行级触发器;......
  • 数据库 视图、触发器、存储过程
    数据库视图、触发器、存储过程一直以来总是CRUD,只会操作数据库表了,其他的视图、触发器、存储过程忘完了,但因为生产事故被迫研究了一下,简单回顾一下概念吧。视图在看系统的权限管理部分时,发现它是从视图中查询数据的,通过将多个权限表的数据关联为视图,大大减少了查询时的SQL......
  • Typora关联博客园-cnblog
    Typora关联博客园在Typora写完笔记需要上传到博客园时,就会出现图片显示不出来的情况,这个时候就需要考虑将Typora和博客园关联起来,实现联动。实现方案环境准备系统环境:win11软件版本:dotnet-sdk-5.0.408-win-x64下载地址:https://dotnet.microsoft.com/learn/dotnet/hello-wo......
  • MySQL触发器Trigger加载以及目前局限
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:亮文章来源:GreatSQL社区原创概念介绍首先需要知道MySQL中触发器特点,以及表table相关触发器加载方式MySQL中单个trigger仅支持单事件触发即单......
  • Go语言并发编程-cnblog
    并发编程并发vs并行举个形象点的例子并发可以理解为一边吃饭,一边喝水,因为人只有一个嘴一个咽喉,所以同一时刻饭和水只能有一样进入,二者只能交替进行并行可以理解为一边走路一边吃东西,因为走路是靠腿脚,吃东西是靠嘴,二者不相干,相当于两个独立的线程,因而可以同时进行Go语言......
  • MySQL 存储过程&触发器&事务
    存储过程概念存储过程(StoredProcedure),是为了完成特定功能的SQL语句集。优点存储过程可以理解为shell脚本这类型的命令集输出工具,但是在底层,存储过程拥有更多的优点:语言的灵活性跟功能性更强,在原有基础之上可以插入控制语句、循环语句等让SQL语句的功能更强,能够完成更复杂的......