找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 177|回复: 5

[转载] Shader 直线长方形圆形组件

[复制链接]
发表于 2025-6-2 17:43:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×


实际上是好几个组件的集合扔到同一个帖子里转发 ( )

PixPin_2025-06-02_17-42-19.png

B站视频:
画线长方形圆形:  
UV 映射:  
点云图:  

项目地址: https://github.com/Koji-Huang/KojiRenpyBox

这里只是转发链接而已, 因为项目的大小实在是不适合写一个帖子来说明了 ( 再说我都做好视频了嘛!

欢迎来看!

评分

参与人数 1活力 +300 干货 +3 收起 理由
被诅咒的章鱼 + 300 + 3 我不信楼主是高中生!

查看全部评分

发表于 2025-6-6 12:26:52 | 显示全部楼层
太强了
回复

使用道具 举报

发表于 2025-6-6 15:57:34 | 显示全部楼层
尝试了楼主的直线矩形圆形组件,个人感受:不好用……


先撇开shader部分的代码效率问题不谈,关键问题在于CDD的实现方式与Ren'Py的界面语言和ATL兼容性差。

举个例子,使用楼主的 DrawCircle 类,定义一个可视组件:
[RenPy] 纯文本查看 复制代码
image test_circle = DrawCircle()

由于构造时未指定 pos 参数的值,默认值为 (0,0) 。如果直接使用
[RenPy] 纯文本查看 复制代码
show test_circle

会发现画面左上角会显示1/4个圆。
如果我想让这个圆显示在画面正中,只能在构造时指定pos:
[RenPy] 纯文本查看 复制代码
image test_circle = DrawCircle(pos=(960,540))

如果不在构造时就指定pos,单纯图省事想加个transform,比如truecenter:
[RenPy] 纯文本查看 复制代码
show test_circle at truecenter

虽然不会报错,但也不会有什么效果。
此外,所有的transform都不能对shader绘制的3种组件产生效果。界面局部组件也无法这3种组件结合。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2025-6-6 22:43:18 | 显示全部楼层
被诅咒的章鱼 发表于 2025-6-6 15:57
尝试了楼主的直线矩形圆形组件,个人感受:不好用……

是这样的, 参数是固定在 cdd 内而不是从 style 里读取所以无法响应 Transform, 如果希望这些参数相应 transform 的话修改参数的读取调用接口就好了, 这样就可以兼容 ATL

至于我为什么一开始不这么写... 这个组件发出来的时候我已经要赶去学校了...这周我找时间改一下吧
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2025-6-7 07:57:30 | 显示全部楼层
草, 我都忘了, 这套组件并不是按照图形的大小来进行布局的, 也就是说: 你看到的虽然是一个圆, 其实它是一个绘制了圆的全屏画布组件, 所以你的代码就算是设置为中心, 这个组件也已经填充了整个画面, 并不会让组件移动到正确的位置
至于让他返回大小正确的 Render 来适应布局, 不难是不难, 只是和这份组件设计的起点不同, 我的原意是用更好的方式替代掉 renpy 里面 Render 的 canvas 的麻烦, 所以为了保持和 Surface 的 canvas 一样的特性, 仅以画布大小为基准计算并返回 Render. 所以如果你希望圆居中的话, 得设置 pos (r, r), 然后 xysize (2r, 2r). 这个时候画布的大小被设置成了 2r 而不是全屏, 也就可以正常剧中了

另外, 是有办法使用 transform 来直接控制 shader 绘制图形, 也就是将 shader 应用在 transform 上, 以 Transform 来绘制, 控制 (https://doc.renpy.cn/zh-CN/transform_properties.html#transform 中的 uniforms), 具体内容请见我仓库里新加入的代码与 Sample 吧
仍然是可以传入一个 info, 不过 info 仅作为初始化值, 后续的更新全由 transform 控制, 也算是变相支持 ATL 吧
回复 支持 抱歉

使用道具 举报

发表于 7 天前 | 显示全部楼层
楼主提到的canvas部分确实比较奇怪……翻了两天源码发现了一些有趣的东西。
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2025-6-16 08:23 , Processed in 0.057728 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表